Comenzando con TheRPC
Referencia de API
API de Ethereum
Core API
Guías

Herramientas Java y Kotlin

El ecosistema JVM proporciona herramientas robustas para el desarrollo en Ethereum, principalmente a través de la biblioteca Web3j que funciona tanto con Java como con Kotlin.

¡Presta atención!
¡Hola! Solo un aviso amistoso: esta página está destinada a darte una sólida visión general de cómo trabajar con Java/Kotlin solicitudes. Para ejemplos prácticos de código, consulta nuestra API Methods documentation donde encontrarás ejemplos listos para usar en todos los lenguajes compatibles!

# Web3j

Biblioteca completa de Java y Kotlin para Ethereum.

Ejemplo en Java

import org.web3j.protocol.Web3j;
import org.web3j.protocol.http.HttpService;
import org.web3j.utils.Convert;
import java.math.BigDecimal;

public class EthereumClient {
    private final Web3j web3j;

    public EthereumClient(String nodeUrl) {
        this.web3j = Web3j.build(new HttpService(nodeUrl));
    }

    public BigDecimal getBalance(String address) throws Exception {
        BigInteger balanceWei = web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST)
            .send()
            .getBalance();
        return Convert.fromWei(balanceWei.toString(), Convert.Unit.ETHER);
    }

    public String sendTransaction(Credentials credentials, String toAddress, BigDecimal ethAmount) {
        BigInteger gasPrice = web3j.ethGasPrice().send().getGasPrice();
        BigInteger value = Convert.toWei(ethAmount, Convert.Unit.ETHER).toBigInteger();

        RawTransaction rawTransaction = RawTransaction.createEtherTransaction(
            nonce, gasPrice, GAS_LIMIT, toAddress, value);

        byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
        String hexValue = Numeric.toHexString(signedMessage);

        return web3j.ethSendRawTransaction(hexValue).send().getTransactionHash();
    }
}

Ejemplo en Kotlin

import org.web3j.protocol.Web3j
import org.web3j.protocol.http.HttpService
import org.web3j.utils.Convert
import java.math.BigDecimal

class EthereumClient(nodeUrl: String) {
    private val web3j = Web3j.build(HttpService(nodeUrl))

    suspend fun getBalance(address: String): BigDecimal {
        val balanceWei = web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST)
            .send()
            .balance
        return Convert.fromWei(balanceWei.toString(), Convert.Unit.ETHER)
    }

    suspend fun sendTransaction(
        credentials: Credentials,
        toAddress: String,
        ethAmount: BigDecimal
    ): String {
        val gasPrice = web3j.ethGasPrice().send().gasPrice
        val value = Convert.toWei(ethAmount, Convert.Unit.ETHER).toBigInteger()

        val rawTransaction = RawTransaction.createEtherTransaction(
            nonce, gasPrice, GAS_LIMIT, toAddress, value)

        val signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials)
        val hexValue = Numeric.toHexString(signedMessage)

        return web3j.ethSendRawTransaction(hexValue).send().transactionHash
    }
}
  • GitHub: web3j
  • Documentación: docs.web3j.io
  • Características:
    • Soporte para Java 8+
    • Soporte para corrutinas de Kotlin
    • Compatibilidad con Android
    • Envoltorios para contratos inteligentes
    • Herramientas de línea de comandos
    • Soporte para carteras

# Soporte para Android

Web3j proporciona características específicas para el desarrollo en Android:

// Android example
class EthereumViewModel : ViewModel() {
    private val web3j = Web3j.build(HttpService("YOUR_ETHEREUM_NODE_URL"))

    fun getBalance(address: String) = viewModelScope.launch {
        withContext(Dispatchers.IO) {
            val balance = web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST)
                .send()
                .balance
            // Update UI
        }
    }
}

# Integración de Contratos Inteligentes

Generar envoltorios de contratos desde Solidity:

web3j solidity generate /path/to/contract.sol -o /path/to/output -p com.your.package

Luego usar en tu código:

val contract = YourContract.load(
    contractAddress,
    web3j,
    credentials,
    gasPrice,
    gasLimit
)

// Call contract method
val result = contract.someMethod().send()

Ver también

¡Ayúdanos a Mejorar!
Comparte esta página y ayúdanos a crear un producto aún mejor para ti.