Nov 07, 2025ترك رسالة

كيف يمكن الحصول على تقدير بيانات نشر العقد باستخدام Ethers.js؟

كمورد للإيثر، أفهم أهمية التقدير الدقيق لبيانات نشر العقد عند العمل مع سلسلة كتل الإيثريوم. في منشور المدونة هذا، سأشارك بعض الأفكار حول كيفية الحصول على تقدير بيانات نشر العقد باستخدام ethers.js، وهي مكتبة JavaScript شائعة للتفاعل مع blockchain Ethereum.

فهم نشر العقد على الايثيريوم

قبل أن نتعمق في التفاصيل الفنية لتقدير بيانات نشر العقد، دعنا نفهم بإيجاز ما يستلزمه نشر العقد على إيثريوم. عندما تقوم بنشر عقد ذكي على blockchain Ethereum، فإنك تقوم بشكل أساسي بإنشاء مثيل جديد لرمز العقد وتخزينه على blockchain. تتطلب هذه العملية إرسال معاملة إلى الشبكة، والتي تتضمن الرمز الثانوي للعقد وأي وسائط منشئة ضرورية.

يتم تحديد تكلفة نشر العقد حسب كمية الغاز المطلوبة لتنفيذ معاملة النشر. الغاز هو وحدة قياس للعمل الحسابي المطلوب لتنفيذ معاملة على شبكة إيثريوم. كلما كان رمز العقد أكثر تعقيدًا وكلما كانت وسيطات المنشئ أكبر، زادت الحاجة إلى المزيد من الغاز للنشر.

المتطلبات الأساسية

لمتابعة الأمثلة الواردة في منشور المدونة هذا، ستحتاج إلى ما يلي:

  • تم تثبيت Node.js على جهازك
  • فهم أساسي لجافا سكريبت وسلسلة الكتل الخاصة بالإيثريوم
  • الإلمام بـethers.js

يمكنك تثبيتethers.js باستخدام npm عن طريق تشغيل الأمر التالي:

npm تثبيت الإيثرات

تقدير بيانات نشر العقد باستخدامethers.js

لتقدير بيانات نشر العقد، سنحتاج إلى تنفيذ الخطوات التالية:

  1. قم بتجميع العقد الذكي للحصول على الرمز الثانوي وABI.
  2. قم بإنشاء مثيل جديد لـethers.jsكونتراكت فاكتوريفصل.
  3. استخدمكونتراكت فاكتوريلتقدير الغاز اللازم للنشر.

دعونا نتناول كل خطوة بالتفصيل.

الخطوة 1: تجميع العقد الذكي

الخطوة الأولى هي تجميع العقد الذكي للحصول على الكود الثانوي وABI. يمكنك استخدام أداة مثلsolc(مترجم Solidity) لتجميع العقد الخاص بك. فيما يلي مثال لكيفية تجميع عقد Solidity بسيط باستخدامsolcفي البرنامج النصي Node.js:

const solc = require('solc'); const fs = require('fs'); // اقرأ الكود المصدري للعقد const sourceCode = fs.readFileSync('SimpleContract.sol', 'utf8'); // تجميع العقد const input = { language: 'Solidity', Resources: { 'SimpleContract.sol': { content: sourceCode } }, settings: {outputSelection: { '*': { '*': ['abi', 'evm.bytecode'] } } } }; إخراج ثابت = JSON.parse(solc.compile(JSON.stringify(input))); const Contract =output.contracts['SimpleContract.sol']['SimpleContract']; const bytecode = Contract.evm.bytecode.object; const أبي = Contract.abi; console.log('Bytecode:', bytecode); console.log('ABI:', أبي);

في هذا المثال، نقرأ الكود المصدري لعقد Solidity البسيط من ملف اسمهSimpleContract.sol. ثم نقوم بتجميع العقد باستخدامsolcواستخرج الرمز الثانوي وABI من مخرجات التجميع.

الخطوة 2: إنشاء مثيل جديد لـكونتراكت فاكتوريفصل

بمجرد حصولنا على الرمز الثانوي وABI، يمكننا إنشاء مثيل جديد لـكونتراكت فاكتوريفئة منethers.js. الكونتراكت فاكتورييتم استخدام الفئة لنشر مثيلات جديدة للعقد الذكي. هنا مثال:

