Senden von Token mit ethers.js
ETHERS.JS
ERC-20
TOKENS
Anfänger
Kim YongJun
6. April 2021
3 Minuten Lesedauer
Token senden mit ethers.js (5.0)
In diesem Tutorial erfahren Sie, wie Sie
- Ethers.js importieren
- Token transferieren
- Gas-Preis entsprechend der Netzwerkauslastung festlegen
Erste Schritte
Zu Beginn müssen wir zunächst die ethers.js-Bibliothek in unser Javascript importieren Binden Sie ethers.js (5.0) ein
Installation
1/home/ricmoo> npm install --save ethersES6 im Browser
1<script type="module">2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"3 // Ihr Code hier...4</script>ES3(UMD) im Browser
1<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>Parameter
contract_address: Token-Vertragsadresse (die Vertragsadresse wird benötigt, wenn der Token, den Sie übertragen möchten, nicht Ether ist)send_token_amount: Der Betrag, den Sie an den Empfänger senden möchtento_address: Die Adresse des Empfängerssend_account: Die Adresse des Absendersprivate_key: Privater Schlüssel des Absenders, um die Transaktion zu signieren und die Token tatsächlich zu übertragen
Hinweis
signTransaction(tx) wird entfernt, da sendTransaction() dies intern erledigt.
Sendeablauf
1. Mit dem Netzwerk (Testnet) verbinden
Provider festlegen (Infura)
Mit dem Ropsten-Testnet verbinden
1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")2. Wallet erstellen
1let wallet = new ethers.Wallet(private_key)3. Wallet mit dem Netzwerk verbinden
1let walletSigner = wallet.connect(window.ethersProvider)4. Aktuellen Gas-Preis abrufen
1window.ethersProvider.getGasPrice() // gasPrice5. Transaktion definieren
Die unten definierten Variablen sind von send_token() abhängig
Transaktionsparameter
send_account: Adresse des Token-Absendersto_address: Adresse des Token-Empfängerssend_token_amount: die Anzahl der zu sendenden Tokengas_limit: Gaslimitgas_price: Gas-Preis
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. Übertragung
1walletSigner.sendTransaction(tx).then((transaction) => {2 console.dir(transaction)3 alert("Senden abgeschlossen!")4})Verwendung
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)Alles anzeigenErfolg!
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 // allgemeiner Token-Versand17 let contract = new ethers.Contract(18 contract_address,19 send_abi,20 walletSigner21 )2223 // Wie viele Token?24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25 console.log(`numberOfTokens: ${numberOfTokens}`)2627 // Token senden28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {29 console.dir(transferResult)30 alert("Token gesendet")31 })32 } // Ether senden33 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("Senden abgeschlossen!")50 })51 } catch (error) {52 alert("Senden fehlgeschlagen!!")53 }54 }55 })56}Alles anzeigenSeite zuletzt aktualisiert: 4. Dezember 2023
