شجرة Merkle هي طريقة لهيكلة البيانات تسمح بالتحقق من مجموعة كبيرة من المعلومات للتأكد من دقتها بسرعة وكفاءة عالية. ينتج عن كل شجرة Merkle سلسلة واحدة من البيانات، تُعرف باسم جذر Merkle. باستخدام جذر Merkle، بالإضافة إلى بعض أجزاء البيانات الأخرى، يمكن لأي كمبيوتر التحقق بكفاءة من جميع الإدخالات الأخرى في شجرة Merkle. في تقنية بلوكتشين، هذه الإدخالات هي أرقام تعريف المعاملات.
إذا كنت منخرطًا في عالم بلوكتشين، فربما تكون قد صادفت عبارة «شجرة ميركل» من قبل. على الرغم من أن أشجار ميركل ليست مفهومًا على نطاق واسع، إلا أنها ليست معقدة للغاية. سيشرح هذا المنشور أشجار Merkle بلغة إنجليزية بسيطة ويساعدك على فهم كيفية جعل تقنية blockchain ممكنة.
بدأت قصة Merkle Trees في عام 1979 مع رجل يدعى رالف ميركل. أثناء دراستها العليا في جامعة ستانفورد، كتبت ميركل ورقة أكاديمية بعنوان «توقيع رقمي معتمد». في هذا المقال، وصفت ميركل طريقة لإنشاء التوقيعات الرقمية وأنشأت طريقة جديدة وفعالة للغاية لإنشاء براهين التشفير. بعبارة أخرى، صمم عملية للتحقق من البيانات التي من شأنها أن تسمح لأجهزة الكمبيوتر بأداء عملها بشكل أسرع بكثير من أي وقت مضى.
أطلق ميركل على فكرته اسم «توقيعات الشجرة» أو «مصادقة الشجرة». في الوقت الحاضر، تُعرف هذه الفكرة باسم شجرة ميركل، التي سميت باسم المخترع.
ليس من قبيل المبالغة القول إن Merkle Trees أحدثت ثورة في عالم التشفير، وبالتالي الطريقة التي تعمل بها بروتوكولات الكمبيوتر المشفرة. في الواقع، تم ذكر Merkle Trees مرارًا وتكرارًا في مقال ساتوشي ناكاموتو لعام 2008 الذي قدم بيتكوين إلى العالم. يتم استخدامها على نطاق واسع في بروتوكول Bitcoin.
إذن، ما هي شجرة ميركل بالضبط؟ دعونا نكتشف ذلك.
أولاً، من المهم فهم مفهوم دالة التجزئة المشفرة. وبعبارة بسيطة، فإن دوال الهاش هي دوال رياضية لا رجعة فيها تأخذ مدخلات بأي طول - من حرف واحد إلى نص مجموعة كاملة من الموسوعات - وتنتج مخرجًا عشوائيًا بطول ثابت. ونظرًا لأن المخرجات تظهر بشكل عشوائي وذات طول ثابت، فإن المهاجم ليس لديه أي أدلة حول نوع الإدخال الذي أنشأ مخرجًا محددًا. تعتبر وظائف Hash حتمية أيضًا، لذا فإن نفس الإدخال سينتج دائمًا نفس الإخراج. أخيرًا، لا يمكن التراجع عن وظائف التجزئة، لذلك لا توجد طريقة على الإطلاق للتأكد من المدخلات من معرفة المخرجات وحدها.
تعمل كل هذه الخصائص على تمكين وظائف التجزئة من إنشاء بصمات إلكترونية لمدخل معين. وباستخدام وظائف الهاش، تقوم شبكات بلوكتشين بإنشاء تجزئة مشفرة - بصمة إلكترونية - لكل معاملة. يُطلق على الهاش المشفر للمعاملة ببساطة اسم معرف المعاملة. بالنسبة لكل بروتوكول بلوكشين تقريبًا، يكون معرف كل معاملة عبارة عن سلسلة من البيانات الأبجدية الرقمية المكونة من 64 حرفًا (256 بت).
عندما تفكر في أن سلاسل الكتل تتكون عادةً من مئات الآلاف من الكتل، حيث تحتوي كل كتلة على ما يصل إلى عدة آلاف من المعاملات، يمكنك أن تتخيل مدى السرعة التي قد يصبح بها التحقق من المعاملات أمرًا صعبًا من الناحية الحسابية. على هذا النحو، من الأفضل استخدام أقل قدر ممكن من البيانات عند معالجة المعاملات والتحقق منها. هذا يقلل من أوقات معالجة وحدة المعالجة المركزية مع ضمان أعلى مستوى من الأمان.
حسنًا، هذا بالضبط ما تفعله ميركل تريز. بكل بساطة، تأخذ Merkle Trees عددًا كبيرًا من معرفات المعاملات، وتقوم بتنظيمها بطريقة محددة، وتستخدم وظائف التجزئة المشفرة لاشتقاق سلسلة أبجدية رقمية واحدة مكونة من 64 حرفًا تعمل كبصمة إلكترونية لكامل مجموعة البيانات.
هذه السلسلة من البيانات، المسماة Merkle Root، مهمة للغاية لأنها تسمح لأي جهاز كمبيوتر بالتحقق بسرعة من حدوث معاملة معينة على كتلة معينة بأكبر قدر ممكن من الكفاءة.
تسمى السلسلة المفردة ذات 256 بت التي تنتجها شجرة ميركل بـ Merkle Root. تحتوي كل كتلة في البلوكشين على كتلة واحدة بالضبط. وكما ذكرنا للتو، يعد Merkle Root جزءًا مهمًا من البيانات لأنه يسمح لأجهزة الكمبيوتر بالتحقق من المعلومات بسرعة وكفاءة مذهلة.
دعونا نتعمق قليلاً. كيف يتم إنتاج جذر ميركل؟ الخطوة الأولى هي تنظيم جميع مدخلات البيانات التي، في هذه الحالة، هي معرفات المعاملات. تقوم Merkle Trees، حسب التصميم، دائمًا بتجميع جميع المدخلات في أزواج. إذا كان هناك عدد فردي من المدخلات، يتم نسخ الإدخال الأخير ثم إقرانه مع نفسه. وينطبق هذا على جميع معرفات المعاملات المكتوبة على كتلة من البلوكشين.
على سبيل المثال، لنفترض أن الكتلة الواحدة تحتوي على إجمالي 512 معاملة. ستبدأ شجرة Merkle بتجميع معرفات المعاملات الـ 512 هذه في 256 زوجًا. بعد ذلك، ستخضع تلك الأزواج الـ 256 من معرفات المعاملات لعملية رياضية - وظيفة التجزئة أو خوارزمية التجزئة، كما يطلق عليها أحيانًا - وسيكون لدينا 256 تجزئة تشفير جديدة مكونة من 64 حرفًا.
تحدث نفس العملية بالضبط مرة أخرى. سيتم اقتران هذه التجزئات الجديدة البالغ عددها 256 وحدة وتحويلها إلى 128 تجزئة. يتم تكرار العملية، مما يؤدي إلى خفض عدد التجزئات إلى النصف في كل مرة، حتى تبقى تجزئة واحدة فقط. هذا الهاش الوحيد هو جذر ميركل الخاص بنا.
لتوضيح هذا المفهوم، دعونا نلقي نظرة على مثال بسيط جدًا لشجرة Merkle. تخيل أنه تم إجراء 8 معاملات على كتلة واحدة معينة. في الواقع، يبلغ طول معرفات المعاملات 64 حرفًا، ولكن من أجل البساطة، دعنا نتظاهر بأنها تتكون من 8 أحرف فقط. لتسهيل الأمور، دعنا نستخدم الأرقام فقط (ونتجاهل الحروف تمامًا).
لذلك، في هذا المثال، ستكون معرفات المعاملات الثمانية الخاصة بنا:
لنفترض الآن أن طريقة تجزئة معرفات المعاملات معًا هي أخذ الأرقام الأولى والثالثة والخامسة والسابعة من كل من المعرفين اللذين يتم دمجهما، ثم ببساطة دفع هذه الأرقام معًا لتشكيل رمز جديد مكون من 8 أرقام.
بالطبع، في الواقع، الرياضيات وراء خوارزميات التجزئة أكثر تعقيدًا بكثير من هذا. ولكن بالنسبة لهذا العرض البسيط، سيكون هذا النظام الأولي كافياً.
هذا ما ستبدو عليه شجرة Merkle الخاصة بنا:
لاحظ أن عدد الرموز يتم قطعه إلى النصف في كل خطوة أسفل شجرة Merkle. نبدأ بـ 8 معرفات للمعاملات، وبعد 3 خطوات فقط، ينتهي بنا الأمر برمز واحد - Merkle Root. في هذا المثال، فإن Merkle Root الخاص بنا هو الكود الموجود في المربع السفلي: 12345678.
الفائدة الأساسية لـ Merkle Trees هي أنها تسمح بالتحقق السريع للغاية من البيانات. إذا أردنا التحقق من صحة معرف معاملة واحد، فلن نحتاج إلى التحقق مرة أخرى من كل معاملة على الكتلة. بدلاً من ذلك، سنحتاج فقط إلى التحقق من هذا «الفرع» المحدد لشجرة ميركل الخاصة بنا.
لنفترض أننا نريد التحقق من صحة معرف المعاملة في مثالنا الحالي. يقول بوب إنه دفع لأليس مبلغًا معينًا من بيتكوين ويخبرنا أن معرف المعاملة هو 88888888. كما أنه يرسل لنا ثلاث تجزئات: 77777777 و55556666 و11223344. هذه هي جميع المعلومات التي يجب إرسالها أو استلامها للتحقق من دفع Bob إلى Alice.
هذه التجزئات الثلاثة، إلى جانب معرف المعاملة المعني وميركل روت لهذه الكتلة المحددة، هي البيانات الوحيدة اللازمة للتحقق من دفع بوب إلى أليس. هذه بيانات أقل بكثير مما هو مطلوب للتحقق من شجرة Merkle بالكامل. ونتيجة لذلك، أصبحت عملية التحقق أسرع بكثير وأكثر كفاءة للجميع.
إليك كيفية عملها. لدينا بالفعل Merkle Root الخاص بالكتلة، لذلك لا يحتاج بوب إلى إرسال ذلك إلينا. يرسل لنا معرف المعاملة الخاص به والتجزئات الثلاثة الإضافية التي ذكرناها أعلاه. كما أنه يرسل القليل من المعلومات حول الترتيب والموضع الذي سيتم فيه استخدام التجزئات. الآن، كل ما علينا فعله هو تشغيل خوارزمية التجزئة على مجموعة البيانات التي قدمها بوب.
نبدأ بتجزئة الكود الأول 77777777 بمعرف المعاملة 88888888، والذي يعطينا النتيجة 77778888. لم يرسل لنا بوب هذا الرمز ولكنه لم يكن بحاجة إلى ذلك لأننا نستخدم نفس خوارزمية التجزئة التي يستخدمها. لذلك، نتلقى نفس النتائج بالضبط.
ثم نأخذ الرمز الثاني الذي أرسله بوب إلينا، 55556666، ونقوم بتجزئته باستخدام الكود الجديد 77778888 الذي اشتقناه للتو. هذا، بالطبع، ينتج الرقم 55667788.
أخيرًا، قمنا بتجزئة الكود الثالث الذي قدمه لنا بوب، 11223344، مع الرمز الجديد الآخر الذي تلقيناه، 55667788، وننتهي بـ Merkle Root الصحيح: 12345678.
لاحظ أننا نحتاج فقط إلى 3 رموز من Bob وكان علينا فقط تشغيل خوارزمية التجزئة ثلاث مرات لنرى أن معاملة Bob صالحة. هذا يعني أن جهاز الكمبيوتر الخاص بنا قد أنجز أقل من نصف العمل المطلوب للتحقق من شجرة Merkle بالكامل. يحتوي مخطط Merkle Tree الأصلي على 15 رقمًا ويجب تشغيل خوارزمية التجزئة 7 مرات. لكن أكثر من نصف تلك الشجرة ليس ضروريًا للتحقق من معاملة بوب!
هذا الإجراء كافٍ للتحقق من أن بوب قد دفع، في الواقع، لأليس هذا المبلغ المحدد من البيتكوين لأننا اشتقنا أرقامًا، عند تجزئتها مع الرموز الأخرى التي أرسلها بوب إلينا، أنتجت نفس Merkle Root الذي كنا نعلم بالفعل أنه صحيح لهذه الكتلة المعينة.
لا يمكن لبوب تزييف معاملة لأن ذلك سيتطلب العثور على معرف معاملة مزيف ومجموعة إضافية من الرموز المزيفة التي، عند وضعها من خلال وظيفة التجزئة، ستنتج Merkle Root الحقيقي. فرص حدوث ذلك صغيرة جدًا لدرجة أنه يمكننا القول بثقة أنه مستحيل.
في هذا المثال البسيط، قد لا تبدو وفورات الطاقة الحاسوبية كبيرة. ومع ذلك، عندما تفكر في أن الكتل في بلوكتشين قد تحتوي على عدة آلاف من المعاملات، فمن السهل أن ترى كيف تزيد Merkle Trees من الكفاءة بشكل كبير.
باختصار، هذه هي الفائدة الرئيسية لشجرة ميركل. إنه يسمح لأجهزة الكمبيوتر بالتحقق من المعلومات بكفاءة عالية وببيانات أقل بكثير مما هو مطلوب بدون Merkle Tree.
تعتبر Merkle Trees أيضًا المفهوم الأساسي في حل منصة Komodo لمشكلة قابلية التوسع في blockchain. يتيح حل التوسع الخاص بـ Komodo إمكانية التشغيل البيني الكامل لبلوكتشين وسيسمح لشركة Komodo بمعالجة المعاملات بشكل أسرع من أي خدمة معالجة دفع أخرى على هذا الكوكب. حاليًا، تقوم تقنية التوسع الجديدة من Komodo بمعالجة أكثر من 20,000 معاملة في الثانية في بيئة اختبار.
شجرة Merkle هي طريقة لهيكلة البيانات تسمح بالتحقق من مجموعة كبيرة من المعلومات للتأكد من دقتها بسرعة وكفاءة عالية. ينتج عن كل شجرة Merkle سلسلة واحدة من البيانات، تُعرف باسم جذر Merkle. باستخدام جذر Merkle، بالإضافة إلى بعض أجزاء البيانات الأخرى، يمكن لأي كمبيوتر التحقق بكفاءة من جميع الإدخالات الأخرى في شجرة Merkle. في تقنية بلوكتشين، هذه الإدخالات هي أرقام تعريف المعاملات.
إذا كنت منخرطًا في عالم بلوكتشين، فربما تكون قد صادفت عبارة «شجرة ميركل» من قبل. على الرغم من أن أشجار ميركل ليست مفهومًا على نطاق واسع، إلا أنها ليست معقدة للغاية. سيشرح هذا المنشور أشجار Merkle بلغة إنجليزية بسيطة ويساعدك على فهم كيفية جعل تقنية blockchain ممكنة.
بدأت قصة Merkle Trees في عام 1979 مع رجل يدعى رالف ميركل. أثناء دراستها العليا في جامعة ستانفورد، كتبت ميركل ورقة أكاديمية بعنوان «توقيع رقمي معتمد». في هذا المقال، وصفت ميركل طريقة لإنشاء التوقيعات الرقمية وأنشأت طريقة جديدة وفعالة للغاية لإنشاء براهين التشفير. بعبارة أخرى، صمم عملية للتحقق من البيانات التي من شأنها أن تسمح لأجهزة الكمبيوتر بأداء عملها بشكل أسرع بكثير من أي وقت مضى.
أطلق ميركل على فكرته اسم «توقيعات الشجرة» أو «مصادقة الشجرة». في الوقت الحاضر، تُعرف هذه الفكرة باسم شجرة ميركل، التي سميت باسم المخترع.
ليس من قبيل المبالغة القول إن Merkle Trees أحدثت ثورة في عالم التشفير، وبالتالي الطريقة التي تعمل بها بروتوكولات الكمبيوتر المشفرة. في الواقع، تم ذكر Merkle Trees مرارًا وتكرارًا في مقال ساتوشي ناكاموتو لعام 2008 الذي قدم بيتكوين إلى العالم. يتم استخدامها على نطاق واسع في بروتوكول Bitcoin.
إذن، ما هي شجرة ميركل بالضبط؟ دعونا نكتشف ذلك.
أولاً، من المهم فهم مفهوم دالة التجزئة المشفرة. وبعبارة بسيطة، فإن دوال الهاش هي دوال رياضية لا رجعة فيها تأخذ مدخلات بأي طول - من حرف واحد إلى نص مجموعة كاملة من الموسوعات - وتنتج مخرجًا عشوائيًا بطول ثابت. ونظرًا لأن المخرجات تظهر بشكل عشوائي وذات طول ثابت، فإن المهاجم ليس لديه أي أدلة حول نوع الإدخال الذي أنشأ مخرجًا محددًا. تعتبر وظائف Hash حتمية أيضًا، لذا فإن نفس الإدخال سينتج دائمًا نفس الإخراج. أخيرًا، لا يمكن التراجع عن وظائف التجزئة، لذلك لا توجد طريقة على الإطلاق للتأكد من المدخلات من معرفة المخرجات وحدها.
تعمل كل هذه الخصائص على تمكين وظائف التجزئة من إنشاء بصمات إلكترونية لمدخل معين. وباستخدام وظائف الهاش، تقوم شبكات بلوكتشين بإنشاء تجزئة مشفرة - بصمة إلكترونية - لكل معاملة. يُطلق على الهاش المشفر للمعاملة ببساطة اسم معرف المعاملة. بالنسبة لكل بروتوكول بلوكشين تقريبًا، يكون معرف كل معاملة عبارة عن سلسلة من البيانات الأبجدية الرقمية المكونة من 64 حرفًا (256 بت).
عندما تفكر في أن سلاسل الكتل تتكون عادةً من مئات الآلاف من الكتل، حيث تحتوي كل كتلة على ما يصل إلى عدة آلاف من المعاملات، يمكنك أن تتخيل مدى السرعة التي قد يصبح بها التحقق من المعاملات أمرًا صعبًا من الناحية الحسابية. على هذا النحو، من الأفضل استخدام أقل قدر ممكن من البيانات عند معالجة المعاملات والتحقق منها. هذا يقلل من أوقات معالجة وحدة المعالجة المركزية مع ضمان أعلى مستوى من الأمان.
حسنًا، هذا بالضبط ما تفعله ميركل تريز. بكل بساطة، تأخذ Merkle Trees عددًا كبيرًا من معرفات المعاملات، وتقوم بتنظيمها بطريقة محددة، وتستخدم وظائف التجزئة المشفرة لاشتقاق سلسلة أبجدية رقمية واحدة مكونة من 64 حرفًا تعمل كبصمة إلكترونية لكامل مجموعة البيانات.
هذه السلسلة من البيانات، المسماة Merkle Root، مهمة للغاية لأنها تسمح لأي جهاز كمبيوتر بالتحقق بسرعة من حدوث معاملة معينة على كتلة معينة بأكبر قدر ممكن من الكفاءة.
تسمى السلسلة المفردة ذات 256 بت التي تنتجها شجرة ميركل بـ Merkle Root. تحتوي كل كتلة في البلوكشين على كتلة واحدة بالضبط. وكما ذكرنا للتو، يعد Merkle Root جزءًا مهمًا من البيانات لأنه يسمح لأجهزة الكمبيوتر بالتحقق من المعلومات بسرعة وكفاءة مذهلة.
دعونا نتعمق قليلاً. كيف يتم إنتاج جذر ميركل؟ الخطوة الأولى هي تنظيم جميع مدخلات البيانات التي، في هذه الحالة، هي معرفات المعاملات. تقوم Merkle Trees، حسب التصميم، دائمًا بتجميع جميع المدخلات في أزواج. إذا كان هناك عدد فردي من المدخلات، يتم نسخ الإدخال الأخير ثم إقرانه مع نفسه. وينطبق هذا على جميع معرفات المعاملات المكتوبة على كتلة من البلوكشين.
على سبيل المثال، لنفترض أن الكتلة الواحدة تحتوي على إجمالي 512 معاملة. ستبدأ شجرة Merkle بتجميع معرفات المعاملات الـ 512 هذه في 256 زوجًا. بعد ذلك، ستخضع تلك الأزواج الـ 256 من معرفات المعاملات لعملية رياضية - وظيفة التجزئة أو خوارزمية التجزئة، كما يطلق عليها أحيانًا - وسيكون لدينا 256 تجزئة تشفير جديدة مكونة من 64 حرفًا.
تحدث نفس العملية بالضبط مرة أخرى. سيتم اقتران هذه التجزئات الجديدة البالغ عددها 256 وحدة وتحويلها إلى 128 تجزئة. يتم تكرار العملية، مما يؤدي إلى خفض عدد التجزئات إلى النصف في كل مرة، حتى تبقى تجزئة واحدة فقط. هذا الهاش الوحيد هو جذر ميركل الخاص بنا.
لتوضيح هذا المفهوم، دعونا نلقي نظرة على مثال بسيط جدًا لشجرة Merkle. تخيل أنه تم إجراء 8 معاملات على كتلة واحدة معينة. في الواقع، يبلغ طول معرفات المعاملات 64 حرفًا، ولكن من أجل البساطة، دعنا نتظاهر بأنها تتكون من 8 أحرف فقط. لتسهيل الأمور، دعنا نستخدم الأرقام فقط (ونتجاهل الحروف تمامًا).
لذلك، في هذا المثال، ستكون معرفات المعاملات الثمانية الخاصة بنا:
لنفترض الآن أن طريقة تجزئة معرفات المعاملات معًا هي أخذ الأرقام الأولى والثالثة والخامسة والسابعة من كل من المعرفين اللذين يتم دمجهما، ثم ببساطة دفع هذه الأرقام معًا لتشكيل رمز جديد مكون من 8 أرقام.
بالطبع، في الواقع، الرياضيات وراء خوارزميات التجزئة أكثر تعقيدًا بكثير من هذا. ولكن بالنسبة لهذا العرض البسيط، سيكون هذا النظام الأولي كافياً.
هذا ما ستبدو عليه شجرة Merkle الخاصة بنا:
لاحظ أن عدد الرموز يتم قطعه إلى النصف في كل خطوة أسفل شجرة Merkle. نبدأ بـ 8 معرفات للمعاملات، وبعد 3 خطوات فقط، ينتهي بنا الأمر برمز واحد - Merkle Root. في هذا المثال، فإن Merkle Root الخاص بنا هو الكود الموجود في المربع السفلي: 12345678.
الفائدة الأساسية لـ Merkle Trees هي أنها تسمح بالتحقق السريع للغاية من البيانات. إذا أردنا التحقق من صحة معرف معاملة واحد، فلن نحتاج إلى التحقق مرة أخرى من كل معاملة على الكتلة. بدلاً من ذلك، سنحتاج فقط إلى التحقق من هذا «الفرع» المحدد لشجرة ميركل الخاصة بنا.
لنفترض أننا نريد التحقق من صحة معرف المعاملة في مثالنا الحالي. يقول بوب إنه دفع لأليس مبلغًا معينًا من بيتكوين ويخبرنا أن معرف المعاملة هو 88888888. كما أنه يرسل لنا ثلاث تجزئات: 77777777 و55556666 و11223344. هذه هي جميع المعلومات التي يجب إرسالها أو استلامها للتحقق من دفع Bob إلى Alice.
هذه التجزئات الثلاثة، إلى جانب معرف المعاملة المعني وميركل روت لهذه الكتلة المحددة، هي البيانات الوحيدة اللازمة للتحقق من دفع بوب إلى أليس. هذه بيانات أقل بكثير مما هو مطلوب للتحقق من شجرة Merkle بالكامل. ونتيجة لذلك، أصبحت عملية التحقق أسرع بكثير وأكثر كفاءة للجميع.
إليك كيفية عملها. لدينا بالفعل Merkle Root الخاص بالكتلة، لذلك لا يحتاج بوب إلى إرسال ذلك إلينا. يرسل لنا معرف المعاملة الخاص به والتجزئات الثلاثة الإضافية التي ذكرناها أعلاه. كما أنه يرسل القليل من المعلومات حول الترتيب والموضع الذي سيتم فيه استخدام التجزئات. الآن، كل ما علينا فعله هو تشغيل خوارزمية التجزئة على مجموعة البيانات التي قدمها بوب.
نبدأ بتجزئة الكود الأول 77777777 بمعرف المعاملة 88888888، والذي يعطينا النتيجة 77778888. لم يرسل لنا بوب هذا الرمز ولكنه لم يكن بحاجة إلى ذلك لأننا نستخدم نفس خوارزمية التجزئة التي يستخدمها. لذلك، نتلقى نفس النتائج بالضبط.
ثم نأخذ الرمز الثاني الذي أرسله بوب إلينا، 55556666، ونقوم بتجزئته باستخدام الكود الجديد 77778888 الذي اشتقناه للتو. هذا، بالطبع، ينتج الرقم 55667788.
أخيرًا، قمنا بتجزئة الكود الثالث الذي قدمه لنا بوب، 11223344، مع الرمز الجديد الآخر الذي تلقيناه، 55667788، وننتهي بـ Merkle Root الصحيح: 12345678.
لاحظ أننا نحتاج فقط إلى 3 رموز من Bob وكان علينا فقط تشغيل خوارزمية التجزئة ثلاث مرات لنرى أن معاملة Bob صالحة. هذا يعني أن جهاز الكمبيوتر الخاص بنا قد أنجز أقل من نصف العمل المطلوب للتحقق من شجرة Merkle بالكامل. يحتوي مخطط Merkle Tree الأصلي على 15 رقمًا ويجب تشغيل خوارزمية التجزئة 7 مرات. لكن أكثر من نصف تلك الشجرة ليس ضروريًا للتحقق من معاملة بوب!
هذا الإجراء كافٍ للتحقق من أن بوب قد دفع، في الواقع، لأليس هذا المبلغ المحدد من البيتكوين لأننا اشتقنا أرقامًا، عند تجزئتها مع الرموز الأخرى التي أرسلها بوب إلينا، أنتجت نفس Merkle Root الذي كنا نعلم بالفعل أنه صحيح لهذه الكتلة المعينة.
لا يمكن لبوب تزييف معاملة لأن ذلك سيتطلب العثور على معرف معاملة مزيف ومجموعة إضافية من الرموز المزيفة التي، عند وضعها من خلال وظيفة التجزئة، ستنتج Merkle Root الحقيقي. فرص حدوث ذلك صغيرة جدًا لدرجة أنه يمكننا القول بثقة أنه مستحيل.
في هذا المثال البسيط، قد لا تبدو وفورات الطاقة الحاسوبية كبيرة. ومع ذلك، عندما تفكر في أن الكتل في بلوكتشين قد تحتوي على عدة آلاف من المعاملات، فمن السهل أن ترى كيف تزيد Merkle Trees من الكفاءة بشكل كبير.
باختصار، هذه هي الفائدة الرئيسية لشجرة ميركل. إنه يسمح لأجهزة الكمبيوتر بالتحقق من المعلومات بكفاءة عالية وببيانات أقل بكثير مما هو مطلوب بدون Merkle Tree.
تعتبر Merkle Trees أيضًا المفهوم الأساسي في حل منصة Komodo لمشكلة قابلية التوسع في blockchain. يتيح حل التوسع الخاص بـ Komodo إمكانية التشغيل البيني الكامل لبلوكتشين وسيسمح لشركة Komodo بمعالجة المعاملات بشكل أسرع من أي خدمة معالجة دفع أخرى على هذا الكوكب. حاليًا، تقوم تقنية التوسع الجديدة من Komodo بمعالجة أكثر من 20,000 معاملة في الثانية في بيئة اختبار.