Piše: C. R.

Kako dobro se zgodovinska porazdelitev časovnih žigov na blokih bitcoinov ujema s pričakovano porazdelitvijo?

Ta teden sem dobil vprašanje, ki se občasno pojavi:

To me je spodbudilo k razmišljanju… kako dobro se je v zadnjih 12 letih ohranila pričakovana porazdelitev časa blokov?

Pred tem sem že razpravljal o nekaterih vidikih mehanike časovnega označevanja bitcoinov. Dovolj je povedati, da sta Bitcoinova varnost in teorija iger v zvezi s časovnimi žigi precej elegantna.

Na srečo je precej enostavno iterirati skozi vse glave blokov bitcoin za njihove časovne žige, če imate pri roki vozlišče. V ta namen sem napisal to skripto, ki na mojem prenosnem računalniku traja le približno 5 minut.

Opomba: za namene svojih meritev sem izključil prvih 100 blokov v verigi blokov, saj so se v prvih nekaj dneh obstoja Bitcoina, ko je rudarilo le nekaj ljudi, zgodile nekatere čudne stvari.

Izkazalo se je, da je 190 blokov nastalo več kot 106 minut po prejšnjem bloku, kar je 0,0028 % od 670.000 blokov, ki so bili do zdaj izkopani. To je precej blizu pričakovane vrednosti 0,0025 %! To je bilo dovolj enostavno izračunati, vendar je odgovorilo na moje vprašanje le za eno določeno točko v porazdelitvi delta časa bloka.

Moramo se poglobiti
Čas je, da si nadenemo miselne kape! Felix Weiss je odgovoril na vprašanje, kako ugotoviti, kolikšen odstotek blokov je treba najti pred ali po preteku določenega časa od prejšnjega bloka.

Odgovor lahko določite z izračunom kumulativne porazdelitvene funkcije (CDF) eksponentne porazdelitve.

Kaj pa, če želimo preveriti, kako dobro se je celotna zgodovina časovnih delt blokov odvijala glede na pričakovano porazdelitev? V tem primeru potrebujemo funkcijo gostote verjetnosti (pdf) eksponentne porazdelitve, ki jo lahko modeliramo s f(x;λ) = λe^-(λx). V našem primeru je x = čas od zadnjega bloka, λ kot parameter hitrosti pa je 1/600 (ciljni čas bloka):

Graf (foto: lopp.net / posnetek zaslona)

Ko sem narisal pričakovano porazdelitev za vse bloke v času pisanja, je videti precej podobno.

Graf (foto: Lopp.net / posnetek zaslona)

Tako sem zbral podatke iz skripte za merjenje, ki sem jo napisal.

Hitro se je izkazalo, da je na naslednjih grafikonih bolj smiselno uporabiti logaritemsko os x, saj sicer v šumu majhnih delt spregledamo nekaj zanimivih pojavov.

Obdobja rudarjenja
Pri porazdelitvi pričakovanega časa bloka je pomembno to, da predpostavlja konstanten hashrate. Kot vemo iz zgodovine, je bil hashrate Bitcoina daleč od konstantnega.

Graf (foto: Lopp.net / posnetek zaslona)

Zato sem se odločil, da vzamem 3 različne rezine razponov blokov.

  • Enega iz obdobja procesorjev, kjer je bila hitrost hashrate dokaj ravna.
  • enega iz obdobja grafičnih procesorjev, ko se je hitro povečevala
  • enega iz nedavne zgodovine ASIC, kjer se (razmeroma) počasi pospešuje.

Obdobje procesorjev

Graf (foto: Lopp.net / posnetek zaslona)

Za obdobje rudarjenja s procesorjem je očitno, da je pri časih delta, ki so manjši od pričakovanega cilja 10 minut, veliko manj blokov, kot je bilo pričakovano. Zakaj? Temu se bomo posvetili pozneje.

Obdobje grafičnih procesorjev

Graf (foto: Lopp.net / posnetek zaslona)

Opazite, da se je v obdobju grafičnih procesorjev pri blokih, ki so bili krajši od ciljne vrednosti 10 minut, dogajalo ravno nasprotno – Bitcoin je bil nagnjen k prekomerni proizvodnji blokov, ki so bili “hitrejši od pričakovanih”. To se je najverjetneje zgodilo zato, ker se je hitrost hashrate povečevala.

Obdobje ASIC

Graf (foto: Lopp.net / posnetek zaslona)

Namenoma sem izbral del nedavne zgodovine, da nanjo ne bi vplival velik pospešek hitrosti hashrate v zgodnjem obdobju ASIC. Vidimo lahko, da rudarji bitcoinov še vedno prekomerno proizvajajo bloke, ki so “hitrejši od pričakovanih”, vendar ne v takšnem obsegu kot v obdobju grafičnih procesorjev.

