بنية العقدة
تتكون عقدة إيثيريوم من عميلين: عميل التنفيذ وعميل إجماع. لكي تقترح العقدة كتلة جديدة، يجب عليها أيضًا تشغيل عميل مُدَقِّق.
عندما كانت إيثيريوم تستخدم إثبات العمل (PoW)، كان عميل التنفيذ كافيًا لتشغيل عقدة إيثيريوم كاملة. ومع ذلك، منذ تنفيذ إثبات الحصة (PoS)، يجب استخدام عميل التنفيذ جنبًا إلى جنب مع برنامج آخر يسمى عميل إجماع.
يوضح المخطط أدناه العلاقة بين عميلي إيثيريوم. يتصل العميلان بشبكات نظير إلى نظير (P2P) الخاصة بهما. هناك حاجة إلى شبكات P2P منفصلة لأن عملاء التنفيذ ينشرون المعاملات عبر شبكة P2P الخاصة بهم، مما يمكنهم من إدارة مجمع المعاملات المحلي الخاص بهم، بينما ينشر عملاء الإجماع الكتل عبر شبكة P2P الخاصة بهم، مما يتيح الإجماع ونمو السلسلة.
هناك عدة خيارات لعميل التنفيذ بما في ذلك إريغون، ونيذرميند، وبيسو.
لكي تعمل بنية العميلين هذه، يجب على عملاء الإجماع تمرير حزم من المعاملات إلى عميل التنفيذ. ينفذ عميل التنفيذ المعاملات محليًا للتحقق من أن المعاملات لا تنتهك أيًا من قواعد إيثيريوم وأن التحديث المقترح لحالة إيثيريوم صحيح. عندما يتم اختيار عقدة لتكون منتجًا للكتلة، يطلب مثيل عميل الإجماع الخاص بها حزمًا من المعاملات من عميل التنفيذ لتضمينها في الكتلة الجديدة وتنفيذها لتحديث الحالة العالمية. يقود عميل الإجماع عميل التنفيذ عبر اتصال RPC محلي باستخدام Engine API (opens in a new tab).
ماذا يفعل عميل التنفيذ؟
عميل التنفيذ مسؤول عن التحقق من صحة المعاملات، والتعامل معها، ونشرها، إلى جانب إدارة الحالة ودعم آلة إيثيريوم الافتراضية (EVM). وهو ليس مسؤولاً عن بناء الكتل، أو نشر الكتل، أو التعامل مع منطق الإجماع. هذه الأمور من اختصاص عميل الإجماع.
ينشئ عميل التنفيذ حمولات التنفيذ - قائمة المعاملات، وشجرة الحالة المحدثة، والبيانات الأخرى المتعلقة بالتنفيذ. يقوم عملاء الإجماع بتضمين حمولة التنفيذ في كل كتلة. عميل التنفيذ مسؤول أيضًا عن إعادة تنفيذ المعاملات في الكتل الجديدة للتأكد من صحتها. يتم تنفيذ المعاملات على الكمبيوتر المدمج لعميل التنفيذ، والمعروف باسم آلة إيثيريوم الافتراضية (EVM).
يقدم عميل التنفيذ أيضًا واجهة مستخدم لإيثيريوم من خلال طرق RPC التي تمكن المستخدمين من الاستعلام عن سلسلة كتل إيثيريوم، وإرسال المعاملات، ونشر العقود الذكية. من الشائع أن يتم التعامل مع استدعاءات RPC بواسطة مكتبة مثل Web3js (opens in a new tab)، أو Web3py (opens in a new tab)، أو بواسطة واجهة مستخدم مثل محفظة المتصفح.
باختصار، عميل التنفيذ هو:
- بوابة مستخدم إلى إيثيريوم
- موطن لآلة إيثيريوم الافتراضية، وحالة إيثيريوم، ومجمع المعاملات.
ماذا يفعل عميل الإجماع؟
يتعامل عميل الإجماع مع كل المنطق الذي يمكن العقدة من البقاء في حالة المزامنة مع شبكة إيثيريوم. يتضمن ذلك تلقي الكتل من النظراء وتشغيل خوارزمية اختيار التفرع لضمان اتباع العقدة دائمًا للسلسلة ذات التراكم الأكبر من الإثباتات (المرجحة بالأرصدة الفعالة للمُدَقِّقين). على غرار عميل التنفيذ، يمتلك عملاء الإجماع شبكة P2P الخاصة بهم والتي يشاركون من خلالها الكتل والإثباتات.
لا يشارك عميل الإجماع في إثبات الكتل أو اقتراحها - يتم ذلك بواسطة مُدَقِّق، وهو إضافة اختيارية لعميل الإجماع. عميل الإجماع بدون مُدَقِّق يواكب فقط رأس السلسلة، مما يسمح للعقدة بالبقاء متزامنة. يتيح ذلك للمستخدم إجراء المعاملات مع إيثيريوم باستخدام عميل التنفيذ الخاص به، واثقًا من أنه على السلسلة الصحيحة.
المُدَقِّقون
التخزين وتشغيل برنامج المُدَقِّق يجعل العقدة مؤهلة ليتم اختيارها لاقتراح كتلة جديدة. يمكن لمشغلي العقد إضافة مُدَقِّق إلى عملاء الإجماع الخاصين بهم عن طريق إيداع 32 ETH في عقد الإيداع. يأتي عميل المُدَقِّق مدمجًا مع عميل الإجماع ويمكن إضافته إلى العقدة في أي وقت. يتعامل المُدَقِّق مع الإثباتات ومقترحات الكتل. كما أنه يمكن العقدة من تجميع المكافآت أو فقدان ETH عبر العقوبات أو الاقتطاع.
مقارنة بين مكونات العقدة
| عميل التنفيذ | عميل الإجماع | المُدَقِّق |
|---|---|---|
| ينشر المعاملات عبر شبكة P2P الخاصة به | ينشر الكتل والإثباتات عبر شبكة P2P الخاصة به | يقترح الكتل |
| ينفذ/يعيد تنفيذ المعاملات | يشغل خوارزمية اختيار التفرع | يجمع المكافآت/العقوبات |
| يتحقق من تغييرات الحالة الواردة | يتتبع رأس السلسلة | يقوم بالإثباتات |
| يدير أشجار الحالة والإيصالات | يدير حالة بيكون (تحتوي على معلومات الإجماع والتنفيذ) | يتطلب تخزين 32 ETH |
| ينشئ حمولة التنفيذ | يتتبع العشوائية المتراكمة في RANDAO (خوارزمية توفر عشوائية يمكن التحقق منها لاختيار المُدَقِّق وعمليات الإجماع الأخرى) | يمكن أن يتعرض للاقتطاع |
| يعرض JSON-RPC API للتفاعل مع إيثيريوم | يتتبع التبرير والنهائية |
