Ich habe einen privaten Schlüssel und eine Adresse. Ist es möglich, Transaktionen mit diesen Parametern mit web3j durchzuführen.
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();
Wenn Sie als Vertragsinhaber benutzerdefinierte Token senden möchten, sehen Sie sich meine Antwort hier an: Senden Sie benutzerdefinierte ERC20-Token von einer Adresse an eine andere
Wenn Sie Token im Namen eines anderen Benutzers senden möchten, ist die Idee ähnlich.
Rufen Sie zuerst die Anmeldeinformationen des Benutzers aus dem privaten Schlüssel ab und führen Sie dann die Transaktion durch.
Credentials getUserInfo (String privateKeyInHex){
BigInteger privateKeyInBT = new BigInteger(privateKeyInHex, 16);
ECKeyPair aPair = ECKeyPair.create(privateKeyInBT);
Credentials aCredential = Credentials.create(aPair);
return aCredential;
}
Token senden:
process(){
...
Credentials newUser = getUserInfo(privateKeyInHex);
TransactionReceiptProcessor transactionReceiptProcessor = new NoOpProcessor(web3);
TransactionManager transactionManager = new RawTransactionManager(
web3, newUser, ChainId.MAINNET, transactionReceiptProcessor);
//if testing, use ChainId.ROPSTEN
...
Ja, es ist möglich, eine Transaktion zu senden. Verwenden Sie web3.eth.sendTransaction({to:'0xaddress', from:'0xaddress', value:web3.toWei(.033,'ether'),gas:30000})
web3j
nichtweb3js
Sanjay Rao
Sanjay Rao