Ju e dini: Koha e pritshme midis dy blloqeve të Bitcoin është mesatarisht \(10\) minuta. Tani po bëni një transaksion të rëndësishëm të Bitcoin dhe po prisni me padurim për të parë nëse dhe kur do të shfaqet në bllokun tjetër:
e50bfacc95975a4e7545d83d8954645f
Meqenëse nuk e keni kontrolluar se kur është përfunduar blloku i mëparshëm, në fakt ju prisni një mesatare prej \( \frac{t}{2} = \frac{10}{2} = 5 \) minuta kohë pritjeje. Pasi të kenë kaluar \(5\) minuta të gjata, kontrolloni kur blloku i fundit është përfunduar në të vërtetë:
e50bfacc95975a4e7545d83d8954645f
Blloku i fundit u përfundua \(7\) minuta më parë. Tani që e dini këtë informacion, koha e pritur ndryshon nga \(5\) minuta në \(10\) minuta gjithsej. Kjo do të thotë: Ndoshta do të jetë gati për rreth \(3\) minuta. Ju lëshoni komandën përsëri dhe përsëri. Dhe prisni. Pas një tjetër \(10\) minutash ju filloni të ndiheni sikur diçka nuk shkon.
Por pastaj ju kujtohet se Paradoksi i pritjes:
Nëse autobusët qarkullojnë mesatarisht çdo \(t\) minuta, koha e pritjes për një kohë të rastësishme mbërritjeje në stacionin e autobusit nuk korrespondon me \(\frac{t}{2}\) minuta, por në rastin kur shpërndahet në mënyrë eksponenciale distancat \(t\) .
Dukuritë e bllokut të Bitcoin janë një proces Poisson dhe për këtë arsye shpërndahen në mënyrë eksponenciale. Meqenëse proceset Poisson janë pa kujtesë, blloku tjetër gjithashtu përfundon mesatarisht në \(10\) minuta. Kjo vlen gjithmonë - pa marrë parasysh sa kohë kemi pritur. Cilësia e mungesës së kujtesës zbatohet si prapa ashtu edhe përpara në kohë.
Si mund të jetë?
Për ta bërë këtë, ne konsiderojmë dy deklaratat e mëposhtme:
- A) Koha mesatare aktuale e pritjes midis dy blloqeve është \(10\) minuta, jo \(20\) minuta.
- B) Nëse zgjidhet një pikë e rastësishme në kohë, ne presim që blloku i mëparshëm \(10\) minuta në të kaluarën dhe blloku tjetër \(10\) minuta në të ardhmen. Pra, mund të presim një kohë pritje prej \(20\) minutash midis blloqeve.
Ne i kontrollojmë të dy deklaratat.
Për ta bërë këtë, ne fillimisht nxjerrim të dhënat përkatëse, veçanërisht kohën kur blloqet u plotësuan, në një skedar TXT (që do të ekzekutohet me një nyje të plotë që funksionon lokalisht bazuar në bitcoin ).:
e50bfacc95975a4e7545d83d8954645f
Kjo na jep skedarin e mëposhtëm të tekstit , të cilin tani e përpunojmë më tej dhe e ruajmë në /time.txt . Për këtë qëllim përdoret programi i mëposhtëm Rust me skedarin /Cargo.toml:
e50bfacc95975a4e7545d83d8954645f
Skedari /src/main.rs përmban logjikën aktuale të testit:
e50bfacc95975a4e7545d83d8954645f
Ne instalojmë varësitë, ndërtojmë programin dhe e nisim atë:
e50bfacc95975a4e7545d83d8954645f
Në të vërtetë, të dy pohimet janë të vërteta kur analizojmë rezultatin:
e50bfacc95975a4e7545d83d8954645f
Kjo mund të shpjegohet gjithashtu në mënyrë intuitive si më poshtë: Nëse kohët e bllokut ndryshojnë ndjeshëm, koha specifike e pritjes ndryshon - nëse e kryejmë transaksionin në një moment të rastësishëm në kohë, probabiliteti është më i lartë që të përfundojmë në një interval në të cilin koha e pritjes është më e gjatë se 10 minuta për shkak se këto intervale gjithashtu zënë më shumë hapësirë në afatin kohor për shkak të kohës më të gjatë.