Cómo hacer una transacción usando una clave privada y una dirección usando web3j

Tengo una clave privada y una dirección. ¿Es posible realizar transacciones con estos parámetros usando web3j?

Respuestas (3)

Web3j web3j = Web3j.build(new HttpService(""));
    Credentials credentials = Credentials.create("privateKey");
    BigInteger nonce = web3j.ethGetTransactionCount(credentials.getAddress(), DefaultBlockParameterName.PENDING).sendAsync().get().getTransactionCount();
    BigInteger gasPrice = web3j.ethGasPrice().sendAsync().get().getGasPrice();
    RawTransaction rawTransaction = RawTransaction.createEtherTransaction(nonce, gasPrice, Constants.ETH_GAS_LIMIT, "address", Convert.toWei("amount", Convert.Unit.ETHER).toBigIntegerExact());
    EthSendTransaction response = web3j.ethSendRawTransaction(Numeric.toHexString(TransactionEncoder.signMessage(rawTransaction, credentials))).send();
    String hash = response.getTransactionHash();
simplemente use este método y coloque sus parámetros en el lugar de las cadenas.
Web3j web3j = Web3j.build(nuevo HttpService("")); TransactionReceipt recibo = Transfer.sendFunds(web3j, Credentials.create("privateKey"), "toAddress", new BigDecimal("cantidad"), Convert.Unit.ETHER).sendAsync().get(); System.err.println(recibo.getTransactionHash());

Si desea enviar tokens personalizados como propietario del contrato, consulte mi respuesta aquí: Enviar tokens ERC20 personalizados de una dirección a otra

Si desea enviar tokens en nombre de otro usuario, la idea es similar.

Primero recupere las credenciales del usuario de la clave privada, luego realice la transacción.

Credentials getUserInfo (String privateKeyInHex){

    BigInteger privateKeyInBT = new BigInteger(privateKeyInHex, 16);

    ECKeyPair aPair = ECKeyPair.create(privateKeyInBT);
    Credentials aCredential = Credentials.create(aPair);

    return aCredential;
}

enviar fichas:

process(){
    ... 

    Credentials newUser =  getUserInfo(privateKeyInHex);

    TransactionReceiptProcessor transactionReceiptProcessor = new NoOpProcessor(web3);
    TransactionManager transactionManager = new RawTransactionManager(
                            web3, newUser, ChainId.MAINNET, transactionReceiptProcessor);
                    //if testing, use ChainId.ROPSTEN
    ...

Sí, es posible enviar transacciones. Use web3.eth.sendTransaction({to:'0xaddress', from:'0xaddress', value:web3.toWei(.033,'ether'),gas:30000})

La pregunta es sobre web3jnoweb3js
¿Estás usando la billetera Ethereum?
No tengo archivo de billetera. Solo tengo la clave privada y la dirección de ethereum.