[JAVA] So senden Sie Ethereum-Transaktionen Unterschied zwischen send und sendAsync

Artikelinhalt

Es gibt die send-Methode und die sendAsync-Methode, um eine signierte Transaktion mit der Java-Bibliothek "Web3j" von Ethereum zu senden. In diesem Artikel habe ich beschrieben, wie eine Transaktion mit send gesendet wird, aber ich habe auch eine Methode mit sendAsync implementiert, damit ich sie als Aufzeichnung aufbewahre. Signierte Transaktion mit Web3j senden

Umgebung

Implementierung

Der Code.

SendTransaction.java


 public TransactionReceipt sendTransactionAsync(Credentials credentials, String password, String toAddress, long value) {

    CompletableFuture<TransactionReceipt> receipt = null;
      try {
        //Eine Transaktion generieren
        // "personal_unlockAccount"Senden Sie eine Anfrage und erhalten Sie eine Antwort
        PersonalUnlockAccount unlockAccountResponse = web3j.personalUnlockAccount(
              credentials.getAddress(), //Adresse
              password  //Passwort
              ).send();

        //Wenn das Entsperren erfolgreich ist, senden Sie Ether
        if (unlockAccountResponse.getResult()) {
          //Senden Sie eine Transaktion.
          receipt = Transfer.sendFunds(web3j, credentials, toAddress, BigDecimal.valueOf(value), Unit.ETHER).sendAsync();
        }

          return receipt.get();
        }catch(IOException | TransactionException ex) {
          ex.printStackTrace();
        }catch(Exception ex) {
          ex.printStackTrace();
        }
      return null;
    }

Die Unterschiede sind wie folgt.

SendTransaction.java


receipt = Transfer.sendFunds(web3j, credentials, toAddress, BigDecimal.valueOf(value), Unit.ETHER).send();

SendTransaction.java


receipt = Transfer.sendFunds(web3j, credentials, toAddress, BigDecimal.valueOf(value), Unit.ETHER).sendAsync();

Senden gibt keine Antwort zurück, bis die Transaktion im Block enthalten ist. sendAsync gibt eine Antwort zurück, wenn eine Transaktion gesendet wird, sodass Sie nicht warten müssen, bis sie in einem Block erfasst wird.

Wenn Sie jedoch die get-Methode von "CompletableFuture " verwenden, die als Ergebnis der Ausführung von sendAsync erhalten wurde, wird beim Abrufen von TransactionReceipt keine Antwort zurückgegeben, bis sie im Block erfasst wird.

Es scheint besser, sendAsync zu verwenden, wenn Sie nicht warten müssen, bis eine Transaktion in einen Block gelangt.

Recommended Posts

So senden Sie Ethereum-Transaktionen Unterschied zwischen send und sendAsync
Unterschied zwischen Instanzmethode und Klassenmethode
Unterschied zwischen dem Operator == und der Methode eqals
[Schienen] Unterschied zwischen Erstellungsmethode und neuer + Speichermethode
Unterschied zwischen vh und%
Unterschied zwischen i ++ und ++ i
Unterschied zwischen Produkt und Variante
Unterschied zwischen redirect_to und render
Unterschied zwischen redirect_to und render
Unterschied zwischen CUI und GUI
Unterschied zwischen Variablen und Instanzvariablen
Unterschied zwischen Mockito-Core und Mockito-All
Unterschied zwischen Klasse und Instanz
Unterschied zwischen Bundle und Bundle-Installation
Unterschied zwischen ArrayList und LinkedList
Unterschied zwischen render und redirect_to
Unterschied zwischen List und ArrayList
Unterschied zwischen .bashrc und .bash_profile
Unterschied zwischen StringBuilder und StringBuffer
Unterschied zwischen render und redirect_to
Was ist der Unterschied zwischen einer Aktion und einer Instanzmethode?
Überschreiben wir den Unterschied zwischen == (Identität) und der Methode equals (Äquivalenz).
[Ruby] Unterschied zwischen get und post
Unterschied zwischen Schnittstelle und abstrakter Klasse
[Java] Unterschied zwischen Hashmap und HashTable
[Terminal] Unterschied zwischen irb und pry
JavaServlet: Unterschied zwischen executeQuery und executeUpdate
[Ruby] Unterschied zwischen is_a? Und instance_of?
Grober Unterschied zwischen RSpec und Minitest
[Rails] Unterschied zwischen find und find_by
Unterschied zwischen Instanzvariable und Klassenvariable
[JAVA] Unterschied zwischen Abstract und Interface
Unterschied zwischen Thymeleaf @RestController und @Controller
Unterschied zwischen Stream Map und FlatMap
[Java] Unterschied zwischen Array und ArrayList
Unterschied zwischen primitivem Typ und Referenztyp
Unterschied zwischen string.getByte () und Hex.decodeHex (string.toCharaArray ())
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
Der Unterschied zwischen der Ruby-Instanzmethode und der Klassenmethode ist leicht zu verstehen.
[Rails] Unterschied zwischen redirect_to und Rendern
[Android] Unterschied zwischen finish () und return;
[Rails] Ich habe den Unterschied zwischen neuer Methode, Speichermethode, Erstellungsmethode und Erstellungsmethode untersucht.
Unterschied zwischen final und Immutable in Java
[Hinweis] Unterschied zwischen Bundle-Installation und -Update
Unterschied zwischen Ruby-Instanzvariable und lokaler Variable
Unterschied zwischen pop () und peek () im Stapel
[Für Anfänger] Unterschied zwischen Java und Kotlin
Unterschied zwischen isEmpty und isBlank von StringUtils
Unterschied zwischen getText () und getAttribute () von Selen
Über den Unterschied zwischen irb und pry
Unterschied zwischen "|| =" und "instance_variable_defined?" Im Ruby-Memo
Unterschied zwischen EMPTY_ELEMENTDATA und DEFAULTCAPACITY_EMPTY_ELEMENTDATA in ArrayList
[Ruby] Unterschied zwischen print, put und p