Ana içeriğe geç

Ethers.js Kullanarak Token Gönderimi

ETHERS.JSERC-20TOKEN'LAR
Acemi
Kim YongJun
6 Nisan 2021
2 dakikalık okuma minute read

ethers.js(5.0) Kullanarak Token Gönderin

Bu Eğitimde Şunların Nasıl Yapılacağını Öğreneceksiniz

  • Ethers.js içe aktarımı
  • Token transferi
  • Gaz fiyatını ağ trafiği durumuna göre ayarlama

Başlamak İçin

Başlamak için önce ethers.js kitaplığını javascript'imize aktarmalıyız ethers.js(5.0) dahil

Kurulum

1/home/ricmoo> npm install --save ethers

Tarayıcıda ES6

1<script type="module">
2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
3 // Your code here...
4</script>

Tarayıcıda ES3(UMD)

1<script
2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
3 type="application/javascript"
4></script>

Parametreler

  1. contract_address: Token sözleşme adresi (aktarmak istediğiniz token, ether olmadığında sözleşme adresi gereklidir)
  2. send_token_amount: Alıcıya göndermek istediğiniz token miktarı
  3. to_address: Alıcının adresi
  4. send_account: Göndericinin adresi
  5. private_key: İşlemi imzalamak ve token'ları tam olarak aktarmak için göndericinin özel anahtarı

Uyarı

sendTransaction() onu dahili olarak yaptığı için signTransaction(tx) kaldırılmıştır.

Gönderim Prosedürleri

1. Ağa bağlan (test ağı)

Sağlayıcı Ayarla (Infura)

Ropsten test ağına bağlan

1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")

2. Cüzdan oluştur

1let wallet = new ethers.Wallet(private_key)

3. Cüzdanı ağa bağla

1let walletSigner = wallet.connect(window.ethersProvider)

4. Mevcut gaz ücretini al

1window.ethersProvider.getGasPrice() // gasPrice

5. İşlemi tanımla

Aşağıda tanımlanan bu değişkenler, send_token() komutuna bağlıdır

İşlem parametreleri

  1. send_account: token göndericisinin adresi
  2. to_address: token alıcısının adresi
  3. send_token_amount: gönderilecek token miktarı
  4. gas_limit: gaz sınırı
  5. gas_price: gaz ücreti

Nasıl kullanılacağını görmek için aşağıya bakınız

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. Aktarım

1walletSigner.sendTransaction(tx).then((transaction) => {
2 console.dir(transaction)
3 alert("Send finished!")
4})

Nasıl kullanılır

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)
Tümünü göster

Başarılı!

başarılı bir şekilde yapılan işlemin görüntüsü

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 // general token send
17 let contract = new ethers.Contract(
18 contract_address,
19 send_abi,
20 walletSigner
21 )
22
23 // How many tokens?
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // Send tokens
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("sent token")
31 })
32 } // ether send
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}
Tümünü göster

Son düzenleme: , 4 Aralık 2023

Bu rehber yararlı oldu mu?