So führen Sie Transaktionen mit privatem Schlüssel und Adresse mit web3j durch

Ich habe einen privaten Schlüssel und eine Adresse. Ist es möglich, Transaktionen mit diesen Parametern mit web3j durchzuführen.

Antworten (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();
Verwenden Sie einfach diese Methode und setzen Sie Ihre Parameter an die Stelle der Zeichenfolgen.
Web3j web3j = Web3j.build (neuer HttpService ("")); TransactionReceipt-Empfang = Transfer.sendFunds(web3j, Credentials.create("privateKey"), "toAddress", new BigDecimal("amount"), Convert.Unit.ETHER).sendAsync().get(); System.err.println(receipt.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})

Frage ist über web3jnichtweb3js
Benutzt du Ethereum Wallet?
Ich habe keine Wallet-Datei. Ich habe nur den privaten Schlüssel und die Adresse von Ethereum