إرسال المعاملات باستخدام ويب3
هذا دليل سهل للمبتدئين لإرسال معاملات إيثريوم باستخدام ويب3. هناك ثلاث خطوات رئيسية لإرسال معاملة إلى بلوكتشين إيثريوم: الإنشاء والتوقيع والبث. سوف نستعرض الثلاثة جميعًا، ونأمل أن نجيب على أي أسئلة قد تكون لديكم! في هذا البرنامج التعليمي، سنستخدم ألكيمي (opens in a new tab) لإرسال معاملاتنا إلى سلسلة إيثريوم. يمكنك إنشاء حساب ألكيمي مجاني هنا (opens in a new tab).
ملاحظة: هذا الدليل مخصص لتوقيع معاملاتك على الواجهة الخلفية لتطبيقك. إذا كنت ترغب في دمج توقيع معاملاتك على الواجهة الأمامية، فتحقق من دمج ويب3 مع موفر متصفح (opens in a new tab).
الأساسيات
مثل معظم مطوري البلوكتشين عندما يبدأون لأول مرة، قد تكون قد أجريت بعض الأبحاث حول كيفية إرسال معاملة (وهو أمر من المفترض أن يكون بسيطًا جدًا) وواجهت عددًا كبيرًا من الأدلة، يقول كل منها أشياء مختلفة مما يجعلك تشعر ببعض الإرهاق والارتباك. إذا كنت في هذا الموقف، فلا تقلق؛ لقد كنا جميعًا في هذه المرحلة! لذا، قبل أن نبدأ، دعنا نوضح بعض الأمور:
١. لا تخزن ألكيمي مفاتيحك الخاصة
- هذا يعني أن ألكيمي لا يمكنها توقيع وإرسال المعاملات نيابة عنك. والسبب في ذلك هو لأغراض أمنية. لن تطلب منك ألكيمي أبدًا مشاركة مفتاحك الخاص، ولا ينبغي عليك أبدًا مشاركة مفتاحك الخاص مع عقدة مستضافة (أو أي شخص آخر لهذا الأمر).
- يمكنك القراءة من البلوكتشين باستخدام واجهة برمجة التطبيقات الأساسية لـ ألكيمي، ولكن للكتابة عليها ستحتاج إلى استخدام شيء آخر لتوقيع معاملاتك قبل إرسالها عبر ألكيمي (وهذا هو نفس الحال بالنسبة لأي خدمة عقدة أخرى).
٢. ما هو “الموقِّع”؟
- سيقوم الموقِّعون بتوقيع المعاملات نيابة عنك باستخدام مفتاحك الخاص. في هذا البرنامج التعليمي، سنستخدم ألكيمي web3 (opens in a new tab) لتوقيع معاملاتنا، ولكن يمكنك أيضًا استخدام أي مكتبة web3 أخرى.
- على الواجهة الأمامية، من الأمثلة الجيدة للموقّع ميتاماسك (opens in a new tab)، والذي سيقوم بتوقيع وإرسال المعاملات نيابة عنك.
٣. لماذا أحتاج إلى توقيع معاملاتي؟
- يجب على كل مستخدم يريد إرسال معاملة على شبكة إيثريوم توقيع المعاملة (باستخدام مفتاحه الخاص)، من أجل التحقق من أن مصدر المعاملة هو من يدعي أنه كذلك.
- من المهم جدًا حماية هذا المفتاح الخاص، لأن الوصول إليه يمنح السيطرة الكاملة على حساب إيثريوم الخاص بك، مما يسمح لك (أو لأي شخص لديه حق الوصول) بإجراء المعاملات نيابة عنك.
٤. كيف أحمي مفتاحي الخاص؟
- هناك العديد من الطرق لحماية مفتاحك الخاص واستخدامه لإرسال المعاملات. في هذا البرنامج التعليمي سوف نستخدم ملف
.env. ومع ذلك، يمكنك أيضًا استخدام موفر منفصل يخزن المفاتيح الخاصة، أو استخدام ملف مخزن المفاتيح، أو خيارات أخرى.
٥. ما الفرق بين eth_sendTransaction و eth_sendRawTransaction؟
eth_sendTransaction وeth_sendRawTransaction هما دالتان من دوال واجهة برمجة تطبيقات إيثريوم التي تبث معاملة إلى شبكة إيثريوم بحيث تتم إضافتها إلى كتلة مستقبلية. يختلفان في كيفية تعاملهما مع توقيع المعاملات.
- يُستخدم
eth_sendTransaction(opens in a new tab) لإرسال معاملات غير موقعة، مما يعني أن العقدة التي ترسل إليها يجب أن تدير مفتاحك الخاص حتى تتمكن من توقيع المعاملة قبل بثها إلى السلسلة. نظرًا لأن ألكيمي لا تحتفظ بالمفاتيح الخاصة للمستخدمين، فإنها لا تدعم هذه الطريقة. - يُستخدم
eth_sendRawTransaction(opens in a new tab) لبث المعاملات التي تم توقيعها بالفعل. هذا يعني أنه يجب عليك أولاً استخدامsignTransaction(tx, private_key)(opens in a new tab)، ثم تمرير النتيجة إلىeth_sendRawTransaction.
عند استخدام web3، يتم الوصول إلى eth_sendRawTransaction عن طريق استدعاء الدالة web3.eth.sendSignedTransaction (opens in a new tab).
هذا ما سنستخدمه في هذا البرنامج التعليمي.
٦. ما هي مكتبة web3؟
- ويب3.جي إس هي مكتبة شاملة حول استدعاءات JSON-RPC القياسية التي يشيع استخدامها في تطوير إيثريوم.
- هناك العديد من مكتبات web3 للغات مختلفة. في هذا البرنامج التعليمي، سنستخدم ألكيمي ويب3 (opens in a new tab) المكتوب بلغة جافا سكريبت. يمكنك التحقق من الخيارات الأخرى هنا (opens in a new tab) مثل ethers.js (opens in a new tab).
حسنًا، الآن بعد أن أجبنا على بعض هذه الأسئلة، دعنا ننتقل إلى البرنامج التعليمي. لا تتردد في طرح الأسئلة في أي وقت في discord (opens in a new tab) الخاص بـ ألكيمي!
٧. كيفية إرسال معاملات آمنة ومُحسَّنة من حيث الغاز و خاصة؟
- لدى ألكيمي مجموعة من واجهات برمجة تطبيقات المعاملات (opens in a new tab). يمكنك استخدامها لإرسال معاملات معززة ومحاكاة المعاملات قبل حدوثها وإرسال معاملات خاصة وإرسال معاملات مُحسَّنة من حيث الغاز
- يمكنك أيضًا استخدام Notify API (opens in a new tab) ليتم تنبيهك عند سحب معاملتك من محطة المعاملات المؤقتة وإضافتها إلى السلسلة
ملاحظة: يتطلب هذا الدليل حساب ألكيمي وعنوان إيثريوم أو محفظة ميتاماسك وتثبيت NodeJs وnpm. إذا لم يكن كذلك، اتبع الخطوات التالية:
- إنشاء حساب ألكيمي مجاني (opens in a new tab)
- إنشاء حساب ميتاماسك (opens in a new tab) (أو الحصول على عنوان إيثريوم)
- اتبع هذه الخطوات لتثبيت NodeJs و NPM (opens in a new tab)
خطوات إرسال معاملتك
١. إنشاء تطبيق ألكيمي على شبكة اختبار سيبوليا
انتقل إلى لوحة تحكم ألكيمي (opens in a new tab) وأنشئ تطبيقًا جديدًا، واختر سيبوليا (أو أي شبكة اختبار أخرى) لشبكتك.
٢. اطلب ETH من صنبور سيبوليا
اتبع الإرشادات الموجودة على صنبور ألكيمي سيبوليا (opens in a new tab) لاستلام ETH. تأكد من تضمين عنوان إيثريوم الخاص بك على شبكة سيبوليا (من ميتاماسك) وليس شبكة أخرى. بعد اتباع التعليمات، تحقق مرة أخرى من أنك تلقيت ETH في محفظتك.
٣. إنشاء دليل مشروع جديد والدخول إليه باستخدام cd
قم بإنشاء دليل مشروع جديد من سطر الأوامر (terminal لأجهزة Mac) وانتقل إليه:
1mkdir sendtx-example2cd sendtx-example٤. تثبيت ألكيمي ويب3 (أو أي مكتبة web3)
قم بتشغيل الأمر التالي في دليل مشروعك لتثبيت ألكيمي ويب3 (opens in a new tab):
ملاحظة، إذا كنت ترغب في استخدام مكتبة ethers.js، فاتبع التعليمات هنا (opens in a new tab).
1npm install @alch/alchemy-web3٥. تثبيت dotenv
سنستخدم ملف .env لتخزين مفتاح واجهة برمجة التطبيقات والمفتاح الخاص بنا بشكل آمن.
1npm install dotenv --save٦. إنشاء ملف .env
أنشئ ملف .env في دليل مشروعك وأضف ما يلي (مع استبدال "your-api-url" و"your-private-key")
- للعثور على عنوان URL لواجهة برمجة تطبيقات ألكيمي، انتقل إلى صفحة تفاصيل التطبيق الذي أنشأته للتو في لوحة التحكم، وانقر فوق "عرض المفتاح" في الزاوية العلوية اليمنى، وانسخ عنوان URL لـ HTTP.
- للعثور على مفتاحك الخاص باستخدام ميتاماسك، تحقق من هذا الدليل (opens in a new tab).
1API_URL = "your-api-url"2PRIVATE_KEY = "your-private-key".env! يرجى التأكد من عدم مشاركة ملف .env الخاص بك أو كشفه لأي شخص، حيث أنك بذلك تعرض أسرارك للخطر. إذا كنت تستخدم التحكم في الإصدار، فأضف .env إلى ملف gitignore.٧. إنشاء ملف sendTx.js
رائع، الآن بعد أن أصبحت بياناتنا الحساسة محمية في ملف .env، فلنبدأ في البرمجة. على سبيل المثال لإرسال المعاملات، سنرسل ETH مرة أخرى إلى صنبور سيبوليا.
أنشئ ملف sendTx.js، حيث سنقوم بتكوين وإرسال معاملة المثال الخاصة بنا، وأضف إليه أسطر التعليمات البرمجية التالية:
1async function main() {2 require('dotenv').config();3 const { API_URL, PRIVATE_KEY } = process.env;4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");5 const web3 = createAlchemyWeb3(API_URL);6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: استبدل هذا العنوان بعنوانك العام7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // يبدأ nonce العد من 09
10 const transaction = {11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // عنوان الصنبور لإرجاع ETH12 'value': 1000000000000000000, // 1 ETH13 'gas': 30000,14 'nonce': nonce,15 // حقل بيانات اختياري لإرسال رسالة أو تنفيذ عقد ذكي16 };17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {21 if (!error) {22 console.log("🎉 تجزئة (هاش) معاملتك هي: ", hash, "\n تحقق من محطة المعاملات المؤقتة في Alchemy لعرض حالة معاملتك!");23 } else {24 console.log("❗حدث خطأ ما أثناء إرسال معاملتك:", error)25 }26 });27}28
29main();تأكد من استبدال العنوان الموجود في السطر 6 بعنوانك العام.
الآن، قبل أن نبدأ في تشغيل هذه التعليمة البرمجية، لنتحدث عن بعض المكونات هنا.
nonce: تُستخدم مواصفات nonce لتتبع عدد المعاملات المرسلة من عنوانك. نحن بحاجة إلى هذا لأغراض أمنية ولمنع هجمات إعادة التشغيل (opens in a new tab). للحصول على عدد المعاملات المرسلة من عنوانك، نستخدم getTransactionCount (opens in a new tab).transaction: يحتوي كائن المعاملة على بعض الجوانب التي نحتاج إلى تحديدهاto: هذا هو العنوان الذي نريد إرسال ETH إليه. في هذه الحالة، نعيد إرسال ETH إلى صنبور سيبوليا (opens in a new tab) الذي طلبناه منه في البداية.value: هذا هو المبلغ الذي نرغب في إرساله، محددًا بـ Wei حيث 10^18 Wei = 1 ETHgas: هناك العديد من الطرق لتحديد الكمية المناسبة من الغاز لتضمينها في معاملتك. لدى ألكيمي أيضًا إخطار على الويب لسعر الغاز (opens in a new tab) لإعلامك عندما ينخفض سعر الغاز ضمن حد معين. بالنسبة لمعاملات الشبكة الرئيسية، من الممارسات الجيدة التحقق من مقدر الغاز مثل ETH Gas Station (opens in a new tab) لتحديد الكمية المناسبة من الغاز المراد تضمينها. 21000 هو الحد الأدنى من الغاز الذي ستستخدمه أي عملية على إيثريوم، لذلك لضمان تنفيذ معاملتنا، وضعنا 30000 هنا.nonce: انظر تعريف nonce أعلاه. يبدأ Nonce بالعد من الصفر.- [اختياري] البيانات: تُستخدم لإرسال معلومات إضافية مع تحويلك، أو استدعاء عقد ذكي، غير مطلوب لتحويلات الرصيد، تحقق من الملاحظة أدناه.
signedTx: لتوقيع كائن المعاملة الخاص بنا، سنستخدم طريقةsignTransactionمعPRIVATE_KEYالخاص بناsendSignedTransaction: بمجرد أن يكون لدينا معاملة موقعة، يمكننا إرسالها ليتم تضمينها في كتلة لاحقة باستخدامsendSignedTransaction
ملاحظة حول البيانات هناك نوعان رئيسيان من المعاملات التي يمكن إرسالها في إيثريوم.
- تحويل الرصيد: إرسال ETH من عنوان إلى آخر. لا يلزم وجود حقل بيانات، ومع ذلك، إذا كنت ترغب في إرسال معلومات إضافية مع معاملتك، يمكنك تضمين تلك المعلومات بتنسيق HEX في هذا الحقل.
- على سبيل المثال، لنفترض أننا أردنا كتابة تجزئة (هاش) مستند آي بي إف إس إلى سلسلة إيثريوم لمنحها طابعًا زمنيًا غير قابل للتغيير. يجب أن يبدو حقل البيانات الخاص بنا على هذا النحو:
web3.utils.toHex(‘IPFS hash‘). والآن يمكن لأي شخص الاستعلام عن السلسلة ومعرفة متى تمت إضافة هذا المستند.
- على سبيل المثال، لنفترض أننا أردنا كتابة تجزئة (هاش) مستند آي بي إف إس إلى سلسلة إيثريوم لمنحها طابعًا زمنيًا غير قابل للتغيير. يجب أن يبدو حقل البيانات الخاص بنا على هذا النحو:
- معاملة العقد الذكي: تنفيذ بعض التعليمات البرمجية للعقد الذكي على السلسلة. في هذه الحالة، يجب أن يحتوي حقل البيانات على الدالة الذكية التي ترغب في تنفيذها، إلى جانب أي معلمات.
- للحصول على مثال عملي، راجع الخطوة 8 في هذا البرنامج التعليمي Hello World (opens in a new tab).
٨. قم بتشغيل التعليمة البرمجية باستخدام node sendTx.js
ارجع إلى الوحدة الطرفية أو سطر الأوامر وقم بتشغيل:
1node sendTx.js٩. شاهد معاملتك في محطة المعاملات المؤقتة
افتح صفحة محطة المعاملات المؤقتة (opens in a new tab) في لوحة تحكم ألكيمي وقم بالتصفية حسب التطبيق الذي أنشأته للعثور على معاملتك. هذا هو المكان الذي يمكننا فيه مشاهدة انتقال معاملتنا من الحالة المعلقة إلى الحالة المعدَّنة (إذا نجحت) أو حالة الإسقاط إذا لم تنجح. تأكد من إبقائه على "الكل" حتى تتمكن من التقاط المعاملات "المعدّنة" و "المعلقة" و "المسقطة". يمكنك أيضًا البحث عن معاملتك من خلال البحث عن المعاملات المرسلة إلى العنوان 0x31b98d14007bdee637298086988a0bbd31184523 .
لعرض تفاصيل معاملتك بمجرد العثور عليها، حدد تجزئة (هاش) المعاملة، والذي يجب أن ينقلك إلى عرض يبدو كالتالي:
من هناك يمكنك عرض معاملتك على إيثرسكان بالنقر فوق الرمز المحاط بدائرة حمراء!
يا للروعة! لقد أرسلت للتو أول معاملة إيثريوم لك باستخدام ألكيمي 🎉
للحصول على ملاحظات واقتراحات حول هذا الدليل، يرجى مراسلة Elan على ديسكورد (opens in a new tab) الخاص بـ ألكيمي!
نُشرت في الأصل على https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy (opens in a new tab)
آخر تحديث للصفحة: 3 مارس 2026
