مكتبات واجهات برمجة التطبيقات بلغة جافا سكريبت
آخر تحديث للصفحة: 25 فبراير 2026
لكي يتمكن تطبيق الويب من التفاعل مع بلوكتشين إيثريوم (أي قراءة بيانات البلوكتشين و/أو إرسال المعاملات إلى الشبكة)، يجب أن يتصل بعقدة إيثريوم.
لهذا الغرض، يقوم كل عميل إيثريوم بتنفيذ مواصفات JSON-RPC، لذلك هناك مجموعة موحدة من الأساليب التي يمكن للتطبيقات الاعتماد عليها.
إذا كنت ترغب في استخدام جافا سكريبت للاتصال بعقدة إيثريوم، يمكنك استعمال لغة جافا سكريبت العادية، ولكن تتوفر داخل النظام عدة مكتبات ملائمة تسهّل هذه العملية بشكل كبير. مع هذه المكتبات، بوسع المطورين كتابة طرق ذكية من سطر واحد لتهيئة طلبات JSON RPC (في الخلفية) التي تتفاعل مع إيثريوم.
يرجى ملاحظة أنه منذ الدمج، هناك حاجة إلى جزأين متصلين من برامج إيثريوم - عميل تنفيذ وعميل إجماع - لتشغيل عقدة. يرجى التأكد من أن عقدتك تحتوي على كلٍّ من عميل التنفيذ وعميل الإجماع. إذا لم تكن عقدتك على جهازك المحلي (على سبيل المثال، تعمل عقدتك على مثيل AWS) فقم بتحديث عناوين IP في البرنامج التعليمي وفقًا لذلك. لمزيد من المعلومات، يرجى الاطلاع على صفحتنا حول تشغيل عقدة.
المتطلبات الأساسية
بالإضافة إلى فهم جافا سكريبت، قد يكون من المفيد فهم حزمة إيثريوم وعملاء إيثريوم.
ما نفع المكتبة؟
تخفف هذه المكتبات إلى حد كبير من تعقيد التفاعل المباشر مع عقدة إيثريوم. كما أنها توفر وظائف مساعِدة (كتحويل ETH إلى Gwei) تتيح لك كمطوّر قضاء وقت أقل في التعامل مع تعقيدات عملاء إيثريوم والتركيز لوقت أطول على وظيفة تطبيقك الفريدة.
ميزات المكتبة
الاتصال بعقد إيثريوم
تستخدم هذه المكتبات المزودين لتتيح لك بالاتصال بـ إيثريوم وقراءة بياناته، سواء كان ذلك عبر JSON-RPC أو INFURA أو إيثرسكان أو ألكيمي أو ميتاماسك.
تحذير: تمت أرشفة ويب3.جي إس في 4 مارس 2025. اقرأ الإعلان (opens in a new tab). فكر في استخدام مكتبات بديلة مثل ethers.js (opens in a new tab) أو viem (opens in a new tab) للمشاريع الجديدة.
مثال عن Ethers
1// يغلف BrowserProvider مزود Web3 قياسي، وهو2// ما يضيفه MetaMask كـ window.ethereum في كل صفحة3const provider = new ethers.BrowserProvider(window.ethereum)45// يسمح المكون الإضافي MetaMask أيضًا بتوقيع المعاملات6// لإرسال الإيثر والدفع لتغيير الحالة داخل البلوكتشين.7// لهذا، نحن بحاجة إلى موقّع الحساب...8const signer = provider.getSigner()مثال عن Web3js
1var web3 = new Web3("http://localhost:8545")2/ أو3var web3 = new Web3(New Web3.providers.HttpProvider("http://localhost:8545"))45// تغيير المزود6web3.setProvider("ws://localhost:8546")7// أو8web3.setProvider(new web3.providers.WebsocketProvider("ws://localhost:8546"))910// استخدام مزود خدمة الاتصال بين العمليات (IPC) في node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth. ipc", net) // مسار نظام التشغيل على mac13// أو14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // مسار نظام التشغيل على mac17// المسار على Windows هو: "\\\\.\\pipe\\geth.ipc"18/ المسار على linux هو: "/users/myuser/.ethereum/geth.ipc"إظهار الكلبعد الانتهاء من الإعداد، يصبح بإمكانك الاستعلام من سلسلة الكتل عن:
- أرقام الكتلة
- تقديرات الغاز
- أحداث العقود الذكية
- هوية الشبكة
- وغير ذلك...
وظيفة المحفظة
تمنحك هذه المكتبات الوظائف اللازمة لإنشاء المحافظ وإدارة المفاتيح وتوقيع المعاملات.
إليك أمثلة من Ethers
1// إنشاء نسخة محفظة من عبارة استذكارية...2mnemonic =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromPhrase(mnemonic)56// ... أو من مفتاح خاص7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// صحيح1112// العنوان كوعد حسب واجهة برمجة تطبيقات الموقّع13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// عنوان المحفظة متاح أيضًا بشكل متزامن17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// مكونات التشفير الداخلية21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// عبارة المحفظة الاستذكارية27walletMnemonic.mnemonic28// {29// locale: 'en',30// path: 'm/44\'/60\'/0\'/0/0',31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'32// }3334// ملاحظة: المحفظة التي تم إنشاؤها بمفتاح خاص لا تحتوي على35// عبارة استذكارية (الاشتقاق يمنع ذلك)36walletPrivateKey.mnemonic37// null3839// توقيع رسالة40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// توقيع معاملة49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// تعيد طريقة الاتصال نسخة جديدة من53// المحفظة المتصلة بمزود54wallet = walletMnemonic.connect(provider)5556// الاستعلام من الشبكة57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// إرسال الإيثر63wallet.sendTransaction(tx)إظهار الكلاقرأ التوثيق الكامل (opens in a new tab)
بعد الانتهاء من الإعداد، يمكنك:
- إنشاء حسابات
- إرسال المعاملات
- توقيع المعاملات
- وغير ذلك...
التفاعل مع دوال العقود الذكية
تُتيح مكتبات جافا سكريبت لتطبيقك استدعاء وظائف العقود الذكية من خلال قراءة واجهة التطبيق الثنائية (ABI) الخاصة بالعقد بعد عملية ترجمة (Compilation) العقد.
تشرح واجهة التطبيق الثنائية وظائف العقد بصيغة JSON وتتيح لك استخدامه كأي شيء عادي بلغة جافا سكريبت.
لذا فإن عقد سوليديتي التالي:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}إظهار الكلينتج JSON التالي:
1[{2 "type":"constructor",3 "payable":false,4 "stateMutability":"nonpayable"5 "inputs":[{"name":"testInt","type":"uint256"}],6 },{7 "type":"function",8 "name":"foo",9 "constant":false,10 "payable":false,11 "stateMutability":"nonpayable",12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],13 "outputs":[{"name":"","type":"address"}]14 },{15 "type":"event",16 "name":"Event",17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],18 "anonymous":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]إظهار الكلوهذا يعني أنك تستطيع:
- إرسال معاملة إلى العقد الذكي وتنفيذ طريقته
- الاتصال لتقدير الغاز الذي يحتاجه تنفيذ الطريقة عند تنفيذها في آلة إيثريوم الافتراضية
- نشر العقود
- وغير ذلك...
الوظائف المساعدة
تمنحك الوظائف المساعِدة اختصارات مفيدة تسهّل بعض الشيء عملية البناء باستخدام إيثريوم.
تأتي قيم ETH بفئة واي بشكل افتراضي. كل ETH واحد يعادل 1,000,000,000,000,000,000,000 WEI - هذا يعني أنك تتعامل مع الكثير من الأرقام! web3.utils.toWei يحول الإيثر إلى Wei من أجلك.
وتبدو القيمة بـether على الشكل التالي:
1// احصل على رصيد حساب (عن طريق العنوان أو اسم ENS)2balance = await provider.getBalance("ethers.eth")3// { BigNumber: "2337132817842795605" }45// ستحتاج غالبًا إلى تنسيق المُخرج للمستخدم6// الذي يفضل رؤية القيم بـ ether (بدلاً من wei)7ethers.utils.formatEther(balance)8// '2.337132817842795605'المكتبات المتاحة
ويب3.جي إس - واجهة برمجة تطبيقات إيثريوم جافا سكريبت.
إيثرز.جي إس - تنفيذ محفظة إيثريوم بالكامل مع الأدوات المساعدة باستخدام جافا سكريبت و تايب سكريبت.
- الصفحة الرئيسية لـ إيثرز.جي إس (opens in a new tab)
- التوثيق (opens in a new tab)
- غيت هاب (opens in a new tab)
ذا غراف - بروتوكول لفهرسة بيانات إيثريوم و آي بي إف إس والاستعلام عنها باستخدام جراف كيو إل.
- ذا غراف (opens in a new tab)
- مستكشف Graph (opens in a new tab)
- التوثيق (opens in a new tab)
- غيت هاب (opens in a new tab)
- ديسكورد (opens in a new tab)
ألكيمي SDK - غلاف حول إيثرز.جي إس مع واجهات برمجة تطبيقات محسّنة.
viem - واجهة تايب سكريبت لـ إيثريوم.
Drift - مكتبة تعريفية بلغة تايب سكريبت مع تخزين مؤقت مدمج وخطافات ومحاكاة اختبار.
قراءة إضافية
هل تعرف أحد الموارد المجتمعية التي ساعدتك؟ عدّل هذه الصفحة وأضفه!
المواضيع ذات الصلة
دروس تعليمية ذات صلة
- إعداد Web3js لاستخدام سلسلة كتل الإيثريوم في جافا سكريبت – تعليمات لإعداد web3.js في مشروعك.
- استدعاء عقد ذكي من جافا سكريبت – باستخدام رمز DAI، تعرّف على كيفية استدعاء وظيفة العقود بواسطة جافا سكريبت.
- إرسال المعاملات باستخدام web3 و ألكيمي – إرشادات تفصيلية خطوة بخطوة لإرسال المعاملات من الواجهة الخلفية.