Timp de blocare Bitcoin

Știți: timpul așteptat între două blocuri Bitcoin este în medie de \(10\) minute. Acum faceți o tranzacție importantă cu Bitcoin și așteptați cu nerăbdare să vedeți dacă și când apare în următorul bloc:

e50bfacc95975a4e7545d83d8954645f


Deoarece nu ați verificat când a fost finalizat blocul anterior, vă așteptați de fapt la o medie de \( \frac{t}{2} = \frac{10}{2} = 5 \) minute de așteptare. După ce au trecut \(5\) minute lungi, verificați când ultimul bloc a fost de fapt finalizat:

e50bfacc95975a4e7545d83d8954645f

Ultimul bloc a fost deja finalizat \(7\) minute în urmă. Acum că știți aceste informații, timpul estimat se schimbă de la \(5\) minute la un total de \(10\) minute. Asta înseamnă: în aproximativ \(3\) minute, probabil va fi până acum. Emiteți comanda din nou și din nou. Si asteapta. După alte \(10\) minute ai senzația că ceva nu este în regulă.

Dar apoi îți amintești asta Paradoxul așteptării:

Dacă autobuzele circulă în medie la fiecare \(t\) minute, timpul de așteptare pentru o oră de sosire aleatorie la stația de autobuz nu corespunde cu \(\frac{t}{2}\) minute, dar în cazul unei distribuții exponențiale distanțe \(t\) .

Aparițiile blocurilor Bitcoin sunt un proces Poisson și, prin urmare, sunt distribuite exponențial. Deoarece procesele Poisson sunt fără memorie, următorul bloc este, de asemenea, finalizat în medie în \(10\) minute. Asta se aplică întotdeauna - indiferent de cât timp am așteptat. Calitatea lipsei de memorie se aplică atât înapoi, cât și înainte în timp.

Cum poate fi asta?

Pentru a face acest lucru, luăm în considerare următoarele două afirmații:

  • A) Timpul mediu real de așteptare între două blocuri este de \(10\) minute, nu de \(20\) minute.
  • B) Dacă se alege un moment aleator în timp, ne așteptăm ca blocul anterior \(10\) minute în trecut și blocul următor \(10\) minute în viitor. Deci ne putem aștepta la un timp de așteptare de \(20\) minute între blocuri.

Verificăm ambele afirmații.

Pentru a face acest lucru, extragem mai întâi datele relevante, în special orele la care blocurile au fost finalizate, într-un fișier TXT (care urmează să fie efectuat cu un nod complet care rulează local, bazat pe bitcoind ):

e50bfacc95975a4e7545d83d8954645f

Acest lucru ne oferă următorul fișier text , pe care acum îl procesăm în continuare și îl stocăm în /time.txt . Următorul program Rust este utilizat pentru aceasta cu fișierul /Cargo.toml:

e50bfacc95975a4e7545d83d8954645f

Fișierul /src/main.rs conține logica reală a testului:

e50bfacc95975a4e7545d83d8954645f

Instalăm dependențele, construim programul și îl pornim:

e50bfacc95975a4e7545d83d8954645f

Într-adevăr, ambele afirmații sunt adevărate atunci când analizăm rezultatul:

e50bfacc95975a4e7545d83d8954645f

Acest lucru poate fi explicat și intuitiv după cum urmează: Dacă timpii de blocare variază semnificativ, timpul specific de așteptare variază - dacă efectuăm tranzacția într-un moment aleator în timp, probabilitatea este mai mare ca să ajungem într-un interval în care timpul de așteptare este mai mare de 10 minute deoarece aceste intervale ocupă, de asemenea, mai mult spațiu pe linia temporală din cauza timpului mai lung.

Înapoi