आप जानते हैं: दो बिटकॉइन ब्लॉकों के बीच अपेक्षित समय औसतन \(10\) मिनट है। अब आप एक महत्वपूर्ण बिटकॉइन लेनदेन कर रहे हैं और यह देखने के लिए बेसब्री से इंतजार कर रहे हैं कि यह अगले ब्लॉक में कब और कब दिखाई देता है:
e50bfacc95975a4e7545d83d8954645f
चूंकि आपने पिछले ब्लॉक के पूरा होने पर जांच नहीं की है, आप वास्तव में प्रतीक्षा समय के औसत \( \frac{t}{2} = \frac{10}{2} = 5 \) मिनट की अपेक्षा करते हैं। \(5\) लंबे मिनट बीत जाने के बाद, जांचें कि आखिरी ब्लॉक वास्तव में कब पूरा हुआ था:
e50bfacc95975a4e7545d83d8954645f
अंतिम ब्लॉक \(7\) मिनट पहले ही पूरा हो चुका था। अब जब आप इस जानकारी को जानते हैं, तो अपेक्षित समय \(5\) मिनट से कुल \(10\) मिनट में बदल जाता है। इसका मतलब है: लगभग \(3\) मिनट में यह शायद इतना दूर हो जाएगा। आप बार-बार आदेश जारी करते हैं। और प्रतीक्ष करो। एक और \(10\) मिनट के बाद आपको महसूस होता है कि कुछ गड़बड़ है।
लेकिन फिर आपको याद आता है कि प्रतीक्षारत विरोधाभास:
यदि बसें औसतन हर \(t\) मिनट चलती हैं, तो बस स्टॉप पर यादृच्छिक आगमन समय के लिए प्रतीक्षा समय \(\frac{t}{2}\) मिनट के अनुरूप नहीं होता है, लेकिन तेजी से वितरित होने के मामले में दूरी \(t\) ।
बिटकॉइन ब्लॉक की घटनाएं एक पॉइसन प्रक्रिया हैं और इसलिए तेजी से वितरित की जाती हैं। चूंकि पॉइसन प्रक्रियाएं स्मृतिहीन होती हैं, इसलिए अगला ब्लॉक भी औसतन \(10\) मिनट में पूरा होता है। यह हमेशा लागू होता है - चाहे हम कितनी भी प्रतीक्षा कर रहे हों। स्मृतिहीनता का गुण समय के साथ पीछे और आगे दोनों तरफ लागू होता है।
ऐसे कैसे हो सकता है?
ऐसा करने के लिए, हम निम्नलिखित दो कथनों पर विचार करते हैं::
- ए) दो ब्लॉकों के बीच वास्तविक औसत प्रतीक्षा समय \(10\) मिनट है, न कि \(20\) मिनट।
- बी) यदि समय में एक यादृच्छिक बिंदु चुना जाता है, तो हम उम्मीद करते हैं कि पिछला ब्लॉक \(10\) मिनट अतीत में और अगला ब्लॉक \(10\) मिनट भविष्य में होगा। इसलिए हम ब्लॉकों के बीच \(20\) मिनट के प्रतीक्षा समय की अपेक्षा कर सकते हैं।
हम दोनों बयानों की जांच करते हैं।
ऐसा करने के लिए, हम पहले प्रासंगिक डेटा निकालते हैं, विशेष रूप से जिस समय ब्लॉक पूरे हुए थे, एक TXT फ़ाइल में ( बिटकॉइन पर आधारित स्थानीय रूप से चलने वाले पूर्ण नोड के साथ किया जाना):
e50bfacc95975a4e7545d83d8954645f
यह हमें निम्नलिखित टेक्स्ट फाइल देता है, जिसे अब हम आगे प्रोसेस करते हैं और /time.txt में स्टोर करते हैं । इसके लिए /Cargo.toml फ़ाइल के साथ निम्न रस्ट प्रोग्राम का उपयोग किया जाता है:
e50bfacc95975a4e7545d83d8954645f
फ़ाइल /src/main.rs में वास्तविक परीक्षण तर्क है:
e50bfacc95975a4e7545d83d8954645f
हम निर्भरता स्थापित करते हैं, प्रोग्राम बनाते हैं और इसे शुरू करते हैं:
e50bfacc95975a4e7545d83d8954645f
वास्तव में, जब हम आउटपुट का विश्लेषण करते हैं तो दोनों कथन सत्य होते हैं:
e50bfacc95975a4e7545d83d8954645f
इसे सहज रूप से इस प्रकार भी समझाया जा सकता है: यदि ब्लॉक का समय काफी भिन्न होता है, तो विशिष्ट प्रतीक्षा समय भिन्न होता है - यदि हम समय पर एक यादृच्छिक बिंदु पर लेनदेन करते हैं, तो संभावना अधिक होती है कि हम एक अंतराल में समाप्त हो जाएंगे। प्रतीक्षा समय 10 मिनट से अधिक है क्योंकि ये अंतराल लंबे समय के कारण समयरेखा पर अधिक स्थान भी लेते हैं।