Web3j - Transfer.sendFunds warten ewig

Nachdem ich mit Problemen von Geth zu kämpfen hatte (dann entschied ich mich für Geth 1.8.2, es löste das Problem auf magische Weise).

Ich habe 2 Ansätze gefunden, um Äther zu senden: Der erste Ansatz sind die folgenden Codes

     EthGetTransactionCount ethGetTransactionCount = web3.ethGetTransactionCount(
     creds.getAddress(), DefaultBlockParameterName.LATEST).sendAsync().get();
     BigInteger nonce = ethGetTransactionCount.getTransactionCount();

     RawTransaction rawTransaction = RawTransaction.createEtherTransaction(
     nonce, gasPrice, gasLimit, "0x<TO_ADDRESS>",
     new BigInteger("10000"));

     byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, creds);
     String hexValue = Numeric.toHexString(signedMessage);
     // FROM here you can get the tx hash.
     EthSendTransaction ethSendTransaction =
     web3.ethSendRawTransaction(hexValue).send();

Und der zweite Ansatz ist:

TransactionReceipt transactionReceipt = Transfer.sendFunds(
     web3, creds, "0x<TO_ADDRESS>",
     BigDecimal.valueOf(1.0),Convert.Unit.ETHER).sendAsync().get();
     String etherReceipt = transactionReceipt.getTransactionHash();

Beide funktionieren reibungslos, bis mir klar wurde, dass der erste direkt einen Transaktionshash erstellt und die nächste Operation fortgesetzt werden kann, aber der zweite eine Transaktion einreicht, es erfordert, dass ich den Miner starte, damit sie abgeschlossen werden kann. Gibt es eine Möglichkeit für den zweiten, seinen Transaktionshash zu generieren, und erfordert nicht, dass das Programm wartet, bis es zuerst beendet ist, und dann fortfährt.

Außerdem, was ist die gute/schlechte Praxis? Warum? Ich würde gerne den 2. Ansatz verwenden, weil er ordentlicher und kürzer ist, auch meine Art, ERC20-Token an eine andere Brieftasche zu senden, besteht darin, nur den Wrapper zu verwenden, anstatt seine Rohtransaktion zu erstellen.

Antworten (1)

Im ersten Ansatz können Sie die Nonce manipulieren :), das ist nützlich, wenn eine Transaktion von Ihnen hängen geblieben ist