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
/home/ricmoo> npm install --save ethers
ES6 im Browser
<script type="module">
import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
// Dein Code hier...
</script>
ES3(UMD) im Browser
<script
src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
type="application/javascript"
></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 Sendersprivate_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
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
2. Wallet erstellen
let wallet = new ethers.Wallet(private_key)
3. Wallet mit dem Netzwerk verbinden
let walletSigner = wallet.connect(window.ethersProvider)
4. Aktuellen Gaspreis abrufen
window.ethersProvider.getGasPrice() // gasPrice
5. Transaktion definieren
Diese unten definierten Variablen sind abhängig von send_token()
Transaktionsparameter
send_account: Adresse des Token-Sendersto_address: Adresse des Token-Empfängerssend_token_amount: Die Menge der zu sendenden Tokengas_limit: Gaslimitgas_price: Gaspreis
Siehe unten für die Verwendung
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. Übertragen
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Send finished!")
})
Verwendung
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
)
Erfolg!
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) {
// allgemeiner Token-Versand
let contract = new ethers.Contract(
contract_address,
send_abi,
walletSigner
)
// Wie viele Tokens?
let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
console.log(`numberOfTokens: ${numberOfTokens}`)
// Tokens senden
contract.transfer(to_address, numberOfTokens).then((transferResult) => {
console.dir(transferResult)
alert("sent token")
})
} // Ether senden
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("Send finished!")
})
} catch (error) {
alert("failed to send!!")
}
}
})
}
Letzte Aktualisierung der Seite: 3. März 2026
