Passer au contenu principal

Envoyer des jetons à l'aide d'ethers.js

ETHERS.JS
ERC-20
JETONS
Débutant
Kim YongJun
6 avril 2021
3 minutes de lecture

Envoyer un jeton avec ethers.js(5.0)

Dans ce tutoriel, vous apprendrez comment

  • Importer ethers.js
  • Transférer un jeton
  • Définir le prix du gaz en fonction de l'état du trafic du réseau

Pour commencer

Pour commencer, nous devons d'abord importer la bibliothèque ethers.js dans notre JavaScript. Inclure ethers.js(5.0)

Installation

1/home/ricmoo> npm install --save ethers

ES6 dans le navigateur

1<script type="module">
2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
3 // Votre code ici...
4</script>

ES3 (UMD) dans le navigateur

1<script
2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
3 type="application/javascript"
4></script>

Paramètres

  1. contract_address : adresse du contrat de jeton (l'adresse du contrat est nécessaire lorsque le jeton que vous voulez transférer n'est pas de l'ether)
  2. send_token_amount : le montant que vous souhaitez envoyer au destinataire
  3. to_address : l'adresse du destinataire
  4. send_account : l'adresse de l'expéditeur
  5. private_key : clé privée de l'expéditeur pour signer la transaction et transférer les jetons

Remarque

signTransaction(tx) est supprimé car sendTransaction() s'en charge en interne.

Procédure d'envoi

1. Se connecter au réseau (réseau de test)

Définir le fournisseur (Infura)

Se connecter au réseau de test Ropsten

1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")

2. Créer un portefeuille

1let wallet = new ethers.Wallet(private_key)

3. Connecter le portefeuille au réseau

1let walletSigner = wallet.connect(window.ethersProvider)

4. Obtenir le prix actuel du gaz

1window.ethersProvider.getGasPrice() // gasPrice

5. Définir la transaction

Les variables définies ci-dessous dépendent de send_token()

Paramètres de transaction

  1. send_account : adresse de l'expéditeur du jeton
  2. to_address : adresse du destinataire du jeton
  3. send_token_amount : le montant de jetons à envoyer
  4. gas_limit : limite de gaz
  5. gas_price : prix du gaz

Voir ci-dessous pour savoir comment l'utiliser

1const tx = {
2 from: send_account,
3 to: to_address,
4 value: ethers.utils.parseEther(send_token_amount),
5 nonce: window.ethersProvider.getTransactionCount(send_account, "latest"),
6 gasLimit: ethers.utils.hexlify(gas_limit), // 100000
7 gasPrice: gas_price,
8}

6. Transfert

1walletSigner.sendTransaction(tx).then((transaction) => {
2 console.dir(transaction)
3 alert("Envoi terminé !")
4})

Comment l'utiliser

1let private_key =
2 "41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d"
3let send_token_amount = "1"
4let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80"
5let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6"
6let gas_limit = "0x100000"
7let wallet = new ethers.Wallet(private_key)
8let walletSigner = wallet.connect(window.ethersProvider)
9let contract_address = ""
10window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
11
12send_token(
13 contract_address,
14 send_token_amount,
15 to_address,
16 send_address,
17 private_key
18)
Afficher tout

Succès !

image d'une transaction effectuée avec succès

send_token()

1function send_token(
2 contract_address,
3 send_token_amount,
4 to_address,
5 send_account,
6 private_key
7) {
8 let wallet = new ethers.Wallet(private_key)
9 let walletSigner = wallet.connect(window.ethersProvider)
10
11 window.ethersProvider.getGasPrice().then((currentGasPrice) => {
12 let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))
13 console.log(`gas_price: ${gas_price}`)
14
15 if (contract_address) {
16 // envoi de jeton générique
17 let contract = new ethers.Contract(
18 contract_address,
19 send_abi,
20 walletSigner
21 )
22
23 // Combien de jetons ?
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // Envoyer des jetons
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("jeton envoyé")
31 })
32 } // envoi d'ether
33 else {
34 const tx = {
35 from: send_account,
36 to: to_address,
37 value: ethers.utils.parseEther(send_token_amount),
38 nonce: window.ethersProvider.getTransactionCount(
39 send_account,
40 "latest"
41 ),
42 gasLimit: ethers.utils.hexlify(gas_limit), // 100000
43 gasPrice: gas_price,
44 }
45 console.dir(tx)
46 try {
47 walletSigner.sendTransaction(tx).then((transaction) => {
48 console.dir(transaction)
49 alert("Envoi terminé !")
50 })
51 } catch (error) {
52 alert("échec de l'envoi !!")
53 }
54 }
55 })
56}
Afficher tout

Dernière mise à jour de la page : 4 décembre 2023

Ce tutoriel vous a été utile ?