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
/home/ricmoo> npm install --save ethers
ES6 dans le navigateur
<script type="module">
import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
// Votre code ici...
</script>
ES3 (UMD) dans le navigateur
<script
src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
type="application/javascript"
></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
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
2. Créer un portefeuille
let wallet = new ethers.Wallet(private_key)
3. Connecter le portefeuille au réseau
let walletSigner = wallet.connect(window.ethersProvider)
4. Obtenir le prix actuel du gaz
window.ethersProvider.getGasPrice() // gasPrice
5. 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
const tx = {
from: send_account,
to: to_address,
value: ethers.utils.parseEther(send_token_amount),
nonce: window.ethersProvider.getTransactionCount(send_account, "latest"),
gasLimit: ethers.utils.hexlify(gas_limit), // 100000
gasPrice: gas_price,
}
6. Transfert
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Envoi terminé !")
})
Comment l'utiliser
let private_key =
"41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d"
let send_token_amount = "1"
let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80"
let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6"
let gas_limit = "0x100000"
let wallet = new ethers.Wallet(private_key)
let walletSigner = wallet.connect(window.ethersProvider)
let contract_address = ""
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
send_token(
contract_address,
send_token_amount,
to_address,
send_address,
private_key
)
Succès !
send_token()
function send_token(
contract_address,
send_token_amount,
to_address,
send_account,
private_key
) {
let wallet = new ethers.Wallet(private_key)
let walletSigner = wallet.connect(window.ethersProvider)
window.ethersProvider.getGasPrice().then((currentGasPrice) => {
let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))
console.log(`gas_price: ${gas_price}`)
if (contract_address) {
// envoi de jeton générique
let contract = new ethers.Contract(
contract_address,
send_abi,
walletSigner
)
// Combien de jetons ?
let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
console.log(`numberOfTokens: ${numberOfTokens}`)
// Envoyer des jetons
contract.transfer(to_address, numberOfTokens).then((transferResult) => {
console.dir(transferResult)
alert("jeton envoyé")
})
} // envoi d'ether
else {
const tx = {
from: send_account,
to: to_address,
value: ethers.utils.parseEther(send_token_amount),
nonce: window.ethersProvider.getTransactionCount(
send_account,
"latest"
),
gasLimit: ethers.utils.hexlify(gas_limit), // 100000
gasPrice: gas_price,
}
console.dir(tx)
try {
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Envoi terminé !")
})
} catch (error) {
alert("échec de l'envoi !!")
}
}
})
}
Dernière mise à jour de la page : 3 mars 2026
