#SmallBlockers vs. #BigBlockers

Újra felütötte a fejét itt a blog komment szekciójában az immáron közel 3 éves vallási harc, aminek célja a Bitcoin közösség megosztása és egymással szembe osztása. A jó öreg tézis: Small Blockers vs Big Blockers.

Egyből az elején kifejteném, hogy ez továbbra is személyes blog és a kérdésben természetesen elfogult vagyok, nem célom tudományos alapon igazolni vagy cáfolni bármit is, eleve nonszensz szerintem már a felvetés is, de azt hiszem időszerű újra feltenni a kérdés: vajon melyik megközelítés a követendőbb?

Egy kis kitekintés a téma kapcsán: A Bitcoin definíciója szerint egy önálló digitális termékosztály, ami kapcsán igen sokáig fel sem merült, hogy szükség lenne mellette “altcoinokra”. Eredendően Satoshi ráadásul eléggé rugalmasra is tervezte az egész protokollt. A 10 perces blocking time, az unlimited block size és persze a true 0-conf egy olyan settlement layert hozott létre, ahol a kis tranzakcióknál akár másodpercek alatt lehetett tranzaktálni, a nagy értékű tranzakcióknál pedig legfeljebb egy óra alatt el lehetett érni a teljesen jóváhagyott állapotot. Ahogy Satoshi ezt megálmodta: technológiailag adott volt az, hogy ez a rendszer simán block size szinten elérje a VISA szintű (akár 20k tx/sec) szintet amennyiben az internet és az asztali számítógépek teljesítménye abban az ütemben skálázódik, ahogy azzal az alkotó számolt.

Ezen nagy szabadságfokot azonban egyszer csak (mindenféle magyarázat nélkül) maga Satoshi Nakamoto húzta keresztbe az r103-as releassel 2010 július 15-én, amikor is implementálta a kódba a max block size paramétert, melyet akkor 1Mb-ra állított be. Többen is megkérdezték ezt követően, hogy mi volt ennek a célja és mi lesz vele később, melyre a szokásos szűkszavú módján Nakamoto csak ennyit válaszolt: “Később növelhetjük…”

Ez a limitáció Satoshi távozásával a kód szerves része maradt, ami végső soron a mai napig nem változott, bár a SegWit protokollnak köszönhetően mára a blokkok között nem ritka 1,5Mb-os darab sem.

Hogy mi volt Satoshi elképzelése az 1Mb/block limit kapcsán arról semmilyen evidencia nem ismert, bárki is állít erről bármit az a saját elképzelése, következtetése. Mindenesetre ez a változtatás végső soron az alkotó egyik leginkább megosztó döntésévé vált.

A BigBlockerek álláspontja szerint ez az érték a demand fényében bármikor állítható, hiszen miért ne lehetne az érték 8Mb, 32Mb vagy akár 1Gb/1Tb amennyiben ez kell a népnek. Tény, hogy a 1Mb-os block méret határ az egyik fontos oka annak, hogy ma nagyon sok “fast and cheap settlement” altcoin létezik, ami mind a Bitcoin lassú és “drága” értéktovábbító képességét hivatott megoldani. Ha annyi bitcoinom lenne, mint amennyi projekt indult az elmúlt 3 évben a “New Bitcoin” címkével… nos akkor nagyon sok bitcoinom lenne…

A BigBlocker (BB) kezdeményezés egyik nagy vezéralakja – Roger Ver – számos alkalommal kifejtette, hogy neki csak az a fontos, hogy a Bitcoinnal bármikor lehessen vásárolni kávét és erre a block size növelés lenne a megoldás, ám mivel ennek kapcsán nem született konszenzus (Ver szerint egy tudatos manipuláció eredményeként), ezért elveszítette a Bitcoin a “medium of exchange” képességét.

Ezen a ponton talán érdemes is rátérni a Small Blockers (SB) vonalra. Hiszen bárki számára logikus következtetés lehet, hogy a blokkok méretét növelni KELL, ha erre van szükség. Mit is mond a BB propaganda a SB-kről: felelőtlen tech idióták, akiket nem érdekel a bitcoin jövőve, csak az, hogy uralkodjanak a kódon, nem értenek az üzlethez és különben is a megvették őket a nagybankok és szándékosan ártanak a Bitcoinnak. Ja és a SegWit hülyeség és bug, a lightning network pedig vaporware… azt hiszem mindent leírtam.

Lesöpörve az asztalról a propaganda hamuját nézzük, hogy mi is a valódi motiváció a SB mögött:

A Small Blockerek fontosabbnak tartják a Bitcoin ideológiáját, mint annak az aktuális adott üzleti potenciálját. A Bitcoin eredendően egy szabad és független pénzügyi rendszerként jött létre, ami technológiai alapon biztosítja, hogy bárki tudjon önállóan validálni, tranzakciót közvetíteni vagy fogadni anélkül, hogy ehhez bármilyen függőségbe kerülne mások szolgáltatásaitól. Jelenleg erre a Bitcoin képes. Ahogy sokszor gúnyosan mondják: a Bitcoin nodet akár egy kávéfőzőn is bárki el tudja futtatni.

Aki a Bitcoinból csak annak árfolyamán látja és lelkesen hajtogatja, hogy “digitális bizbasz, nincs mögötte semmi csak spekuláció”, annak nehéz elmagyarázni, hogy mit is jelent a pénzügyi szuverenitás, az hogy nem függesz mástól, más jó szándékától, hogy rendelkezhess a vagyonod felett. A világnak azonban egyre nagyobb részén ez a fajta szuverenitás alapvetően sem adott. Számukra a Bitcoin maga a pénzügyi szuverenitás.

Márpedig ennek a szuverenitásnak az alap tézise, hogy megvan a jogod arra, hogy TE magad ellenőrizz mindent, amihez persze kell egy full node. Tehát mindenki kell, hogy rendelkezzen egy full nodeddal? Ha valaki NEM csak spekulációs céllal birtokol BTC-t… nos, akkor igen. Alapvető szemantikai hiba azt gondolni, hogy a bányász nodeok validálnak. A bányász nodeok CSAK confirmálnak és a peer-to-peer hálózati jelleg miatt semmi garancia nincs arra, hogy ha egy idegen nodehoz csatlakozol, akkor onnan valód tranzakciókat fogsz kapni. Ebben csak akkor lehetsz biztos, ha egy SAJÁT nodeon validálsz minden tranzakciót.

A bányászok confirmálnak… de a validációt mindenkinek magának kell elvégeznie a saját full nodejával.

Mielőtt bárkinél is elgurulna a gyógyszer az olvasokkal kapcsán: A validálás természetesen nem azt jelenti, hogy TE kézzel fogsz átnézni minden tranzakciót. Csak annyit jelent, hogy egy olyan full nodeot használsz, aminek kapcsán TE magad gondoskodsz annak az integritásáról.A full node integritásvédelmét az adja, hogy csatlakozva a peer-to-peer hálózathoz szépen elkéri az összes blokkot, amiket tételesen ellenőriz, így nem csak rögzíti a blokkláncot, de validálja is annak minden blokkját.

Ezen a pontos sikerült is feltárnom a BigBlocker vs SmallBlocker álláspont egyik legfontosabb valós ellentétét: A Small Blockerek szuverén pénzügyi rendszer akarnak, ahol nem teljesül a fiat pénzek annyira gyűlölt “system of control” tulajdonsága. A Big Blockerek viszont szívesen feladják ezt a szuverenitást azért cserébe, hogy bármikor ihassanak egy kávét…

Hogy mi az a system of control? Ez a modern pénzügyi rendszer egyik legfontosabb befolyásoló tulajdonsága. A világ fizetőeszközei mindig is birtokoltak bizonyos szintű ‘system of control’ tulajdonságot, de ez különösen felerősödött amikor a US dollár lett az egyetemleges világpénz és gyakorlatilag elkezdtünk mindent ahhoz képest mérni. Ezen tulajdonságot különösen felerősítette Nixon döntése, mely szerint leválasztották az US dollár értékét a fizikai biztosítékról. A döntés egyrészről nagyon fontos volt, hiszen így a világhatalom a fizikai erőfitogtatás szintjéről a gazdasági erőfitogtatás szintjére emelkedett, másrészről viszont brutálisan felerősítette a fiat pénzeken keresztül gyakorolható kontrollt. Ha egy ország nem úgy viselkedik, ahogy a vele szemben álló nagyhatalom diktál, akkor elég némi gazdasági szankció és máris jöhet a jobb belátás lényegében fegyveres konfliktus nélkül is. A fiat pénzeken keresztül gyakorolható drasztikus külső kontroll lehetőségét írjuk le a “system of control” tulajdonsággal. Ennek ellenpólusa a pénzügyi szuverenitás, ahol az adott nemzet, állam vagy akár magánszemély közvetlen módon nem kontrollálható.

Ezen a ponton azt hiszem kicsit ki kéne fejteni, hogy mi köze az 1Mb block size-nak a pénzügyi szuverenitáshoz. Jelen pillanatban egy átlagos 1,5 Mb-os block teljes validálása és abban a saját tranzakciók kikeresése nagyjából 1-2 másodpercet vesz igénybe egy átlagos szerveren. Ez egy gyengébb gép esetén (pl maradva a jó öreg raspberry pi-nél) sem lényegesen több. Egy tetszőleges RPC library használata esetén is a blokkok teljes validálása (mondjuk pythonból) bőven megvan 10 másodpercen belül. Ám minél komplexebb kódokat engedünk meg a blockchain szintjén annak az átfutási ideje annál inkább növekszik.

Nézzünk erre egy konkrét példát? Legyen az Ethereum… Aki hozzám hasonlóan rákényszerül arra, hogy saját Ethereum nodeot üzemeltessen mondjuk egy halom smartcontract folyamatos használata miatt (pl. token issuing), az pontosan tudja, hogy nagyon nehéz syncben tartani ma már egy saját nodeot. Az, hogy a nodehoz SSD kell ma már alap, de hogy egy mai felső kategóriás notebookon nem tud folyamatosan syncben maradni a parity node az több mint bosszantó. A 14,5 másodperces block time és az átlagos 20-30kB-os blokkok feldolgozásába még egy nagyon komoly, csak erre fenntartott node esetén is be-be csúszik néhány 1 másodperc feletti blokk validálás:

geth output egy 2 magos Xeon E5-2686 (2.3GHz), 8Gb ramos és SSD-s szerveren

Tehát az Ethereum komplexitású blockchain esetén 10 percenként átlagosan 40 blokk keletkezik, amik átlagosan ~6000 tranzakciót tartalmaznak. Egy komolyabb szerveren csak a blokk validálása 10 percenként fél percig tart.

Ugyanez az én saját notebookomon (i5/3.1GHz, 16Gbram, SSD) már átlagosan 57 másodpercbe kerül. Ami blokkonként átlagosan már majdnem 1,5 másodperc. Mindez 14,5 másodperces átlagos block kibocsátási idővel… Nem csoda, hogy a gépem időről-időre lemarad. Ha csak 24 óráig nem fut a gépemen a parity (mert végső soron azért nem csak erre tartom…), akkor akár 1-2 óráig is eltarthat amíg behozza a gép a lemaradást.

Jól látható, hogy amikor emberek azon problémáznak, hogy pl az Ethereumot vajon miért nem skálázzák onchain… akkor bizony itt az a magyarázat, hogy erre nem nagyon van lehetőség.

Csak, hogy ne legyen annyira egyoldalú a postban a véleményem, így megkérdeztem a hazai közösség egyik tagját, aki nagy mennyiségben futtat különböző nodeokat üzleti célokra (Fusion Solutions), hogy mégis ma mi kell ahhoz, hogy valaki fenn tudjon tartani egy ethereum nodeot. A válasz pedig a következő volt:

Az SSD jó, bár nvme szintű lenne a jobb. közepes asztali CPU és 8Gb ram elengedhetetlen. Az energiatakarékos eszközök, mint pl Rasberry PI, tablet, notebook nem ajánlott. A nodeok futtatása nemsokára központi feladattá válik. Egy gyengébb gépen ha az ember le van maradva egy nappal, annak a szinkronizálása akár több órába is telhet. […] Ja és a hddt mindenki felejtse el. A hybrid megoldások sem jöhetnek szóba.

Na de térünk is vissza a Bitcoinra… Mit is szeretnének a Bitcoin Cash fan BigBlockerek:

  • 1GB-os, vagy akár terabyte méterű blokkokat, amikkel közel végtelenné növelhető  a másodpercenkénti tranzakció szám, mindehhez fenntartva a 1 satoshi méretű fee-t, sőt ha van már mód, akkor menjünk le subsatoshi szintre.
  • A jelenlegi 10 perces blocking time csökkentését 1 percre.
  • A jelenlegi erősen limitált opcode készletet feldúsítani számos számos komplexebb utasítással, ami fontos alapja lehet annak, hogy a Bitcoin Cash-en is lehessen olyan komplex smart contractokat futtatni, mint pl az Ethereumon.
  • Ha már egyszer near-infinite a blocksize és subsatoshi a fee, akkor pedig használjuk is ki ezt pl a memo.cash szintű szolgáltatásokkal, amikkel pl twittert lehet csinálni a blokkláncból.

A blokkok validálása idő és energia igényes feladat. Minél komplexebb a kód, minél több a tranzakció és minél gyorsabb a blocking time, annál több kell ezekből, amiket egyre inkább lehetetlen “otthoni” körülmények között megteremteni. Jól látszik ez az Ethereumnál is, ahol a fejlesztők nem mernek tovább onchain skálázni, helyette a sharding felé lépnek tovább.

A BigBlockerek szószólói azonban kvázi tudomást sem vesznek minderről. A Bitmain és a nChain egy perces blocking timeról és akár Terabyteos blokkokról álmodik… És kinek lesz ehhez erőforrása? Természetesen a Bitmainnek és az nChainnek. Ahogy a Bitmain az ASIC fejlesztésekkel szépen lassan kisajátította Satoshi álmát, mely szerint mindenki képes lesz a saját asztali gépvel blokkokat generálni és valódi játékelméleti verseny fog zajlani. A bányászat biznisz sikeres centralizálásával (1 db monopol gyártó) jogosan felmerül a kérdés, hogy mi a következő lépés? Ha már a Bitmain  és az – nChain partnere – a coingeeks birtokolja a hashing power nagy részét, akkor mégis miért ne ők birtokolhatnák (gyárthatnák és üzemeltethetnék) az összes olyan gépet is, ami képes elviselni azt a terhelést, amit a zárt ajtók mögött megálmodnak a BigBlocker promininsek?

Satoshi még 2008-ban ezt írta erről a trendről:

At first, most users would run network nodes, but as the network grows beyond a certain point, it would be left more and more to specialists with server farms of specialized hardware. A server farm would only need to have one node on the network and the rest of the LAN connects with that one node.

És majdnem napra pontosan 10 évvel később elmondhatjuk, hogy igaza lett: Tényleg arra tart a BigBlockerek hálózata, hogy eltűnjön a szuverenitás és eltűnjön a trustless a hálózatból. Ezeket pedig egy újabb pénzügyi nagyhatalom felé gyakorolt hamis bizalom váltja le. Csak ezúttal ezt a világhatalmat nem FED-nek, World Banknak vagy éppen jegybanknak nevezzük, hanem nChain-nek és Bitmainnek. (Akik ráadásul még össze is balhéztak a saját BigBlocker jövőképükön…)

Hogy miképpen működik a BigBlockerek jövőképe? Úgy, hogy mindenki használjon SPV walleteket, hiszen az SPV walletek is tudják validálni a saját tranzakciókat, igaz csak block headerből, ráadásul a legtöbb a saját full nodejára csatlakozik, nem is véletlenszerűen és semmilyen valós garanciád nincs arra, hogy az adott node tényleg azt a konszenzus ágat követi amit a legtöbben “Bitcoinnak” hisznek. Tavaly az év második felében már majdnem sikeresen lezajlott egy nagyon komoly SPV wallet támadás a hálózat ellen a SegWit2X kezdeményezés kapcsán, amit több tényező mellett az akadályozott meg, hogy közel egy év alatt jelentősen sikerült elterjeszteni a Bitcoin Core fejlesztőknek azt a szemléletet, hogy a full node az egyetlen komolyan vehető védelem a hardforkok ellen.

22-es csapda?

Röviden összefoglalva az eddigieket: A SmallBlocker megközelítés zsákutca, mert a blockméret limitálása erősen visszaveti az adaptációt és használhatatlanná teszi a networköt, míg a BigBlocker megközelítés tovább centralizálja a hálózatot annak erőforrás igénye szempontjából, amivel elveszítik az egyének a pénzügyi szuverenitásukat, amivel lényegében pont ugyanoda jutnak, ami elől elvileg menekülni akartak volna.

Tehát elmondható, hogy az egész crypto világ egy zsákutca? Elmondható, hogy Satoshi álma egy tévedés és végül “játszottunk egy jót?” Szó sincs erről. A Bitcoin mögött lényegében egy hatalmas fejlesztői bázis és egy még inkább komoly üzleti érdekkör tömörül, aminek egy része (Bitcoin Core devek főleg), hithűen próbálják megtalálni azt a középutat, ami megoldás lehet erre a 22-es csapdájára. Felismerve az onchain skálázás centralizálódó hatását – amit feltehetően (saját véleményem alapján) Satoshi is felismerhetett, amikor behúzta a kéziféket – inkább egyéb alternatívákat hoznak létre. Erre jó példa a napi szintű költések biztosítására egyre inkább alkalmas (bár még gyerekcipőben járó) lightning network. De ugyanúgy fontos mozaik a “Liquid network”, ami pont ellenkezőleg a “fizetőképes” nagyszereplők számára nyújt two-way pegged sidechain funkciót, amin keresztül pl az exchangek tudnak  egymás között néhány perc alatt Bitcoin cserélni oda-vissza. Mindezt fix monthly cost mellett. Mind a Liquid, mind a Lightning leválaszt egy-egy nagy terhelést a Bitcoin onchainről.

Hogy jó irány-e az, hogy a Blockstream kisajátítja a Liquiden keresztül a Bitcoin nagyvállalati forgalmát és saját üzletet épít rá? Egyértelműen nem, de az én szememben még mindig sokkal jobb mint az, hogy az nChain és a Bitmain az EGÉSZ blokkláncot ki akarja sajátítani azzal, hogy olyan feltételeket teremt, amiben hagyományos élő ember már képtelen saját full nodeot futtatni.

A Blockstream/BitcoinCore vízióban legalább megmarad a pénzügyi szuverenitás lehetősége és az, hogy mindenki maga döntheti el, hogy mi a valid és mi nem az.

Lesz valaha 1Mb-nál nagyobb Bitcoin block?

Egyrészt már most is van, de ez ugye a SegWit trükközésnek köszönhető. Viszont, ha a base blockokat nézzük, akkor erre elvileg minden lehetőség megvan a Bitcoin blokkláncon is. Bár az elmúlt 9 hónap ezt sehol sem indokolja. A Bitcoin Core csapat nem a MA problémáira fókuszál, hanem a holnapra. Ez persze baromi aggasztó azoknak, pl tavaly évvégén belefutottak a hatalmas mining feekbe, ellenben jól látszik, hogy 9 hónappal később csak-csak kijönnek már azok a fejlesztések, amik akkor még csak “vaporware” álomnak tűntek. Ráadásul a SegWit tx-ek aránya is már karcolgatja a 50%-ot blokkonként.

Mindazonáltal bármennyire is ódzkodnak a CoreDev-ek; a blokkok méretének növelése hosszabb távon elengedhetetlen. Hiszen mind a Lightning Network, mind a Liquid Network esetében nagyon fontos, hogy az onchain tx-ek tervezhető módon kerüljenek bele a soron következő blokkba, ellenkező esetben az egész modell sérül. Ehhez viszont szükséges, hogy valóban indokolt esetben növelni lehessen a blokkok méretét.

Konklúzió?

Aki BigBlocker az a MA problémájával foglakozik és azt nyers erővel akarja megoldani figyelmen kívül hagyva, hogy ennek milyen hosszútávú veszélyei vannak. Fontosabb az, hogy ma meg lehessen venni a kávét Bitcoinból, mint az, hogy 15-30 év múlva ennek oltárán már csak 20-30 full node lesz a világon, amik ugyanúgy 3-4 szereplő kezében lesznek, ahogy most a bányászat is lényegében ugyanennyi szereplő kezében összpontosul. Viszont lássuk be azt is, hogy az erősen centralizált bányászat kevésbé jelent komoly veszélyt, hiszen a bányászok incentívája sokkal inkább indokolj a tisztességet magatartást, mivel számukra ez a kifizetődőbb, ráadásul egy esetlegesen átengedett double-spending vagy inflation szinte azonnal kiderül a független full nodeok validálása során. Ezzel szemben ha valóban ‘halandó ember’ számára már képtelenség lesz full nodeot futtatni, akkor lényegében megszűnik a decentralizált blockchain értelme: a decentralizáció és a független validálás. A BigBlockerek a mai hálózatot egy végleges valaminek tekintik, amin már nem kell fejleszteni, elég azt skálázni. Jó az úgy ahogy van…

A SmallBlockerek ezzel szemben figyelmen kívül hagyják a MA problémáit és görcsösen ragaszkodnak a szuverenitáshoz valamint ahhoz, hogy előbb legyen kész a jövő problémáira reflektáló technológia, majd utána nyúljunk esetleg a skálázáshoz. A decentralizáció jegyében meghozzák azokat a kompromisszumokat, hogy a gyors tranzakciókat layer2-re kell terelni, az üzleti hasznosítást pedig sidechainekbe. A SmallBlockerek a mai hálózatot egy bétának tekintik, ami egyfajta spekulatív játékszer, de látják azt a távoli jövőt, ahol ez valóban egy komoly pénzügyi rendszer lehet, amihez azonban még nagyon sok fejlesztés szükséges.

Ez a két út áll a Bitcoin és annak közössége előtt…