تخطٍ إلى المحتوى الرئيسي

إرسال الرموز باستخدام ethers.js

ETHERS.JS
ايه آر سي-20
الرموز
المستوى المبتدئ
كيم يونغ جون
6 أبريل 2021
2 دقيقة قراءة

إرسال الرمز باستخدام ethers.js(5.0)

في هذا البرنامج التعليمي سوف تتعلم كيفية

  • استيراد ethers.js
  • تحويل الرمز
  • تحديد سعر الغاز وفقاً لحالة ازدحام الشبكة

للبدء

للبدء، يجب علينا أولاً استيراد مكتبة ethers.js إلى جافا سكريبت الخاص بنا تضمين ethers.js(5.0)

التثبيت

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

ES6 in the Browser

1<script type="module">
2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
3 // أدخل الكود الخاص بك هنا...
4</script>

ES3(UMD) in the Browser

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

المعلمات

  1. contract_address: عنوان عقد الرمز (يلزم عنوان العقد عندما لا يكون الرمز الذي تريد تحويله هو إيثر)
  2. send_token_amount: المبلغ الذي تريد إرساله إلى المستلم
  3. to_address: عنوان المستلم
  4. send_account: عنوان المرسل
  5. private_key: المفتاح الخاص للمرسل لتوقيع المعاملة وتحويل الرموز فعليًا

ملاحظة

تمت إزالة signTransaction(tx) لأن sendTransaction() تقوم بذلك داخلياً.

إجراءات الإرسال

١. الاتصال بالشبكة (شبكة الاختبار)

تعيين الموفر (إنفيورا)

الاتصال بشبكة الاختبار روبستين

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

٢. إنشاء محفظة

1let wallet = new ethers.Wallet(private_key)

3. ربط المحفظة بالشبكة

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

4. الحصول على سعر الغاز الحالي

1window.ethersProvider.getGasPrice() // سعر الغاز

5. تحديد المعاملة

المتغيرات المحددة أدناه تعتمد على send_token()

معلمات المعاملة

  1. send_account: عنوان مرسل الرمز
  2. to_address: عنوان مستلم الرمز
  3. send_token_amount: كمية الرموز المراد إرسالها
  4. gas_limit: حد الغاز
  5. gas_price: سعر الغاز

انظر أدناه لمعرفة كيفية الاستخدام

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. تحويل

1walletSigner.sendTransaction(tx).then((transaction) => {
2 console.dir(transaction)
3 alert("اكتمل الإرسال!")
4})

كيفية استخدامه

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)

نجاح!

صورة معاملة تمت بنجاح

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 // إرسال رمز عام
17 let contract = new ethers.Contract(
18 contract_address,
19 send_abi,
20 walletSigner
21 )
22
23 // كم عدد الرموز؟
24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
25 console.log(`numberOfTokens: ${numberOfTokens}`)
26
27 // إرسال الرموز
28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {
29 console.dir(transferResult)
30 alert("تم إرسال الرمز")
31 })
32 } // إرسال إيثر
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("اكتمل الإرسال!")
50 })
51 } catch (error) {
52 alert("فشل الإرسال!!")
53 }
54 }
55 })
56}

آخر تحديث للصفحة: 3 مارس 2026

هل كانت تعليمات الاستخدام هذه مفيدة؟