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 ethersES6 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<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>Paramètres
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)send_token_amount: le montant que vous souhaitez envoyer au destinataireto_address: l'adresse du destinatairesend_account: l'adresse de l'expéditeurprivate_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() // gasPrice5. Définir la transaction
Les variables définies ci-dessous dépendent de send_token()
Paramètres de transaction
send_account: adresse de l'expéditeur du jetonto_address: adresse du destinataire du jetonsend_token_amount: le montant de jetons à envoyergas_limit: limite de gazgas_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), // 1000007 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")1112send_token(13 contract_address,14 send_token_amount,15 to_address,16 send_address,17 private_key18)Afficher toutSuccès !
send_token()
1function send_token(2 contract_address,3 send_token_amount,4 to_address,5 send_account,6 private_key7) {8 let wallet = new ethers.Wallet(private_key)9 let walletSigner = wallet.connect(window.ethersProvider)1011 window.ethersProvider.getGasPrice().then((currentGasPrice) => {12 let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))13 console.log(`gas_price: ${gas_price}`)1415 if (contract_address) {16 // envoi de jeton générique17 let contract = new ethers.Contract(18 contract_address,19 send_abi,20 walletSigner21 )2223 // Combien de jetons ?24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25 console.log(`numberOfTokens: ${numberOfTokens}`)2627 // Envoyer des jetons28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {29 console.dir(transferResult)30 alert("jeton envoyé")31 })32 } // envoi d'ether33 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), // 10000043 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 toutDernière mise à jour de la page : 4 décembre 2023
