إرسال الرموز باستخدام 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 ethersES6 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<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>المعلمات
contract_address: عنوان عقد الرمز (يلزم عنوان العقد عندما لا يكون الرمز الذي تريد تحويله هو إيثر)send_token_amount: المبلغ الذي تريد إرساله إلى المستلمto_address: عنوان المستلمsend_account: عنوان المرسل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()
معلمات المعاملة
send_account: عنوان مرسل الرمزto_address: عنوان مستلم الرمزsend_token_amount: كمية الرموز المراد إرسالهاgas_limit: حد الغاز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), // 1000007 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_key18)نجاح!
send_token()
1function send_token(2 contract_address,3 send_token_amount,4 to_address,5 send_account,6 private_key7) {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 walletSigner21 )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), // 10000043 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
