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 finalizat acum \(7\) minute. Acum că știți aceste informații, timpul estimat se schimbă de la \(5\) minute la \(10\) minute în total. Asta înseamnă: probabil va fi gata în aproximativ \(3\) minute. Lansați comanda din nou și din nou. Și așteptați. După alte \(10\) minute începi să simți 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 momentele în care blocurile au fost finalizate, într-un fișier TXT (care să fie executat 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 . În acest scop este utilizat următorul program Rust 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