const { ethers } = require('ethers'); // اتصل بشبكة إيثريوم const Provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'); const Wallet = new ethers.Wallet('YOUR_PRIVATE_KEY', Provider); // إنشاء مثيل ContractFactory جديد const ContractFactory = new ethers.ContractFactory(abi, bytecode, Wallet);

في هذا المثال، نحن نتصل بشبكة Ethereum الرئيسية باستخدام مزود Infura. سوف تحتاج إلى استبدالYOUR_INFURA_PROJECT_IDبمعرف مشروع Infura الفعلي الخاص بك. نقوم أيضًا بإنشاء مثيل محفظة جديد باستخدام مفتاح خاص. يستبدلYOUR_PRIVATE_KEYبمفتاحك الخاص الفعلي.

الخطوة 3: تقدير الغاز المطلوب للنشر

بمجرد حصولنا علىكونتراكت فاكتوريعلى سبيل المثال، يمكننا استخدامه لتقدير الغاز المطلوب للنشر. الكونتراكت فاكتوريالفصل لديه طريقة تسمىgetDeployTransactionتقوم بإرجاع كائن معاملة يمثل معاملة النشر. يمكننا بعد ذلك استخدامتقدير الغازطريقة المزود لتقدير الغاز المطلوب للصفقة. هنا مثال:

// تقدير الغاز المطلوب للنشر constployTransaction = ContractFactory.getDeployTransaction(); const approximateGas = انتظار Provider.estimateGas(deployTransaction); console.log('الغاز المقدر للنشر:', المقدرةGas.toString());

في هذا المثال، نحن نسميهgetDeployTransactionطريقةكونتراكت فاكتوريللحصول على كائن معاملة النشر. نستخدم بعد ذلكتقدير الغازطريقة المزود لتقدير الغاز المطلوب للصفقة. يتم إرجاع الغاز المقدر كـ aرقم كبيرلذلك نقوم بتحويلها إلى سلسلة قبل تسجيلها في وحدة التحكم.

العوامل المؤثرة على تقدير عقد نشر الغاز

يمكن أن يتأثر تقدير الغاز لنشر العقد بعدة عوامل، بما في ذلك:

Methyl Tert-Butyl Ether (MTBE)Ethylene Glycol Monobutyl Ether (BCS, EB)

  • تعقيد العقد: كلما كان رمز العقد أكثر تعقيدًا، زادت الحاجة إلى الغاز للنشر.
  • الحجج المنشئة: إذا كان عقدك يحتوي على وسيطات منشئة، فقد يؤثر حجم هذه الوسيطات وتعقيدها أيضًا على تقدير الغاز.
  • ازدحام الشبكة: يمكن أن تؤثر الحالة الحالية لشبكة Ethereum أيضًا على تقديرات الغاز. خلال فترات الازدحام الشديد في الشبكة، قد تكون أسعار الغاز أعلى، مما قد يزيد من التكلفة الإجمالية للنشر.

خاتمة

يعد تقدير بيانات نشر العقد خطوة مهمة في عملية نشر عقد ذكي على blockchain Ethereum. باستخدام ethers.js، يمكننا بسهولة تقدير الغاز المطلوب للنشر وتخطيط معاملاتنا وفقًا لذلك.

إذا كنت مهتمًا بشراء الإيثرات لمشاريع البلوكشين الخاصة بك، فنحن موردون موثوقون للإيثرات. نحن نقدم الإيثرات عالية الجودة مثلميثيل ثالثي بوتيل الأثير (MTBE),إيثيلين جلايكول مونوبوتيل إيثر (BCS، EB)، وثلاثي إيثيلين جلايكول مونوبوتيل إيثر (TBG، TB). اتصل بنا لمناقشة احتياجاتك الشرائية وبدء شراكة ناجحة.

مراجع

  • وثائقethers.js: https://docs.ethers.io/v5/
  • وثائق الصلابة: https://docs.soliditylang.org/
  • الموقع الرسمي للإثيريوم: https://ethereum.org/

إرسال التحقيق

الصفحة الرئيسية

الهاتف

البريد الإلكتروني

التحقيق