Weiter zum Hauptinhalt

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 ethers

ES6 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<script
2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
3 type="application/javascript"
4></script>

Parameter

  1. contract_address: Token-Vertragsadresse (die Vertragsadresse wird benötigt, wenn der Token, den Sie übertragen möchten, nicht Ether ist)
  2. send_token_amount: Der Betrag, den Sie an den Empfänger senden möchten
  3. to_address: Die Adresse des Empfängers
  4. send_account: Die Adresse des Absenders
  5. private_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() // gasPrice

5. Transaktion definieren

Die unten definierten Variablen sind von send_token() abhängig

Transaktionsparameter

  1. send_account: Adresse des Token-Absenders
  2. to_address: Adresse des Token-Empfängers
  3. send_token_amount: die Anzahl der zu sendenden Token
  4. gas_limit: Gaslimit
  5. gas_price: Gas-Preis

Siehe unten zur Verwendung

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. Ü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")
11
12send_token(
13 contract_address,
14 send_token_amount,
15 to_address,
16 send_address,
17 private_key
18)
Alles anzeigen

Erfolg!

Bild einer erfolgreich durchgeführten Transaktion

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 // allgemeiner Token-Versand
17 let contract = new ethers.Contract(
18 contract_address,
19 send_abi,
20 walletSigner
21 )
22
23 // Wie viele Token?
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // Token senden
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("Token gesendet")
31 })
32 } // Ether senden
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("Senden abgeschlossen!")
50 })
51 } catch (error) {
52 alert("Senden fehlgeschlagen!!")
53 }
54 }
55 })
56}
Alles anzeigen

Seite zuletzt aktualisiert: 4. Dezember 2023

War dieses Tutorial hilfreich?