Ana içeriğe geç

ethers.js Kullanarak Jeton Gönderme

ETHERS.JS
ERC-20
JETONLAR
Acemi
Kim YongJun
6 Nisan 2021
2 dakikalık okuma

ethers.js(5.0) Kullanarak Jeton Gönderin

Bu Eğitimde Şunları Öğreneceksiniz

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

Başlarken

Başlamak için önce ethers.js kütüphanesini javascript'imize aktarmalıyız ethers.js(5.0) dahil

Yükleme

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 // Kodunuz buraya...
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: Jeton sözleşme adresi (aktarmak istediğiniz jeton, ether olmadığında sözleşme adresi gereklidir)
  2. send_token_amount: Alıcıya göndermek istediğiniz jeton miktarı
  3. to_address: Alıcının adresi
  4. send_account: Göndericinin adresi
  5. private_key: İşlemi imzalamak ve jetonları fiilen aktarmak için göndericinin özel anahtarı

Not

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

Gönderme Prosedürleri

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

Sağlayıcıyı Ayarla (Infura)

Ropsten test ağına bağlanma

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: jeton göndericisinin adresi
  2. to_address: jeton alıcısının adresi
  3. send_token_amount: gönderilecek jeton miktarı
  4. gas_limit: gaz limiti
  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("Gönderim tamamlandı!")
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ıyla tamamlanmış 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 // genel jeton gönderimi
17 let contract = new ethers.Contract(
18 contract_address,
19 send_abi,
20 walletSigner
21 )
22
23 // Kaç tane jeton?
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // Jetonları gönder
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("jeton gönderildi")
31 })
32 } // ether gönderimi
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("Gönderim tamamlandı!")
50 })
51 } catch (error) {
52 alert("gönderim başarısız oldu!!")
53 }
54 }
55 })
56}
Tümünü göster

Sayfanın son güncellenmesi: 4 Aralık 2023

Bu rehber yararlı oldu mu?