Vse dobe rudarjenja
Kaj se zgodi, če rezultate vseh 670.000 blokov prikažemo na enem grafu? Vidimo lahko, da se dejanske delte časovnih žigov precej dobro ujemajo s pričakovano krivuljo. Razen… za krajša časovna obdobja na levi strani grafa.

Graf (foto: Lopp.net / posnetek zaslona)

Opazimo lahko, da so vrednosti blokov, ustvarjenih 29 sekund ali manj po matičnem bloku, veliko nižje od pričakovanih. Ali obstaja razumna razlaga za to neskladje?

Graf (foto: Lopp.net / posnetek zaslona)

Lov na odstopanje
Skupno število pričakovanih blokov, ki bi morali biti izklesani s tem razponom odstopanj časovnih žigov, je bilo 30.497.

Po drugi strani pa je bilo dejansko število izkopanih blokov s tem razponom delt časovnih žigov 22 441

Kje je torej teh 8 056 blokov?

Izkazalo se je, da se v negativnih deltah skriva 14 296 blokov, od tega 3 549 v območju od -29 do 0 sekund. Tako ostane še ~6.000 blokov, na katere se bom osredotočil v naslednjem trenutku.

Z izrisom porazdelitve negativnih delt časovnih žigov vidimo, da je v bistvu zrcalna slika porazdelitve pozitivnih časovnih žigov.

Graf (foto: Lopp.net / posnetek zaslona)

Toda čeprav je dejstvo, da protokol Bitcoin omogoča negativne delte časovnih žigov med bloki, eden od vzrokov, to ni glavni vzrok! Upoštevati moramo, kako poteka dejanski postopek rudarjenja:

  • rudarski bazen ustvari predlogo za naslednji blok, ki ga je treba izkopati.
  • rudarji zahtevajo delo iz bazena in začnejo s stiskanjem na tej predlogi.
  • rudarji vrnejo končano delo v bazen, da dokažejo, da so ga poskušali rešiti.

Zato se postavi vprašanje: kako pogosto se posodobijo predloge blokov in njihovi časovni žigi?

Prepričan sem, da je prefinjen odgovor bolj zapleten od tega, saj lahko posamezni rudarski stroji brusijo (iterirajo) tudi sam časovni žig, vendar bi to verjetno zahtevalo preučitev posebne strojne in strojne programske opreme za ASIC.

Spomnite se, da je bilo še en presežek ~6.000 blokov z negativno delto časovnega žiga – ali jih je mogoče pojasniti? Po moji teoriji jih je mogoče razložiti z odmikom ure / slabo konfigurirano rudarsko programsko opremo. Če poznate zgodovino rudarjenja, potem veste, da zgodnji rudarji niso uporabljali bazenov – “solo rudarili” so sami. Teh nastavitev niso upravljala podjetja na industrijski ravni, temveč ljubitelji, ki se verjetno niso trudili, da bi zagotovili redno sinhronizacijo svojega stroja z nekim verodostojnim virom. In tudi zgodnje bazene so na splošno vodili ljubitelji in ne profesionalci s polnim delovnim časom. Menil sem, da če je moja teorija pravilna, bomo sčasoma, ko je rudarjenje postalo bolj industrializirano in ko se je izboljšala programska oprema rudarskih bazenov, videli, da se bo premik ure zmanjšal. Zato sem zagnal še eno skripto in narisal porazdelitev negativnih delt časovnih žigov skozi čas.

Graf (foto: Lopp.net / posnetek zaslona)

Opazimo lahko, da se ne zmanjšuje le pogostost negativnih časovnih žigov, temveč tudi resnost premikanja ure. Zlasti od konca leta 2017 smo opazili zelo malo negativnih časovnih žigov delta.

Zaključek
Številna “jamstva” Bitcoina temeljijo na matematiki. Z analizo dejanske porazdelitve časov blokov lahko vidimo, da se je matematika, ki stoji za ciljnim časom bloka 10 minut, v zadnjih 12 letih dokaj dobro obdržala in da je mogoče zlahka razložiti nekaj robnih odstopanj. Industrializacija rudarstva in nenehne izboljšave rudarske programske opreme so povzročile, da se je dejanska porazdelitev časa blokiranja vedno bolj približevala pričakovani porazdelitvi časa blokiranja.

Vir: blog.lopp.net

PUSTITE KOMENTAR

Prosim vnesite svoj komentar!
Prosimo, vnesite svoje ime tukaj