الكتل
آخر تحديث للصفحة: 23 فبراير 2026
الكتل هي دفعات من المعاملات تحتوي على التجزئة (هاش) للبلوك السابق في السلسلة. هذا يربط الكتل ببعضها البعض (في سلسلة) لأن التجزئات (الهاش) تُشتق تشفيريًا من بيانات البلوك. هذا يمنع الاحتيال، لأن تغييرًا واحدًا في أي بلوك في التاريخ من شأنه أن يبطل جميع الكتل التالية حيث ستتغير جميع التجزئات اللاحقة وسيلاحظ ذلك كل من يقوم بتشغيل البلوك تشين.
المتطلبات الأساسية
الكتل هي موضوع مناسب جدًا للمبتدئين. ولكن لمساعدتك على فهم هذه الصفحة بشكل أفضل، نوصيك بقراءة الحسابات، والمعاملات، ومقدمة عن إيثريوم أولاً.
لماذا الكتل؟
لضمان أن جميع المشاركين في شبكة إيثريوم يحافظون على حالة متزامنة ويتفقون على التاريخ الدقيق للمعاملات، نقوم بتجميع المعاملات في كتل. هذا يعني أن العشرات (أو المئات) من المعاملات يتم الالتزام بها، والاتفاق عليها، ومزامنتها في وقت واحد.
مخطط مقتبس من Ethereum EVM illustrated (opens in a new tab)
من خلال المباعدة بين الالتزامات، نمنح جميع المشاركين في الشبكة وقتًا كافيًا للوصول إلى إجماع: على الرغم من أن طلبات المعاملات تحدث عشرات المرات في الثانية، إلا أن الكتل يتم إنشاؤها والالتزام بها على إيثريوم مرة واحدة فقط كل اثنتي عشرة ثانية.
كيف تعمل الكتل
للحفاظ على تاريخ المعاملات، يتم ترتيب الكتل بشكل صارم (كل بلوك جديد يتم إنشاؤه يحتوي على إشارة إلى البلوك الأصل الخاص به)، ويتم ترتيب المعاملات داخل الكتل بشكل صارم أيضًا. باستثناء الحالات النادرة، في أي وقت معين، يتفق جميع المشاركين في الشبكة على العدد الدقيق وتاريخ الكتل، ويعملون على تجميع طلبات المعاملات الحية الحالية في البلوك التالي.
بمجرد تجميع بلوك بواسطة مُدقِّق يتم اختياره عشوائيًا على الشبكة، يتم نشره إلى بقية الشبكة؛ تضيف جميع العقد هذا البلوك إلى نهاية البلوك تشين الخاص بها، ويتم اختيار مُدقِّق جديد لإنشاء البلوك التالي. عملية تجميع البلوك الدقيقة وعملية الالتزام/الإجماع محددة حاليًا بواسطة بروتوكول "إثبات الحصة" الخاص بإيثريوم.
بروتوكول إثبات الحصة
إثبات الحصة يعني ما يلي:
- يجب على العقد المدققة تحصيص 32 ETH في عقد الإيداع كضمان ضد السلوك السيئ. هذا يساعد في حماية الشبكة لأن النشاط غير النزيه الذي يمكن إثباته يؤدي إلى تدمير جزء من هذا التحصيص أو كله.
- في كل فترة زمنية (متباعدة باثنتي عشرة ثانية) يتم اختيار مُدقِّق عشوائيًا ليكون مقترح الكتلة. يقومون بتجميع المعاملات معًا، وتنفيذها وتحديد 'حالة' جديدة. يقومون بتغليف هذه المعلومات في بلوك وتمريرها إلى مدقّقون آخرين.
- يقوم المدقّقون الآخرون الذين يسمعون عن البلوك الجديد بإعادة تنفيذ المعاملات للتأكد من موافقتهم على التغيير المقترح على الحالة العالمية. بافتراض أن البلوك صالح، فإنهم يضيفونه إلى قاعدة البيانات الخاصة بهم.
- إذا سمع مُدقِّق عن كتلتين متعارضتين لنفس الفترة الزمنية، فإنه يستخدم خوارزمية اختيار الانقسام الخاصة به لاختيار الكتلة المدعومة بأكبر قدر من ETH المحصصة.
ماذا يوجد في البلوك؟
هناك الكثير من المعلومات الواردة داخل البلوك. في أعلى مستوى، يحتوي البلوك على الحقول التالية:
| الحقل | الوصف |
|---|---|
slot | الفترة الزمنية التي ينتمي إليها البلوك |
proposer_index | معرف المُدقِّق الذي يقترح البلوك |
parent_root | التجزئة (هاش) للبلوك السابق |
state_root | التجزئة الجذرية لكائن الحالة |
body | كائن يحتوي على عدة حقول، كما هو موضح أدناه |
يحتوي body (جسم) البلوك على عدة حقول خاصة به:
| الحقل | الوصف |
|---|---|
randao_reveal | قيمة تُستخدم لاختيار مقترح الكتلة التالي |
eth1_data | معلومات حول عقد الإيداع |
graffiti | بيانات عشوائية تُستخدم لوضع علامات على الكتل |
proposer_slashings | قائمة المدقّقين الذين ستُطبق عليهم العقوبة |
attester_slashings | قائمة المقرين الذين ستُطبق عليهم العقوبة |
attestations | قائمة الإقرارات المقدمة ضد الفترات الزمنية السابقة |
deposits | قائمة الإيداعات الجديدة في عقد الإيداع |
voluntary_exits | قائمة المدقّقين الذين يغادرون الشبكة |
sync_aggregate | مجموعة فرعية من المدقّقين تُستخدم لخدمة العملاء الخفيفين |
execution_payload | المعاملات الممررة من عميل التنفيذ |
يحتوي حقل attestations على قائمة بجميع الإقرارات في البلوك. للإقرارات نوع بيانات خاص بها يحتوي على عدة أجزاء من البيانات. يحتوي كل إقرار على:
| الحقل | الوصف |
|---|---|
aggregation_bits | قائمة توضح المدقّقين الذين شاركوا في هذا الإقرار |
data | حاوية بها حقول فرعية متعددة |
signature | التوقيع المجمع لمجموعة من المدقّقين مقابل جزء data |
يحتوي حقل data في attestation على ما يلي:
| الحقل | الوصف |
|---|---|
slot | الفترة الزمنية التي يتعلق بها الإقرار |
index | مؤشرات المدقّقين المقرين |
beacon_block_root | التجزئة الجذرية لبلوك المنارة (Beacon block) الذي يُعتبر رأس السلسلة |
source | آخر نقطة تحقق مبررة |
target | أحدث بلوك لحدود العصر |
يؤدي تنفيذ المعاملات في execution_payload إلى تحديث الحالة العالمية. يعيد جميع العملاء تنفيذ المعاملات في execution_payload للتأكد من أن الحالة الجديدة تتطابق مع تلك الموجودة في حقل state_root للبلوك الجديد. هكذا يمكن للعملاء معرفة أن البلوك الجديد صالح وآمن لإضافته إلى البلوك تشين الخاص بهم. execution payload نفسه هو كائن يحتوي على عدة حقول. يوجد أيضًا execution_payload_header يحتوي على معلومات ملخصة مهمة حول بيانات التنفيذ. يتم تنظيم هياكل البيانات هذه على النحو التالي:
يحتوي execution_payload_header على الحقول التالية:
| الحقل | الوصف |
|---|---|
parent_hash | التجزئة (هاش) للبلوك الأصل |
fee_recipient | عنوان الحساب لدفع رسوم المعاملة إليه |
state_root | التجزئة الجذرية للحالة العالمية بعد تطبيق التغييرات في هذا البلوك |
receipts_root | التجزئة (هاش) لشجرة إيصالات المعاملات |
logs_bloom | هيكل بيانات يحتوي على سجلات الأحداث |
prev_randao | قيمة تُستخدم في الاختيار العشوائي للمُدقِّق |
block_number | رقم البلوك الحالي |
gas_limit | الحد الأقصى للغاز المسموح به في هذا البلوك |
gas_used | الكمية الفعلية من الغاز المستخدمة في هذا البلوك |
timestamp | وقت البلوك |
extra_data | بيانات إضافية عشوائية كبايتات خام |
base_fee_per_gas | قيمة الرسوم الأساسية |
block_hash | التجزئة (هاش) لبلوك التنفيذ |
transactions_root | التجزئة الجذرية للمعاملات في الحمولة |
withdrawal_root | التجزئة الجذرية للسحوبات في الحمولة |
يحتوي execution_payload نفسه على ما يلي (لاحظ أن هذا مطابق للترويسة باستثناء أنه بدلاً من التجزئة الجذرية للمعاملات، فإنه يتضمن القائمة الفعلية للمعاملات ومعلومات السحب):
| الحقل | الوصف |
|---|---|
parent_hash | التجزئة (هاش) للبلوك الأصل |
fee_recipient | عنوان الحساب لدفع رسوم المعاملة إليه |
state_root | التجزئة الجذرية للحالة العالمية بعد تطبيق التغييرات في هذا البلوك |
receipts_root | التجزئة (هاش) لشجرة إيصالات المعاملات |
logs_bloom | هيكل بيانات يحتوي على سجلات الأحداث |
prev_randao | قيمة تُستخدم في الاختيار العشوائي للمُدقِّق |
block_number | رقم البلوك الحالي |
gas_limit | الحد الأقصى للغاز المسموح به في هذا البلوك |
gas_used | الكمية الفعلية من الغاز المستخدمة في هذا البلوك |
timestamp | وقت البلوك |
extra_data | بيانات إضافية عشوائية كبايتات خام |
base_fee_per_gas | قيمة الرسوم الأساسية |
block_hash | التجزئة (هاش) لبلوك التنفيذ |
transactions | قائمة المعاملات المراد تنفيذها |
withdrawals | قائمة كائنات السحب |
تحتوي قائمة withdrawals على كائنات withdrawal منظمة بالطريقة التالية:
| الحقل | الوصف |
|---|---|
address | عنوان الحساب الذي قام بالسحب |
amount | مبلغ السحب |
index | قيمة مؤشر السحب |
validatorIndex | قيمة مؤشر المُدقِّق |
وقت البلوك
يشير وقت البلوك إلى الوقت الذي يفصل بين الكتل. في إيثريوم، يتم تقسيم الوقت إلى وحدات مدتها اثنتا عشرة ثانية تسمى 'فترات زمنية' (slots). في كل فترة زمنية، يتم اختيار مُدقِّق واحد لاقتراح بلوك. بافتراض أن جميع المدقّقين متصلون بالإنترنت ويعملون بكامل طاقتهم، سيكون هناك بلوك في كل فترة زمنية، مما يعني أن وقت البلوك هو 12 ثانية. ومع ذلك، في بعض الأحيان قد يكون المدقّقون غير متصلين بالإنترنت عند استدعائهم لاقتراح بلوك، مما يعني أن الفترات الزمنية يمكن أن تظل فارغة في بعض الأحيان.
يختلف هذا التنفيذ عن الأنظمة القائمة على إثبات العمل حيث تكون أوقات الكتل احتمالية ويتم ضبطها بواسطة صعوبة التعدين المستهدفة للبروتوكول. يُعد متوسط وقت البلوك (opens in a new tab) في إيثريوم مثالاً مثاليًا على ذلك حيث يمكن استنتاج الانتقال من إثبات العمل إلى إثبات الحصة بوضوح بناءً على اتساق وقت البلوك الجديد البالغ 12 ثانية.
حجم البلوك
ملاحظة أخيرة مهمة هي أن الكتل نفسها محدودة الحجم. كل بلوك له حجم مستهدف يبلغ 30 مليون غاز ولكن حجم الكتل سيزداد أو ينقص وفقًا لمتطلبات الشبكة، حتى يصل إلى حد البلوك البالغ 60 مليون غاز (ضعف حجم البلوك المستهدف). يمكن تعديل حد الغاز للبلوك صعودًا أو هبوطًا بمعامل 1/1024 من حد الغاز للبلوك السابق. نتيجة لذلك، يمكن للمدقّقين تغيير حد الغاز للبلوك من خلال الإجماع. يجب أن يكون إجمالي كمية الغاز المستهلكة بواسطة جميع المعاملات في البلوك أقل من حد الغاز للبلوك. هذا مهم لأنه يضمن عدم إمكانية أن تكون الكتل كبيرة بشكل عشوائي. إذا كان من الممكن أن تكون الكتل كبيرة بشكل عشوائي، فإن العقد الكاملة الأقل أداءً ستتوقف تدريجيًا عن القدرة على مواكبة الشبكة بسبب متطلبات المساحة والسرعة. كلما كان البلوك أكبر، زادت قوة الحوسبة المطلوبة لمعالجتها في الوقت المناسب للفترة الزمنية التالية. هذه قوة مركزية، يتم مقاومتها عن طريق وضع حد أقصى لأحجام الكتل.
قراءة إضافية
هل تعرف موردًا مجتمعيًا ساعدك؟ قم بتعديل هذه الصفحة وأضفه!