وقت حظر البيتكوين

أنت تعلم: الوقت المتوقع بين كتلتين من Bitcoin هو في المتوسط \(10\) دقيقة. أنت الآن تجري معاملة Bitcoin مهمة وتنتظر بفارغ الصبر لمعرفة ما إذا كانت ستظهر في الكتلة التالية ومتى:

e50bfacc95975a4e7545d83d8954645f


نظرًا لأنك لم تتحقق من وقت اكتمال الكتلة السابقة ، فأنت تتوقع في الواقع متوسط \( \frac{t}{2} = \frac{10}{2} = 5 \) دقائق من وقت الانتظار. بعد انقضاء \(5\) دقائق طويلة ، تحقق من وقت اكتمال آخر كتلة بالفعل:

e50bfacc95975a4e7545d83d8954645f

تم الانتهاء من آخر كتلة بالفعل منذ \(7\) دقيقة. الآن بعد أن عرفت هذه المعلومات ، يتغير الوقت المتوقع من \(5\) دقيقة إلى إجمالي \(10\) دقيقة. هذا يعني: في حوالي \(3\) دقيقة من المحتمل أن تكون حتى الآن. أنت تصدر الأمر مرارًا وتكرارًا. و انتظر. بعد \(10\) دقائق أخرى تشعر أن هناك شيئًا ما خطأ.

ولكن بعد ذلك تتذكر ذلك انتظار مفارقة:

إذا كانت الحافلات تعمل كل \(t\) دقيقة في المتوسط ​​، فإن وقت الانتظار لوقت وصول عشوائي في محطة الحافلات لا يتوافق مع \(\frac{t}{2}\) دقيقة ، ولكن في حالة التوزيع الأسي مسافات \(t\) .

تكرارات كتلة البيتكوين هي عملية بواسون وبالتالي يتم توزيعها أضعافا مضاعفة. نظرًا لأن عمليات Poisson بلا ذاكرة ، فإن الكتلة التالية تكتمل أيضًا في \(10\) دقائق في المتوسط. هذا ينطبق دائمًا - بغض النظر عن المدة التي ننتظرها. تنطبق جودة انعدام الذاكرة على كل من الخلف والأمام في الوقت المناسب.

كيف يمكن أن يكون؟

للقيام بذلك ، فإننا نعتبر البيانين التاليين:

  • أ) متوسط ​​وقت الانتظار الفعلي بين كتلتين هو \(10\) دقيقة وليس \(20\) دقيقة.
  • ب) إذا تم اختيار نقطة زمنية عشوائية ، فإننا نتوقع أن تكون الكتلة السابقة \(10\) دقيقة في الماضي والكتلة التالية \(10\) دقيقة في المستقبل. لذلك يمكننا أن نتوقع فترة انتظار مقدارها \(20\) دقيقة بين الكتل.

نتحقق من كلا البيانين.

للقيام بذلك ، نقوم أولاً باستخراج البيانات ذات الصلة ، وتحديدًا الأوقات التي تم فيها إكمال الكتل ، إلى ملف TXT (يتم تنفيذه باستخدام عقدة كاملة تعمل محليًا بناءً على bitcoind ):

e50bfacc95975a4e7545d83d8954645f

يعطينا هذا الملف النصي التالي ، والذي نقوم الآن بمعالجته بشكل أكبر وتخزينه في /time.txt . يتم استخدام برنامج Rust التالي لهذا مع ملف /Cargo.toml:

e50bfacc95975a4e7545d83d8954645f

يحتوي الملف /src/main.rs على منطق الاختبار الفعلي:

e50bfacc95975a4e7545d83d8954645f

نقوم بتثبيت التبعيات ، وبناء البرنامج وبدء تشغيله:

e50bfacc95975a4e7545d83d8954645f

في الواقع ، كلتا العبارتين صحيحة عندما نحلل الناتج:

e50bfacc95975a4e7545d83d8954645f

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

عودة