Passer au contenu principal

Envoyer des transactions en utilisant le Web3

transactionsweb3.jsalchemy
Débutant
Elan Halpern
Documentation Alchemy(opens in a new tab)
4 novembre 2020
11 minutes de lecture minute read

Voici un guide à l'attention des débutants qui explique comment envoyer des transactions Ethereum en utilisant le Web3. Il y a trois étapes principales pour envoyer une transaction sur la blockchain Ethereum : créer, signer et diffuser. Nous allons passer en revue les trois en espérant répondre à toutes les questions que vous pourriez vous poser ! Dans ce tutoriel, nous utiliserons Alchemy(opens in a new tab) pour envoyer nos transactions sur la chaîne Ethereum. Vous pouvez créer gratuitement un compte sur Alchemy ici(opens in a new tab).

NOTE : Ce guide est destiné à signer vos transactions sur le backend de votre application. Si vous voulez intégrer la signature de vos transactions en frontend, consultez l'intégration de Web3 avec un fournisseur de navigateur(opens in a new tab).

Les bases

Comme la plupart des développeurs blockchain débutants, vous avez peut-être fait des recherches sur la façon d'envoyer une transaction (ce qui devrait être assez simple ) et vous êtes tombé sur une pléthore de guides, chacun décrivant des choses différentes, vous laissant quelque peu dépassé et désorienté. Si vous êtes dans ce cas, ne vous inquiétez pas, nous l'avons tous été à un moment ou à un autre ! Donc, avant de commencer, mettons certaines choses au clair :

1.Alchemy ne stocke pas vos clés privées

  • Cela signifie qu'Alchemy ne peut pas signer et envoyer des transactions en votre nom. Ceci pour des raisons de sécurité. Alchemy ne vous demandera jamais de partager votre clé privée, et vous ne devriez jamais partager votre clé privée avec un nœud hébergé (ni avec quiconque d'ailleurs).
  • Vous pouvez lire sur la blockchain en utilisant l'API Alchemy, mais pour y écrire vous devrez utiliser quelque chose d'autre afin de signer vos transactions par le biais d'Alchemy (c'est le cas pour tous les services d'accès à la blockchain).

2.Qu'est-ce qu'un « signataire » ?

