Zum Hauptinhalt springen

Senden von Token mit ethers.js

ETHERS.JS
ERC-20
Token
Anfänger
Kim YongJun
6. April 2021
3 Minuten Lesezeit

Token senden mit ethers.js(5.0)

In diesem Tutorial lernen Sie Folgendes

  • ethers.js importieren
  • Token übertragen
  • Den Gaspreis entsprechend der Auslastung des Netzwerks festlegen

Erste Schritte

Um zu beginnen, müssen wir zunächst die Bibliothek ethers.js in unser JavaScript importieren. ethers.js(5.0) einbinden

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 // Dein 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 Senders
  5. private_key: Private-Key des Senders, um die Transaktion zu signieren und die Token tatsächlich zu übertragen

Hinweis

signTransaction(tx) wurde entfernt, da sendTransaction() dies intern erledigt.

Sendevorgang

1. Mit dem Netzwerk verbinden (Testnet)

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 Gaspreis abrufen

1window.ethersProvider.getGasPrice() // gasPrice

5. Transaktion definieren

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

Transaktionsparameter

  1. send_account: Adresse des Token-Senders
  2. to_address: Adresse des Token-Empfängers
  3. send_token_amount: Die Menge der zu sendenden Token
  4. gas_limit: Gaslimit
  5. gas_price: Gaspreis

Siehe unten für die 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. Übertragen

1walletSigner.sendTransaction(tx).then((transaction) => {
2 console.dir(transaction)
3 alert("Send finished!")
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)

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 Tokens?
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // Tokens senden
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("sent token")
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("Send finished!")
50 })
51 } catch (error) {
52 alert("failed to send!!")
53 }
54 }
55 })
56}

Letzte Aktualisierung der Seite: 3. März 2026

War dieses Tutorial hilfreich?