[JAVA] Comment envoyer des transactions Ethereum Différence entre send et sendAsync

Contenu de l'article

Il existe des méthodes send et sendAsync pour envoyer une transaction signée à l'aide de la bibliothèque Java d'Ethereum "Web3j". Dans cet article, j'ai décrit comment envoyer une transaction à l'aide de send, mais j'ai également implémenté une méthode utilisant sendAsync, je la conserverai donc comme un enregistrement. Envoyer la transaction signée via Web3j

environnement

la mise en oeuvre

Le code.

SendTransaction.java


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

    CompletableFuture<TransactionReceipt> receipt = null;
      try {
        //Générer une transaction
        // "personal_unlockAccount"Envoyez une demande et recevez une réponse
        PersonalUnlockAccount unlockAccountResponse = web3j.personalUnlockAccount(
              credentials.getAddress(), //adresse
              password  //mot de passe
              ).send();

        //Si le déverrouillage est réussi, envoyez Ether
        if (unlockAccountResponse.getResult()) {
          //Envoyez une transaction.
          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;
    }

Les différences sont les suivantes.

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();

Send ne renvoie pas de réponse tant que la transaction n'est pas incluse dans le bloc. sendAsync renvoie une réponse lorsqu'une transaction est envoyée, vous n'avez donc pas à attendre qu'elle soit capturée dans un bloc.

Cependant, lors de l'utilisation de la méthode get de "CompletableFuture " obtenue à la suite de l'exécution de sendAsync, lors de l'obtention de TransactionReceipt, aucune réponse n'est renvoyée tant qu'elle n'est pas capturée dans le bloc.

Il semble préférable d'utiliser sendAsync lorsque vous n'avez pas à attendre qu'une transaction entre dans un bloc.

Recommended Posts

Comment envoyer des transactions Ethereum Différence entre send et sendAsync
Différence entre la méthode d'instance et la méthode de classe
Différence entre l'opérateur == et la méthode eqals
[Rails] Différence entre la méthode de création et la méthode nouvelle + sauvegarde
Différence entre vh et%
Différence entre i ++ et ++ i
Différence entre produit et variante
Différence entre redirect_to et render
Différence entre redirect_to et render
Différence entre CUI et GUI
Différence entre les variables et les variables d'instance
Différence entre mockito-core et mockito-all
Différence entre classe et instance
Différence entre l'installation de bundle et de bundle
Différence entre ArrayList et LinkedList
Différence entre render et redirect_to
Différence entre List et ArrayList
Différence entre .bashrc et .bash_profile
Différence entre StringBuilder et StringBuffer
Différence entre render et redirect_to
Quelle est la différence entre une action et une méthode d'instance?
Remplaçons la différence entre == (identité) et méthode equals (équivalence)
[Ruby] Différence entre obtenir et publier
Différence entre interface et classe abstraite
[Java] Différence entre Hashmap et HashTable
[Terminal] Différence entre irb et pry
JavaServlet: différence entre executeQuery et executeUpdate
[Ruby] Différence entre is_a? Et instance_of?
Différence approximative entre RSpec et minitest
[Rails] Différence entre find et find_by
Différence entre la variable d'instance et la variable de classe
[JAVA] Différence entre abstrait et interface
Différence entre Thymeleaf @RestController et @Controller
Différence entre Stream map et flatMap
[Java] Différence entre array et ArrayList
Différence entre le type primitif et le type de référence
Différence entre string.getByte () et Hex.decodeHex (string.toCharaArray ())
[Java] Différence entre fermable et fermable automatiquement
[Java] Différence entre StringBuffer et StringBuilder
[Java] Différence entre longueur, longueur () et taille ()
Facile à comprendre la différence entre la méthode d'instance Ruby et la méthode de classe.
[rails] Différence entre redirect_to et render
[Android] Différence entre finish () et return;
[Rails] J'ai étudié la différence entre une nouvelle méthode, une méthode de sauvegarde, une méthode de construction et une méthode de création.
Différence entre final et immuable en Java
[Remarque] Différence entre l'installation et la mise à jour du bundle
Différence entre la variable d'instance Ruby et la variable locale
Différence entre pop () et peek () dans la pile
[Pour les débutants] Différence entre Java et Kotlin
Différence entre isEmpty et isBlank de StringUtils
Différence entre getText () et getAttribute () de Selenium
À propos de la différence entre irb et pry
Différence entre "|| =" et "instance_variable_defined?" Dans Ruby memo
Différence entre EMPTY_ELEMENTDATA et DEFAULTCAPACITY_EMPTY_ELEMENTDATA dans ArrayList
[Ruby] Différence entre print, put et p