تخطي إلى المحتوى الرئيسي

سلسلة الكتل — ETH.BUILD

عرض توضيحي لكيفية عمل تعدين سلسلة الكتل، بما في ذلك كيفية ربط الكتل معًا، وكيف يؤمن إثبات العمل (PoW) سلاسل الكتل، وماذا يحدث عندما يحاول شخص ما التلاعب بالبيانات.

Date published: 14 يناير 2021

برنامج تعليمي بواسطة أوستن غريفيث يوضح كيفية عمل تعدين سلسلة الكتل باستخدام أداة البرمجة المرئية ETH.BUILD. يغطي أوستن إجماع إثبات العمل (PoW)، وربط الكتل، وصعوبة التعدين، ومكافآت الكتلة، وعدم قابلية السلسلة للتغيير.

هذا النص هو نسخة يسهل الوصول إليها من النص الأصلي للفيديو (opens in a new tab) الذي نشره أوستن غريفيث. تم تعديله قليلاً لتسهيل القراءة.

مشكلة التنسيق (0:00)

صباح الخير، جمعة ربطة عنق سعيدة! يركز ETH.BUILD هذا على سلسلة الكتل — وهو شيء رائع حقًا. نحن في قارب المهرج هذا، ونرتدي ربطة عنق بيتكوين الخاصة بنا من أجله. هيا بنا.

حتى الآن في المنهج الدراسي، مررنا بأزواج المفاتيح، والتجزئات، ودفاتر الأستاذ. ما وجدناه هو أنه إذا أردنا تبادل القيمة ذهابًا وإيابًا على شبكة موزعة — وليست مركزية — فسينتهي بنا الأمر بمواجهة مشاكل في التنسيق. ينتهي بنا الأمر بهذه المشكلة حيث لا يمكننا إيجاد إجماع بين الأطراف المختلفة لأنهم جميعًا يتلقون معاملات مختلفة في أوقات مختلفة. هناك الكثير من الطرق المختلفة لحل هذه المشكلة، ولكن لم يكن أي منها رائعًا حتى ظهر إثبات العمل (PoW).

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

الكتل والرقم الفريد (1:04)

لذا مع دفتر الأستاذ هذا، نقوم بضخ المعاملات من الشبكة. بدلاً من جعل كل مستخدم فردي يثبت عمله، سنقوم بتجريد إثبات العمل (PoW) في كتلة من المعاملات وندع مُعَدِّن يعمل على ذلك.

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

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

إثبات العمل (PoW) في الممارسة العملية (3:00)

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

تكلف دالة التجزئة وحدة المعالجة المركزية (CPU)، وهي مورد محدود. نحن نضع كل طاقة وحدة المعالجة المركزية لدينا في محاولة العثور على تجزئة بأصفار بادئة. بمجرد أن نفعل ذلك، يصبح لدينا كتلة صالحة — الكتلة مجمدة بشكل أساسي. أي معاملات كانت موجودة هناك في ذلك الوقت أصبحت في هذه الكتلة الآن، والجميع يحترمها، ويمكننا الانتقال إلى الكتلة التالية.

ربط الكتل معًا (3:56)

إليك الحيلة: نأخذ الكتلة القديمة ونربطها بالكتلة الجديدة. إذا نظرنا إلى البنية، فإن الكتلة الجديدة لا تحتوي على معاملات ورقم فريد فارغ، ولكن لها أصل يحتوي على معاملات. ستكون الكتلة السابقة جزءًا من الكتلة التالية، لذلك سيكون لدينا سلسلة كاملة.

نضع أحدث المعاملات من مجمع المعاملات ونعمل على إيجاد رقم فريد. تم تعدين الكتلة رقم اثنين — احتجنا إلى رقم فريد بقيمة عشرة لجعل هذه المعاملات صالحة. ثم نفعل الشيء نفسه: نربط الكتلة القديمة، ونحضر الكتلة الجديدة، ونضع أحدث المعاملات، ونعمل عليها مرة أخرى. بعد محاولات كافية وجدنا رقمًا فريدًا للكتلة الثالثة. الكتلة الرابعة — نفس العملية، ونستمر في المضي قدمًا.

صعوبة التعدين (5:02)

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

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

المُعَدِّن (6:46)

دعونا نلقي نظرة على ماهية المُعَدِّن. في مشكلة الجنرالات البيزنطيين، كان الجنرال الذي أراد "الهجوم عند الفجر" بحاجة إلى جنود. ما يحدث داخل كل جندي هو بالضبط ما نفعله هنا مع المُعَدِّن الخاص بنا — نحن نأخذ رسالة ورقمًا فريدًا ونلقيهما في دالة تجزئة بأسرع ما يمكن، في محاولة للحصول على تلك الأصفار البادئة. الأصفار البادئة هي شيء عشوائي اتفقنا عليه جميعًا — هذا عمل كافٍ لإثبات أنك جندي، أو أنه يمكنك شن حرب.