3.Pourquoi dois-je signer mes transactions?

  • Chaque utilisateur souhaitant envoyer une transaction sur le réseau Ethereum doit signer la transaction (à l'aide de sa clé privée), afin de valider que l'origine de la transaction est bien celle qu'elle prétend être.
  • Il est très important de protéger cette clé privée, car le fait d'y avoir accès vous donne le contrôle total de votre compte Ethereum, ce qui vous permet (ou à quiconque y ayant accès) d'effectuer des transactions en votre nom.

4.Comment protéger ma clé privée ?

  • Il existe de nombreuses façons de protéger votre clé privée et de l'utiliser pour envoyer des transactions. Dans ce tutoriel, nous allons utiliser un fichier .env. Cependant, vous pouvez également faire appel à un autre fournisseur qui stocke les clés privées, utiliser un fichier keystore, ou d'autres options.

5. Quelle est la différence entre eth_sendTransaction et eth_sendRawTransaction?

eth_sendTransaction et eth_sendRawTransaction sont des fonctions API Ethereum qui diffusent une transaction sur le réseau Ethereum afin qu'elle soit ajoutée à un bloc futur. Elles diffèrent dans la façon dont elles gèrent la signature des transactions.

Lorsque vous utilisez web3, eth_sendRawTransaction est accessible en appelant la fonction web3.eth.sendSignedTransaction(opens in a new tab).

C'est ce que nous utiliserons dans notre tutoriel.

6.Qu'est-ce que la bibliothèque web3 ?

Bon, maintenant que nous avons clarifié ces points, passons au tutoriel. N'hésitez pas à poser des questions à tout moment sur le discord(opens in a new tab) d'Alchemy !

7. Comment envoyer des transactions sécurisées, optimisées en termes de gaz et privées ? {how-to-send-secure-gas-optimized-and-private-transactions}

NOTE : Ce guide nécessite un compte Alchemy, une adresse Ethereum ou un portefeuille MetaMask, ainsi que l'installation de NodeJs et npm. Si ce n’est pas le cas, procédez comme suit :

  1. Créez un compte Alchemy gratuitement(opens in a new tab)
  2. Créez un compte Metamask(opens in a new tab) (ou obtenez une adresse Ethereum)
  3. Suivez ces étapes pour installer NodeJs et NPM(opens in a new tab)

Étapes pour envoyer votre transaction

1.Créer une application Alchemy sur le réseau de test Sepolia

Naviguez vers votre tableau de bord d'Alchemy(opens in a new tab) et créez une nouvelle application, en choisissant Sepolia (ou tout autre réseau de test) comme réseau.

2.Demander de l'ETH via le robinet Sepolia

Suivez les instructions sur le robinet Alchemy Sepolia(opens in a new tab) pour recevoir de l'ETH. Assurez-vous d'inclure votre adresse Ethereum Sepolia (depuis MetaMask) et non celle d'un autre réseau. Après avoir suivi les instructions, vérifiez que vous avez reçu l'ETH dans votre portefeuille.

3. Créez un nouveau répertoire de projet et placez-y un cd

Créez un nouveau répertoire de projet à partir de la ligne de commande (terminal pour macs) et naviguez dans celui-ci :

1mkdir sendtx-example
2cd sendtx-example

4.Installer Alchemy Web3 (ou n'importe quelle autre bibliothèque web3)

Exécutez la commande suivante dans votre dossier projet pour installer Alchemy Web3(opens in a new tab) :

Notez que si vous souhaitez utiliser la bibliothèque ethers.js, suivez les instructions ici(opens in a new tab).

1npm install @alch/alchemy-web3

5.Installer dotenv

Nous utiliserons un fichier .env pour stocker en toute sécurité notre clé API et notre clé privée.

1npm install dotenv --save

6. Créer le fichier .env

Créez un fichier .env dans votre répertoire de projet et ajoutez les éléments suivants (en remplaçant «your-api-URL» et « your-private-key »)

1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"
Ne propagez pas le fichier .env ! Assurez-vous de ne jamais partager ou exposer votre fichier .env avec quiconque, car vous compromettez vos secrets en le faisant. Si vous utilisez le contrôle de version, ajoutez votre .env à un fichier gitignore(opens in a new tab).

7. Créer le fichier sendTx.js

Super, maintenant que nous avons protégé nos données sensibles dans un fichier .env, commençons à coder. Pour notre exemple d'envoi de transaction, nous renverrons l'ETH via le robinet Sepolia.

Créez un fichier sendTx.js, dans lequel nous allons configurer et envoyer notre exemple de transaction et ajoutez-y les lignes de code suivantes :

1async function main() {
2 require('dotenv').config();
3 const { API_URL, PRIVATE_KEY } = process.env;
4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
5 const web3 = createAlchemyWeb3(API_URL);
6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
9
10 const transaction = {
11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
12 'value': 1000000000000000000, // 1 ETH
13 'gas': 30000,
14 'nonce': nonce,
15 // optional data field to send message or execute smart contract
16 };
17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
21 if (!error) {
22 console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
23 } else {
24 console.log("❗Something went wrong while submitting your transaction:", error)
25 }
26 });
27}
28
29main();
Afficher tout

Veillez à remplacer l'adresse sur la ligne 6 par votre propre adresse publique.

Avant de nous lancer dans l’exécution de ce code, parlons ici de certains de ses composants.

Remarque concernant les données Il existe deux types principaux de transactions qui peuvent être envoyées sur Ethereum.

8. Exécuter le code en utilisant node sendTx.js

Retournez à votre terminal ou votre invite de ligne de commande et exécutez :

1node sendTx.js

9.Consulter votre transaction dans le Mempool

Ouvrez la page Mempool(opens in a new tab) dans votre tableau de bord Alchemy et filtrez avec l'application que vous avez créée pour trouver votre transaction. C'est là que nous pouvons observer le passage de l'état de notre transaction de l'état en attente à l'état miné (si la transaction a abouti) ou à l'état abandonné en cas d'échec. Veillez à opter pour « All » (Tous) afin de visualiser les transactions « mined » (minées), « pending » (en attente) et « dropped » (abandonnées). Vous pouvez également trouver votre transaction en recherchant les transactions envoyées à l'adresse 0x31b98d14007bdee637298086988a0bbd31184523.

Pour afficher les détails de votre transaction une fois que vous l'avez trouvée, sélectionnez le hachage tx, qui devrait vous amener à une vue qui ressemble à ceci :

Capture d'écran Mempool watcher

À partir de là, vous pouvez visualiser votre transaction sur Etherscan en cliquant sur l'icône cerclée en rouge !

Youpi ! Vous venez d’envoyer votre première transaction Ethereum en utilisant Alchemy 🎉

Pour des commentaires et des suggestions sur ce guide, veuillez envoyer un message à Elan sur le Discord d'Alchemy(opens in a new tab) !

Publié à l’origine sur https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy(opens in a new tab)

Dernière modification: @nhsz(opens in a new tab), 15 août 2023

Ce tutoriel vous a été utile ?