17 Tweets 31 reads Jan 23, 2023
هل تعلم أنه في يوم من الأيام كان سبلاي البتكوين #Bitcoin أكثر من 184 مليار عملة؟
ثريد 🧵
1~
في 15 أغسطس 2010 لاحظ Jeff Garzik أحد مطوري البتكوين وجود شيء غريب في الكتلة رقم 74,638.
في هذه الكتلة كان هناك مخرجين بقيمة 92.2 مليار بتكوين تم إرسالهم إلى عنوانين مختلفين.
bitcointalk.org
2~
الأمر آنذاك أشبه بالكارثة!
هناك شخص يمتلك أكثر من 184 مليار عملة #Bitcoin بينما من المفترض أن يكون سبلاي العملة محدودًا بعدد 21 مليون عملة!
هناك عدد من المشاكل الأمنية التي ظهرت في الأيام الأولى للبتكوين، لكن هذه المشكلة كانت كفيلة بالقضاء على البتكوين.
3~
بعد مناقشات بين المطورين على المدونة، قام أحد الأشخاص بإنشاء مقال يقترح فيه أن المشكلة في البتكوين هي ثغرة أمنية معروفة باسم Integer Overflow.
bitcointalk.org
4~
ثغرة Integer Overflow هي من الثغرات التي تؤدي إلى كوارث أمنية بسبب عدم وجود معرفة لنتيجة استغلال الثغرة.
معظم لغات البرمجة تقوم بتحديد مساحة الذاكرة التي يمكن تخزين الأعداد -كنوع بيانات- فيها.
مثلا أعداد بصيغة 32-Bit يمكن لذاكرتها تخزين أرقام غير سالبة من 0 حتى 4,294,967,295.
5~
أيضًا يمكن لنفس نوع البيانات تخزين الأرقام ذات الإشارة من نطاق 2147483648- حتى 2147483647.
إذا حاولنا القيام بهذه العملية الرياضية 2147483647 + 1 وحاولنا تخزين النتيجة تحدث مشكلة Integer Overflow وتكون النتيجة هكذا 2,147,483,648−.
6~
لكي تفهم الثغرة يجب أن تتذكر أن البتكوين يستخدم نظام Unspent Transaction Output (UTXO).
إذا كانت لديك في المحفظة 10 بتكوين (مُدخل) وأردت إرسال 1 بتكوين لمحفظة أخرى (مُخرج)، يتم سحب الرصيد بالكامل (10 عملات) لإرسال 1 بتكوين ثم يتم إعادة العملات المتبقية 9 لك.
7~
الذي حدث مع البتكوين أنه كان يقوم بعمل فحص أولي للتأكد من أن مخرجات المعاملة ليست سالبة. في هذه الحالة المخرجات كانت 92233720368.54277039 وبذلك مرت المعاملة من الفحص الأول دون مشاكل.
8~
الفحص الثاني كان يتم من خلال التأكد من أن المدخلات (الرقم المستخدم كان 0.50 #BTC) تستطيع دفع المخرجات (المبلغ المحوّل) 92233720368.54277039 إلى المحفظتين المحددتين.
المشكلة أن الفحص كان يتم من خلال التأكد من أن الرسوم ليست عددًا سالبًا عبر الطرح (المدخلات - المخرجات).
9~
في هذه الحالة عند جمع المخرجات:
92233720368.54277039 + 92233720368.54277039 تحدث مشكلة Integer Overflow بسبب حجم الناتج الضخم، ويصبح الناتج بالسالب:
184,467,440,737.09551616-
ماذا يحدث عندم يتم الفحص الثاني (المدخلات - المخرجات)؟
10~
يتم طرح رقم سالب من رقم موجب :
0.50 - (184,467,440,737.09551616-) يصبح لدينا رقم موجب، وبهذا تم تجاوز الفحص الثاني وأصبحت المعاملة صالحة وتم إنتاج 184,467,440,737 بتكوين مقسمين على معاملتين.
11~
بعد اكتشاف المشكلة ومرور 5 ساعات قام ساتوشي بمساعدة Gavin Andresen بطرح حل للمشكلة على المطورين، ثم أصدر تحديث للسوفتوير رقم 0.3.10 لترقيع الثغرة، وطلب من المعدنين الانتقال إلى الإصدار الأحدث.
يعني باختصار تم عمل Soft Fork لبلوكتشين البتكوين.
bitcointalk.org
12~
هذا التحديث لم يقتصر على مجرد ترقيع الثغرة، ولكن قام بشيء لا يعرفه 99.99% من المستثمرين في #البتكوين وهو أن ساتوشي قام بالتعديل على سجل البلوكتشين.
التحديث تضمن إعادة تعيين البلوكتشين إلى ما قبل البلوك الذي حدثت فيه الثغرة من أجل إزالة عملات البتكوين التي تم إنشائها.
13~
بمعنى أنه تم حذف جميع الكتل وكل المعاملات التي تمت قبل المعاملة التي حدث فيها الاختراق، وتم إعادة سجل البلوكتشين إلى آخر معاملة قبل ذلك.
بعد إصدار التحديث أصبح لدينا بلوكتشين بتكوين أصلية التي حدث فيها الاختراق، وبلوكتشين بتكوين معدّلة، وكلاهما يعمل بشكل متوازي.
14~
خلال الساعات التالية ازداد عدد المعدنين على البلوكتشين المعدّلة حتى فاق +50% وأصبحت بلوكتشين البتكوين المعدّلة هي البلوكتشين المسيطرة والتي ما زلنا نستخدمها حتى اللحظة.
15~
هذا الاختراق يبطل الكثير من أوهام المتعصبين للبتكوين لأن:
كود البتكوين تم اختراقه ✅
بلوكتشين البتكوين تم التعديل عليها ✅
تم إنشاء عملات بتكوين من لا شيء ✅
سبلاي البتكوين تجاوز 21 مليون عملة ✅
البتكوين هو مجرد كود برمجي قد يوجد به ثغرات أمنية يمكن أن تستغل بشكل خبيث.
16~
الشيء الغريب أن الشخص الذي استغل الثغرة لم يتصرف في العملات التي حصل عليها، بالرغم من أنه كان لديه ساعات لبيعها، وكانت منصة التداول MtGox تعمل في ذلك الوقت، وسعر البتكوين وقتها كان في حدود 0.40$.
إذا قام هذا الشخص بالبيع آنذاك؛ ربما لم نكن لنسمع عن العملات الرقمية مطلقًا.
17/17

Loading suggestions...