Blockchain unchained: Az üres blokkok rejtelme

Feldobtatok egy jó kérdést, amire úgy ugrottam mint gyöngytyúk a takonyra, hiszen ezen már korábban én is sokat agyaltam és ott állt a queue-ban a “megfejtendő rejtélyek között”:

“Az AntPool miért bányászik üres blokkokat a Bitcoin láncon? Néha besegít a BTCC is. Szándékos rombolás, hátráltatás?”

A kérdés igen komplex, ezért kezdjük egy kis blockchain alapokkal. A Proof of Work (PoW) alapú blockchain gyártás lényege az, hogy mindenki közel ugyanolyan számítási kapacitással rendelkezik, ezért mindenkinek közel azonos esélye van megtalálni egy blockot. Egy korábbi cikkben már részletesen leírtam, hogy technikailag miként is képződik egy block (leading zeros mistery) és mit is jelent kiszámolni annak a hash-ét, ha azt nem olvastad, akkor lehet érdemes azzal kezdeni. Ami viszont abból a cikkből nem derül ki:

  • Minden miner egyszerre ugyanazt a blockot bányássza, pontosabban ugyanazon sorszámú (height) blockot bányássza ami persze minden bányásznál mást és mást tartalmaz. A feladatuk az, hogy megtalálják azt a hasht aminek az értéke alacsonyabb a targetnél (lásd másik cikkben a nullával kezdődő hashképzés módszerét).
  • Aki először tudja ezt elérni a nonce és a coinbase text módosításával (és a timestamp frissítésével), na azé a block. Szépen körbekürtöli a peer-to-peer networkön és elindul a block validálása. A propagálás és validálást követően a nodeok ezt a blockot hozzáfűzik a blockchainhez, majd az utolsó valid block tx-eit törlik a mempoolból, összerakják az új block headerjét, amihez összevállogatják az új tx-eket a mempoolból, megcsinálják a merkle tree-t és már indulhat is az újabb block vadászat.

A esélye annak, hogy egy érték (nonce, extraNonce) módosításával egy olyan hash-t kapj, amire igaz, hogy annak értéke kisebb a targetnél = 1/(232*difficulty). Tehát egy pool minél több számítási (double sha256) kapacitással rendelkezik annál nagyobb esélye van arra, hogy bejön neki egy megfelelő hash. Ez az esély azonban nem statikus, ha az lenne, akkor minden blockot nagy valószínűséggel a legnagyobb hashing power birtokosa gyártana le. Tény, hogy az esélyed minden újabb hashing kísérlettel javul, de a szórás miatt simán előfordulhat, hogy valamelyik poolnál akár az első nonce érték inkrementálásnál is bemákolja a megfelelő hash-t. A bemákolás mértékegységes a “Luck”. A Luck/Szerencse egy átlag szám (pontosabban kumulatív eloszlás), ami az adott pool korábbi hashing kísérlet/sikeres hash-ek arányából jön össze. Ha az átlaghoz képest gyorsabban sikerül kihozni egy érvényes hash-t, akkor a luck% alacsony, ha viszont az értéke 100%, na azt hívják bad lucknak, mikor a karma egyenlít. Ez egyébként egyáltalán nem ritka. Persze vannak olyan pillanatok is, amikor aranyeső van, itt egy példa arra amikor idén augusztus 7-én a SlushPool nevű cseh bányásztásaság behúzott 8 blockot alig 9 óra alatt:

Folytatás…