Tengo una clave privada y una dirección. ¿Es posible realizar transacciones con estos parámetros usando web3j?
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();
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})
web3j
noweb3js
sanjay rao
sanjay rao