دالة تجزئة — ETH.BUILD
عرض توضيحي لدوال التجزئة التشفيرية باستخدام الأداة التعليمية ETH.BUILD. تعرف على كيفية عمل دوال التجزئة ولماذا تعتبر أساسية لنموذج الحسابات وسلامة البيانات في إيثيريوم.
Date published: 14 يناير 2021
برنامج تعليمي بواسطة أوستن غريفيث يوضح كيفية عمل دوال التجزئة التشفيرية باستخدام أداة البرمجة المرئية ETH.BUILD، ويغطي الحتمية، والمخرجات ذات الطول الثابت، والخصائص أحادية الاتجاه، وشجرة ميركل.
هذا النص هو نسخة يسهل الوصول إليها من النص الأصلي للفيديو (opens in a new tab) الذي نشره أوستن غريفيث. تم تعديله قليلاً لتسهيل القراءة.
مقدمة عن دوال التجزئة (0:00)
هذا هو الفيديو الأول من سلسلة تسمى ETH.BUILD. يمكنك الذهاب إلى eth.build لاستخدام هذه الأداة، ولكنها مجرد وسيلة للتجربة وأخذ فكرة عن كيفية عمل الأشياء عند البناء على إيثيريوم.
الوحدة الأولى التي سنلقي نظرة عليها هي دالة تجزئة. ما هي دالة التجزئة؟ حسناً، إنها تشبه بصمة الإصبع. لديك مُدخل — يمكن أن يكون أي شيء — ولكن في الوقت الحالي سنكتفي بالنص "hello world". على الجانب الآخر، سيكون لديك مُخرج، وهذا المُخرج عبارة عن سلسلة سداسية عشرية مكونة من 64 حرفاً. تظهر كـ 66 حرفاً بسبب البادئة "0x"، لكنها في الحقيقة سلسلة سداسية عشرية مكونة من 64 حرفاً.
تصور التجزئة كألوان (0:50)
إذا كنت تنظر إلى النظام السداسي العشري، فإنه يبدو وكأنه لون، وقد يكون من الأسهل وصف ما نراه هنا إذا جعلناه لوناً. لذا ما سنفعله هو أخذ أول ستة أحرف من أي سلسلة وعرضها كلون. إذا نظرنا إلى ذلك، نرى أنه لون أرجواني جميل.
دعونا نرى ما هو لون اسمي — ها نحن ذا، لون أخضر غابي جميل. الآن دعونا نعود إلى "hello world" — إنه ذلك اللون الأرجواني مرة أخرى.
الحتمية والمخرجات ذات الطول الثابت (1:38)
ما اكتشفناه للتو هو أنها حتمية. بشكل أساسي، مهما كان ما نضعه كمُدخل، سنحصل دائماً على نفس النتيجة على الجانب الآخر.
الخاصية الثانية هي أنه يمكنك إدخال أي شيء بأي حجم عشوائي. يمكنني الضغط بعشوائية على لوحة المفاتيح ورؤية اللون يتغير، لكن تلك السلسلة تبقى بطول 66 حرفاً. بغض النظر عما تضعه هنا — حتى لو كان ملفاً — يمكنني إسقاط هذا الملف لـ ليو، ابني، ووضعه كـ تجزئة والحصول على لون برتقالي جميل. ثم يمكنني إسقاط مستند نصي لقائمة كلمات BIP وسيكون لونه أزرق فاتح جميل. إذا أعدت ليو، خمن ما هو اللون الذي سيكون عليه؟ نحن نعلم أنه سيكون ذلك اللون البرتقالي. ستحصل على هذه البصمة الحتمية للشيء الذي أدخلته.
الخاصية أحادية الاتجاه (2:37)
الخاصية التالية الأكثر أهمية هي أنها أحادية الاتجاه. إذا أدخلت "hello world" مرة أخرى، فسنحصل على هذه الـ تجزئة "4717". إذا أخذنا تلك الـ تجزئة وأرسلناها إلى شخص ما وقلنا "هذه هي تجزئة سري — إذا تمكنت من تخمين سري، سأعطيك مائة دولار"، فلن يتمكنوا من الاقتراب حتى من الإجابة.
لنفترض أن الـ تجزئة تبدأ بـ "4717" وبدأوا في البحث ومحاولة العثور على تطابق. لا يمكنك مجرد تغيير أحرف صغيرة والاقتراب من النتيجة — إما أن تحصل عليها أو لا. عليك أساساً تخمينها باستخدام القوة الغاشمة. إذا حدث وخمنوا "hello world"، فسيحصلون على الإجابة، ولكن إذا لم يخمنوها، فلن يحصلوا عليها أبداً. لا توجد طريقة لمعرفة ما إذا كنت تقترب من الإجابة.
ستجد مع علم التشفير أنه قد يكون محبطاً في بعض الأحيان كمطور لأنه إما أن يعمل أو لا يعمل — لا تحصل على أي تلميحات حول ما إذا كنت تقترب من الإجابة. لكن هذا شيء جيد. هذه هي الخاصية التي نريدها في دالة تجزئة.
ملخص خصائص دالة التجزئة (3:43)
لذا لدينا: يمكن إدخال أي شيء بأي حجم في دالة تجزئة، وستخرج بصمة سداسية عشرية دقيقة مكونة من 64 حرفاً لماهية تلك البيانات. إنها حتمية. إنها أحادية الاتجاه — لا يمكنك العودة في الاتجاه المعاكس. من السهل جداً إنشاء تجزئة، ولكن من الصعب جداً تخمين سر الـ تجزئة.
شجرة ميركل ودمج التجزئات (4:06)
ما يمكننا فعله بهذا هو بعض الأشياء الرائعة حقاً، مثل شجرة ميركل. لدينا مدخلاتنا الثلاثة، ويمكننا ضمها معاً. يمكننا دمج كل تلك التجزئات ثم إجراء تجزئة للمزيج.
هذا اللون هنا — ذلك الأرجواني — يمثل الـ تجزئة لجميع هذه التجزئات. إذا قمت بتغيير "hello world" إلى "hello world one"، فإن ذلك اللون الأرجواني سيتغير. أي تغيير بسيط في أي من هذه المدخلات سيؤدي إلى تغيير الـ تجزئة النهائية. يمكنك جلب جميع أنواع البيانات بجميع أنواع الطرق المختلفة — حتى أن يكون لديك شجرة من التجزئات، شجرة ميركل — أو أن يكون لديك مجموعة من الكتل في صف واحد، وستعتمد هذه الـ تجزئة النهائية على كل هذه الأشياء. إذا تغير أي شيء صغير في أي مكان على طول الطريق، فإن الـ تجزئة النهائية ستتغير.
الخلاصة الرئيسية (5:53)
الخلاصة الرئيسية هي أن دالة تجزئة تشبه أساساً بصمة الإصبع. إذا كتبت شيئاً ما، فسوف تعطيني بشكل حتمي المُخرج الذي أتوقعه. هذه هي دالة تجزئة — مرحباً بك في ETH.BUILD. دعونا نصنع بعض الأشياء الرائعة ونتعلم الكثير على طول الطريق.