دعني أحضر مُعَدِّنًا وأفعل هذا بشكل أسرع قليلاً. سيقوم المُعَدِّن بنفس الشيء لكتلنا — يأخذ المعاملات القادمة من مجمع المعاملات، ويضخها في الكتلة، ويعمل عليها ببساطة حتى يجد تجزئة صالحة.

المُعَدِّن أكثر كفاءة قليلاً. إنه أكثر تركيزًا على التعدين. إنه يلقي التجزئات بشكل عشوائي — هذا بالضبط ما كان يفعله المُعَدِّن الخاص بنا من قبل، ولكن بشكل مجرد. يمكننا رؤيته يعمل في الخلفية، ويستمر في العمل على التجزئات. لقد وجدها — تم تعدين الكتلة السادسة.

الإنفاق المزدوج وانتشار الشبكة (10:00)

الآن تحدثنا عن مشكلة الإنفاق المزدوج هذه، وحتى مشكلة انتشار الشبكة. عندما يكون لدينا دفتر أستاذ وشبكة موزعة ويرسل شخص ما معاملة، فإنها تصل إلى أشخاص مختلفين في أوقات مختلفة. لذلك، يمكن أن يكون لدينا مُعَدِّنان على الشبكة يقومان بتعدين كتلة في نفس الوقت بالضبط، ولديهما معاملات مختلفة فيها.

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

مُعَدِّنون متعددون والإجماع (12:27)

دعني آخذ هذه الكتلة وأنقلها إلى هنا. ما أريده هو مُعَدِّنان مختلفان يعملان على نفس المشكلة، يستمعان نوعًا ما إلى نفس مجمع المعاملات ويتوصلان إلى كتل بشكل مستقل. لدينا مُعَدِّنان: مالوري ومايك. لقد قمت برفع الصعوبة إلى ثلاثة، وكلاهما يعمل على إيجاد تجزئة بثلاثة أصفار بادئة.

لذا وجدت مالوري كتلة أولاً! رائع. الآن ماذا يحدث — لأننا على شبكة موزعة، قد لا يعرف مايك حتى عن كتلة مالوري بعد. قد لا يزال يعمل على نسخته الخاصة. والآن وجد مايك واحدة أيضًا. لذلك لدينا مساران صالحان.

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

كوين بيس ومكافآت الكتلة (15:33)

عندما يقوم مُعَدِّن بتعدين كتلة، نقول: إليك جميع المعاملات التي نريدها، وإليك الرقم الفريد، وإليك الأصل — ولكننا سنقول أيضًا إليك الشخص الذي قام بتعدين تلك الكتلة. يُطلق عليها اسم كوين بيس (coinbase) — أعتقد أن هناك شركة تسمى بذلك الآن، لكن الأمر مختلف. سنطلق عليها ببساطة اسم "مُعَدِّن". لذا تتطلب كتلنا الآن حقل مُعَدِّن.

لذا وجد مايك الكتلة للتو، وسيحصل مايك أيضًا على قيمة عشرة من هذا. نحن بحاجة إلى تحفيز المُعَدِّنين للقيام بكل هذا العمل، أليس كذلك؟ إنهم ينفقون الأموال لشراء هذه الأجهزة لجعل الشبكة آمنة بشكل أساسي. ينفق هؤلاء المُعَدِّنون الأموال لتأمين الشبكة بكل قوة التجزئة الخاصة بهم — مع جميع المُعَدِّنين مجتمعين، ربما عشرات الآلاف. إنهم يدفعون أموالاً طائلة لبناء أجهزة تعمل على هذه التجزئات، ولتحفيزهم نمنحهم حصة تسمى مكافأة الكتلة عن كل كتلة يقومون بتعدينها.

مكافآت الكتلة والحوافز (16:52)

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

سيقوم مايك بإعداد كتلته كأصل ويبدأ العمل على الكتلة التالية. ستقوم مالوري بنفس الشيء. ويعود الأمر إلى من يختار جانب من على الشبكة. نظرًا لأننا لا نريد معاقبة الأشخاص الذين لديهم شبكات سيئة، فأنا متأكد تمامًا من أننا في إيثيريوم ندفع لكتل العم (uncle blocks) — وهي كتل صالحة لم تصل إلى أطول سلسلة — لأنها لا تزال تساعد في تأمين الشبكة.

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

الاستعلام عن سلسلة الكتل (18:30)

