Գիտեք. Երկու Bitcoin բլոկների միջև սպասվող ժամանակը միջինում \(10\) րոպե է: Այժմ դուք կատարում եք Bitcoin-ի կարևոր գործարք և անհամբեր սպասում եք տեսնելու, թե արդյոք և երբ այն կհայտնվի հաջորդ բլոկում:
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-ում : Հետևյալ Rust ծրագիրը օգտագործվում է դրա համար /Cargo.toml ֆայլով:
e50bfacc95975a4e7545d83d8954645f
/src/main.rs ֆայլը պարունակում է իրական փորձարկման տրամաբանությունը:
e50bfacc95975a4e7545d83d8954645f
Մենք տեղադրում ենք կախվածությունները, կառուցում ենք ծրագիրը և սկսում ենք այն:
e50bfacc95975a4e7545d83d8954645f
Իրոք, երկու պնդումներն էլ ճշմարիտ են, երբ մենք վերլուծում ենք արդյունքը:
e50bfacc95975a4e7545d83d8954645f
Սա կարելի է նաև ինտուիտիվ կերպով բացատրել հետևյալ կերպ. Եթե արգելափակման ժամանակները զգալիորեն տարբերվում են, ապա սպասման հատուկ ժամանակը տատանվում է. եթե մենք գործարքն իրականացնում ենք պատահական ժամանակի մի կետում, ապա հավանականությունը մեծ է, որ մենք կհայտնվենք այնպիսի միջակայքում, որում սպասման ժամանակը 10 րոպեից ավելի է, քանի որ այս ընդմիջումներն ավելի շատ տեղ են գրավում ժամանակացույցի վրա՝ ավելի երկար ժամանակի պատճառով: