Orosz rulett Ethereum módra

A történelem ismétli önmagát. Miközben a Bitcoin kapcsán már megnyugodni látszanak a kedélyek a skálázási vita kapcsán (nem… nem oldódott meg semmi, csak már kevésbé érdekel bárki is a vita, mindenki beletörődött, hogy ez van; ezzel kell élni)… szóval aközben most az Ethereum háza táján zajlik valami nagyon hasonló történet. Kisebb belső háború folyik éppen a bányászok és a core fejlesztők között, mely persze sok szempontból mondvacsinált, de mégis csak sok az áthallás:

  • A minerek növelni akarják a blokkokat, ezáltal csökkentve a hálózat terhelését, ami implicit csökkentené a költségeket, de valójában csak a bányászok anyagi hasznát hajtja fel azáltal, hogy sokkal több tranzakció tud átmenni.
  • A core fejlesztők (élükön Szilányi Péterrel) viszont több szempontból is kifakadnak, mivel a bővítés miatt tovább növekedik a full nodeok erőforrás igénye, ami szükségképpen a centralizáció felé vezet. Ráadásul a növelés lassítja a full nodeok feldolgozását, ami miatt növekedni fog az orphan blokkok aránya is.

Eléggé dejá vu szituáció…

A dolognak talán egyetlen szépséghibája, hogy míg Bitcoin esetén ebből a kérdésből valóban egy nagyon komoly belső polgárháború lett (BIP-148 aktiváció vs SegWit-2), addig ethereumon a minerek szépen zárt ajtók mögött megegyeztek és felcsavarták a blokkonkénti gaslimitet 10 millióról 12 millióra.

Hogy ez mennyire egy látszat megoldás volt csak, azt mi sem bizonyítja jobban, mint hogy az átállás óta ugyanúgy tele vannak a nagyobb blokkok is, illetve az átlagos gasPrice továbbra is 25 és 40 gwei közül alakul szinte konstansan.

Persze ha a történetnek itt lenne vége, akkor nem írok róla külön bejegyzést. De a helyezet ennél kacifántosabb. Ahogy szokott lenni, Vitaliknak általában van egy jó ötlete, amivel a problémát meg lehet kerülni vagy újraértelmezni:

EIP-1559 – A megoldás(?)

Idén április 13-án terjesztette be Vitalik, néhány további fejlesztővel közösen a 1559-es sorszámú Ethereum fejlesztési kezdeményezését. Ennek a célja alapjaiban újragondolni a teljes fee market modellt.

Jelenleg az Ether tranzakciók díja teljesen szabadáras és aukción dől el, hogy mely tranzakciók kerülnek blokkba és melyek maradnak a várakozási sorban. Bárki bármekkora feevel (gasPrice) be tud rakni bármilyen tranzakciót, annak reményében, hogy az előbb-utóbb blokkba kerül. A legtöbb tárca/kliens/node a szokásos költség saccolási metódust használja, aminek lényege, hogy az előző blokkokba került tranzakciók gasPrice értékét átlagolják és súlyozzák, majd az így keletkező értékre még ráraknak egy kicsit ha a blokk tele volt. Ez a megközelítéssel egyrészt az a baj, hogy nagyon könnyen az egekbe tud repülni a gasPrice, másrészt a minerek profitmaximalizálása miatt akár előfordulhat, hogy hibás becslések jönnek ki. Ennek negatív hatását valószínűleg már sokan megtapasztalták, amikor megpróbáltak “olcsón” elküldeni egy tranzakciót leterheltebb időszakban.

Mit is jelent pontosan ez a profitmaximalizálás miatt keletkező becslési hiba? A probléma alapja az, hogy egyszerűen a jelen idő alapján akarunk egy jövőbeli eseményre saccolni. Ez azt eredményezi, hogy amikor éppen hírtelen nagyon sok tranzakció tódul be a hálózatra, akkor alábecsülésre kerülnek a tranzakciós díjak, amikor viszont csökken a hálózat terhelése, akkor viszont a fee-k még nagyon sokáig magasan maradnak és csak lassan csökkennek. Előbbi probléma azt eredményezi, hogy nagyon sok tranzakció egyszerűen nem tud blokkba kerülni és beszorul a mempoolba hosszú időre. Utóbbi pedig azt, hogy gyakran 2-3x többet fizetnek egy-egy tranzakcióért, mint amennyit valóban kéne, hogy bekerüljön az a következő blokkba… ami explicit eredményezi, hogy a következő blokkba kerülő tranzakciók is sokkal drágábbak lesznek, mint ami indokolt lenne.

A EIP-1559 kezdeményezés a problémát a következőképpen hivatott orvosolni: bevezetésre kerül három újabb protokoll paraméter, ezek a: BASEFEE, GASPREMIUM és FEECAP.

Ezek közül a BASEFEE egy a hálózat által kiszámolt és nem módosítható érték. Alap értéke az 1 gwei, ami akkor növekszik, ha az előző blokk tele volt és akkor csökken, ha nem volt tele.

Minden tranzakció küldésénél két paramétert lehet majd megadni: GASPREMIUM (kvázi a miner borravalója), illet a FEECAP, ami a maximum gwei-ben mért gasPrice, amit hajlandó a küldő kifizetni. Logikusan a GASPREMIUM értékének valahol 0 és “nem-túl-sok” között kéne lennie, míg a FEECAP-ot tudjuk úgy értelmezni és számolni, mint ahogy korábban a gasPrice-t számoltuk

Ezt követően a matek már egyszerű. A tranzakció gasPrice értéke a BASEFEE+GASPREMIUM lesz, de nem haladhatja meg a FEECAP-et.

GASPRICE = min(BASEFEE+GASPREMIUM , FEECAP)

Mit jelent ez a gyakorlatban:

JELENLEG, ha az jön ki a gasPrice becslésnél, hogy a tranzakció várható költsége mondjuk 52 gwei kell hogy legyen és bekerül az adott tranzakció a blokkba, akkor a miner zsebre rakja az 52 gwei*txgas jutalmat, függetlenül attól, hogy egyébként mondjuk 38 gweivel is bele fért volna az adott blokkba.

EIP-1559 aktiválása után: Legyen mondjuk a BASEFEE 20 gwei és mondjuk ajánljunk fel a minereknek +10 gwei borravalót (GASPREMIUM), de limitáljuk ezt maximum 50 gwei FEECAP-en. Ebben az esetben ha a soron következő blokkba bekerül a tranzakció, akkor annak a díja garantáltan 30 gwei lesz. Viszont ha mégsem kerülne be, akkor sincs pánik, mert a következő blokkra már a protokoll fentebb húzza a BASEFEE-t pl 21 gwei-re és amennyiben az így keletkező 31 gwei (BASEFEE+GASPREMIUM) ajánlatommal már beleférek a következő blokkba, akkor tutira benne is leszek, ráadásul tutira 31 gwei gasPrice tranzakciós költséggel… annak ellenére, hogy egyébként ez a tranzakció nekem akár 50 gwei-t is megért volna (FEECAP).

És akkor jöjjön a csavar

Az előző pontban bemutatott EIP-1559-es metódus alapvetően egyszerű és nagyszerű, de közismert, hogy egy ilyen modellnek, bizony meg kell állnia a helyét az olyan eltérő anyagi motivációkkal rendelkező komplex rendszerben is, mint az Ethereum. Hiszen jól látható, hogy a BASEFEE-t igazából könnyedén lehet manipulálni, ha folyamatosan be vannak tömve a blokkok és máris dől a lóvé a minerekhez.

Erre Vitalik és barátainak megoldása végtelenül egyszerű:

A BASEFEE minden esetben elégetésre kerül, tehát azt NEM írhatják jóvá maguknál a minerek jutalomként.

Ergo a minerek kizárólag a GASPREMIUM-ot tudják jóváírni bevételként. Ez – a fenti példánál maradva – azt jelenti, hogy bár az adott tranzakció tényleges költsége akár lehet 31 gwei is amikor blokkba kerül, de a miner akkor is csak a GASPREMIUM értékét (10 gwei) írhatja jóvá magánál bevételként. Ezzel gyakorlatilag jelentősen letörve a minerek előnyét a becslések és eszkalációk miatt elszabaduló bányász költségek kapcsán.

Valóban megoldja a problémákat?

Bár az EIP-1559 által előterjesztett módosítás elegáns, egyszerű és jól kezeli a problémát, de sajnos nem tudja teljesen kizárni a manipuláció lehetőségét a bányászok oldaláról. Egyrészt a minerek tudják manipulálni a BASEFEE-t. Ehhez csak annyi kell, hogy folyamatosan olyan blokkokat készítsenek, amelyek nincsennek tele (tehát nem kerül elfogyasztásra a teljes 12 milliós blokkonkénti gas limit). Így:

  • Egyrészt ki tudják kapcsolni a teljes BASEFEE modellt, ezáltal visszahozva a jelenlegihez hasonló aukciós fee modellt.
  • Másrészt mivel ehhez a blokkok nem lesznek tele, így amikor éppen felgyűlnek a pending tranzakciók, akkor azok méginkább nem fognak beleférni a blokkba és méginkább elszállnak az tranzakciós költségek.

Ehhez persze az kell, hogy a nagyobb bányászok (cirka 60%+) megegyezzen ebben a stratégiában. Sajnos az elmúlt években a Bitcoin esetén már bebizonyosodott, hogy a nagyobb bányász poolok hajlamosak ilyen jellegű háttérmegegyezéseket kötni.

A EIP-1559 egyértelműen vízválasztó lehet az Ethereum jövője kapcsán. Vagy tényleg jól sül el és a bányászok önös anyagi érdeke lehetetlenné teszi a manipulációt… ha mégsem így lesz, akkor még a mostaninál is durvább vadnyugati időszak várható a tranzakciós költségek kapcsán.

Scaling Bitcoin: A konszenzusmentes ármány

A decentralizált ökoszisztéma működésének kulcsa a konszenzus. Lényege, hogy az ökoszisztéma tagjai beterjesztésekkel élhetnek, amelyet a többi tag véleményezhet és szavazhat annak elfogadásáról. Az ideális világban a konszenzusra való törekvés minden tag elemi érdeke. Ez egészen addig teljesülhet, amíg az ökoszisztéma minden rétege decentralizált és sehol nincs olyan szereplő, aki képes érdemben nyomást gyakorolni. Néhány esetben a konszenzus tényleg képes működni, más esetekben a konszenzus felett áll egy külön réteg, aki végső soron képes egyengeti a konszenzust. Erre jó példa az Ethereum vagy a ZCash, mindkettő esetében adott egy alapítvány, amely teljeskörűen szabad kezet ad a közösségnek a platform hasznosítása kapcsán, de például annak fejlesztési kérdéseiben exkluzív jogokat gyakorol. S persze megint más esetekben (amire sajnos a Bitcoin egy jó példa), a konszenzus megpróbált teljesen önállóan működni, azonban olyan jellemzően ELLENÉRDEKELT erőfölények alakultak ki az egyes döntéshozatali szinteken, melyek miatt a konszenzust szépen lassan lecserélte az ármány, ami egyre inkább már nyílt háborúba kezd torkollni. A jelenleg ismert forgatókönyvek epilógusa egyértelműen a SegWit2X hard-fork lesz. Nagyjából két éve kis lépésekkel kialakított haditerv által diktált művelet kerül hamarosan levezénylésre.

Ezen megtévesztést, ármányt, karaktergyilkosságokat és konkrét zaklatásokat sem nélkülöző hadművelet következő fejezte nemrégiben kerül napvilágra:

A teljes cikk megtalálható itt: -link-. Szóval az aki azt hitte, hogy a Novembert megússzuk egy Bitcoin Gold és egy SegWit2X hardforkkal, az a jelek szerint nagyot tévedett. (és itt most nem a Silver, Platina, Bronz, Copper és hasonló kamu hardforkokról beszélek…)

A jelek szerint a Blockstream csapata (jelenlegi Bitcoin node kódbázist karbantartó csapat) továbbra is mérhető esélyét látja annak, hogy az SW2X mégis bekövetkezik és elvisz annyi hashing powert ami miatt a Legacy chain működésképtelenné válik. Ennek elkerülése érdekében létrehoznak egy újabb hadforkot, amiben a PoW algoritmus lecserélésével elvágják magukat a meglévő ellenérdekelt bányászoktól és üzleti szereplőktől és elkezdik az építkezést újra. Ez a forgatókönyv egy alternatív forgatókönyv arra az esetre, ha minden jelenlegi jel ellenére mégis sikeresen zajlana le a SegWit2X hardfork és az üzleti érdekeiket szem előtt tartó lojális bányászok is szépen lassan befejeznék a haldokló legacy lánc életben tartását. Már csak alig 1440 block van hátra a SW2X HF-ig. 240 óra… 10 nap. 2016. 11. 16. Neked van már valami programod arra a napra? Ha van akkor szerint mondd le… Fergeteges világvége party incoming…

#HCPP17

Lassan véget ér ez a hét is. A blog inaktivitása mögött leginkább az állt, hogy egy iszonyatosan (crypto) aktív hét áll mögöttem. A nagy része nem feltétlenül kell, hogy kikerüljön a blogra; de a lényeg, hogy szunnyadozó hitem maximálisan helyreállt abban, hogy van értelme mindannak amiért nap mint nap küzdünk. Létezik egy “Plan ฿” és léteznek emberek akik ezért nagyon komolyan küzdenek. S ami talán ennél is sokkal fontosabb: a Bitcoin értéke messze nem azonos annak árfolyamával, a Bitcoin egy ideológia és egyre több ember látja ezt át. Volt szerencsém a hétvégémet Prágában tölteni, ahol – minő meglepetés -, pont ezen a hétvégén tartották a Paralelní Polisban a Liberate! Hackers Congress-t. Mely a cryptoanarchisták egyik legnagyobb éves rendezvénye és olyan nevek tartottak előadást mint: Giacomo Zucco (a Bitcoint érő belpolitika támadásokról), Adam [email protected] (a Bitcoin skálázásáról), Justin Smith (arról, hogy miként tudja megreformálni a Monero a svájci privátbank-rendszert)… és még sorolhatnám. Egy dologról nem volt itt szó: az árfolyamról… az a kutyát sem érdekelte. Nem akarok naivnak tűnni és tiszta sor, hogy a blog olvasóinak a nagy része az árfolyammal kel és fekszik, csak szerettem volna érzékeltetni, hogy itt valami sokkal nagyobb story kezd kibontakozni, mint amit az árfolyam képes reprezentálni és jó érzés, hogy ebben most egy ici-picit beleláthattam. A rendezvény talán legfontosabb üzenete Zucco előadásában:

Én leginkább ezt hoztam innen el, de lekerekítve mondókámat az alábbi képpel tudnám legjobban jelezni, hogy mit gondolok a jövőről:

A tovább után pedig bepakolok még néhány képet csak a hangulat érzékeltetése végett 🙂

Folytatás…

Bitcoin: A magas tranzakciós költségek margójára…

Kerülgettem az elmúlt napokban ezt a témát, de azt hiszem itt az ideje kicsit erről is beszélni. A tegnapi újabb ATH kísérletet követően mára a bitcoin árfolyama jelentősen visszakorrigált és újra a $4300-as szint alá csúszott be egy rövid időre, ez persze valószínűleg az árfolyam természetes volatilitásának az eredménye, de tény, hogy a leginkább elvakult bitcoin fanok is kezdenek besokallni az extrém magasra hízott költéségek miatt. Néhány napja én is kénytelen voltam egy majd 30 dolláros txfee-t kifizetni, ami nem kifejezetten esett jól.

A magas tranzakciós költségek okát a blogon már számtalan postban leírtam és elemeztem, most inkább azzal foglalkoznék, hogy mi várható ezen a téren a közeljövőben.

A jelenlegi mempool statisztika szerint már csak 550+ sat/B-os értékű tranzakciók esetén garantálható, hogy a tx a következő blockba bekerüljön. Ez azt jelenti, hogy egy átlagos tranzakció (egy utxo, két output) költsége már akár a 0,006-0,008 BTC-t is elérheti. Egy komplexebb coinjoin típusú tranzakció esetén ez akár 50-60 dollárra is felkúszhat.

A BCH-BTC láncok párhuzamos bányászata által generált csiki-csuki szituáció következő fordulója nagyjából 16 óra múlva esedékes, amikor is újra kifut a BCH dara a 2016 blockból. (forrás: fork.lol). Ekkor egy rövid időre az össze bányász visszatér a BTC láncra és elkezdik ledarálni a mempool hátralékot. Fontos azonban, hogy mennyi ideig maradnak a BTC láncon és mennyire tudják ledolgozni a hátralékot. Szerencsés véletlen, hogy ez az esemény pont hétvégére esik amikor természtlegesen is kevesebb a tranzakció. Szintén fontos adalék, hogy a mempool immáron három hete nem tudott kiürülni, így tovább “javítja” a helyzetet az a tény, hogy az alacsony txfee-vel rendelkező tranzakciók szépen lassan timeoutolnak kifelé a mempoolból:

A tranzakció timeout/lejárat az ökoszisztéma sajnálatos velejárója, egyfajta önvédelmi reakció arra, hogy ne tudjon a végtelenségig felgyűlni a hátralék (mempool).

Folytatás…