يمكننا التحدث إلى أي سلسلة هي الأطول. لم يصل مايك إلى سبعة بعد، لذا يمكننا أن نرى أن الارتفاع لا يزال ستة هنا. ويمكننا القيام بأشياء مثل الاستعلام عن أرصدة الأشخاص. لذا نضغط على الرصيد — ماذا نحصل؟ خمسة وأربعة وعشرون. لذا كانت هايدي تجلس على 524 أو أيًا كان الرمز المميز الأصلي لهذه السلسلة. يمكننا رؤية الرقم الفريد الخاص بها، ويمكننا القيام بكل ما يمكننا القيام به مع دفتر الأستاذ، ولكن الآن نحن نكدس الكتل وتلك الكتل تحتوي على معاملات.

لقد جردنا العمل من المستخدمين، الذين يرسلون الأموال فقط، إلى المُعَدِّنين، وقمنا بتحفيزهم من خلال منحهم مكافأة الكتلة هذه. سيكون هناك أيضًا مبلغ صغير يدفعه كل شخص لكل معاملة، لكننا سنصل إلى ذلك في حلقة لاحقة. لا نريد التحدث عن الغاز الآن، ولكن من المفيد أن نعرف أن هناك حافزًا ليس فقط لتعدين كتلة، ولكن لتعدين كتلة كاملة بها الكثير من المعاملات. لكن هذا حافز أصغر — سنصل إلى ذلك في النهاية.

عدم قابلية السلسلة للتغيير (19:51)

مع تعدين الكتل، تصبح أكثر أمانًا. دعني أوضح لك ما أعنيه. لذا قام مايك بتعدين كتلة، وكانت مالوري هنا تقوم بعرض توضيحي ولم تتمكن من تعدين كتلة. لذا الآن ستكون سلسلة مايك هي الأطول، وستنتشر عبر الشبكة. سيرى الجميع ذلك ويقولون: حسنًا، تحتوي هذه السلسلة على سبع كتل، وكلها صالحة — هذه هي السلسلة التي سنتبعها. يمكنك الحصول على تفرعات صلبة (hard forks)، وتفرعات مثيرة للجدل، حيث ستتغير القواعد التي نلعب بها وترغب مجموعات مختلفة من البشر في اتباع سلاسل مختلفة. أشياء رائعة.

حسنًا أخيرًا، إذا عدنا إلى الكتلة الثالثة وقمنا بتغيير شيء ما — تغيير أي تفصيل صغير — سأدخل هنا. هناك بعض المعاملات لفرانك. لنفترض أنه بدلاً من فرانك قمنا بتغييرها إلى إيف. الآن شاهد ما يحدث عندما أضغط على موافق: انظر إلى ذلك. لقد غيرت جزءًا صغيرًا جدًا من الكتلة الثالثة وفجأة تنهار السلسلة بأكملها. لم تعد صالحة. إذا قمت ببث ذلك عبر الشبكة، فسوف يسخر مني الناس ويطردونني.

لا يمكنك تغيير أي شيء بمجرد تعدين الكتلة إلا إذا عدت وقمت بإعادة تعدين الأشياء مع تغيرها. سأضطر بشكل أساسي إلى إعادة توصيل المُعَدِّن هنا ومحاولة الحصول على طاقة كافية للحاق بمايك طوال الطريق هنا بسبع كتل. سيكون الأمر صعبًا للغاية. كلما كانت الكتلة أعمق، زادت صعوبة التراجع عنها. حقيقة أن هذه الكتلة الثالثة هنا حيث أرسل كارلوس 84 إلى بوب — يمكن لبوب أن يكون آمنًا تمامًا مع العلم أنه، بعمق عدة كتل، فإن هذه الأموال موجودة بالتأكيد. لا توجد طريقة لحدوث بعض التفرعات المثيرة للجدل هنا — أنا في أمان. هذا ما نسميه النهائية.

ملخص (22:00)

بدلاً من وجود دفتر أستاذ ومشكلة الإجماع هذه، نستخدم إثبات العمل (PoW) للعمل على تجزئة للتحقق من صحة كتلة — و"صالحة" تعني عددًا عشوائيًا من الأصفار البادئة. سنظل نواجه مشكلات أثناء بناء سلسلة الكتل، حيث يمكن أن تصل الكتل المعدنة فعليًا إلى أماكن مختلفة في أوقات مختلفة. لذلك لدينا خوارزمية إجماع إضافية تقول: اتبع أطول سلسلة صالحة وتتبع مجموعة القواعد التي ترغب في المشاركة فيها.

حسنًا، جمعة ربطة عنق سعيدة! كانت هذه سلسلة الكتل على ETH.BUILD. سأحفظ هذا وأضعه هناك حتى تتمكن من الضغط على "تحميل" والحصول على سلسلة للعب بها. جمعة سعيدة!

هل كانت هذه الصفحة مفيدة؟