Bitcoin skálázhatóság: Lightning Network VS. 0-Confirmation

Kibújt végre a szög a zsákból. Hetek óta készültem írni egy postot arról, hogy miként is képzeli el a két véglet (Bitcoin és Bitcoin Cash) a skálázás mellett a gyors tranzaktálást, de amíg nem állt össze minden részlet, addig nem akartam erről postot írni. Ma végre kikerültek a hírek, amire a Litecoin csinált is egy 26%-os rallit. Még július elején értekeztem egy sort arról, hogy a bitcoin skálázási csetepatéjából miként tud nevető harmadikként kijönni győztesnek a Litecoin. Előszóként annyit, hogy ez a post még tegnap este kellett volna, hogy kipublikálódjon, de a cikk megírásának kellős közepén eldőltem a fáradtságtól, uhogy csak ma reggel tudtam befejezni, emiatt nézzétek el, hogy a cikk felében még a tegnap esti állapotokra utalok.

Miért is kerül most itt szóba a 0-confirmation, ami ugye a Bitcoin Cash “csodafegyvere”, hiszen a Bitcoin Cash meghalt, eltemettük, nincs is már benne block és különben is… Azért, mert PONT a 0-confirmation miatt nem érdekel senkit az, hogy van-e block (mondjuk óránként 40 db) vagy éppen nincs fél napig egy darab sem.

Miért who cares az, hogy nincs akár fél napig új block a Bitcoin Cash láncon és mi is az a 0-confirmation? Alapvetően (lásd Satoshi vision) úgy lett tervezve a bitcoin, hogy egy tranzakció onnantól biztosított, hogy bekerül a mempoolban, hiszen ami ott van az szent és sérthetetlen és biztosan be fog kerülni egy új blockba hamarosan. Majd előkerült a probléma, hogy a mempool bizony folyamatosan betelik, sőt túltelítődik ami miatt egy-egy tranzakcióval akár timeoutolódhat is, ilyenkor az kitörlődik a mempoolból és az tranzakció forrása (UTXO) újra felhasználhatóvá válik. Ez a timeout eredendően egyébként 3 nap volt. A mempool telítődése miatt azonban két workaround is bevezetésre került:

  • A mempool timeoutot 2 hétre emelték.
  • Implementálták az RBF-et (azaz Replace by Fee) módot.

Ebből a második pont miatt szűnt meg a 0-confirmationnel szembeni bizalom az eredeti bitcoin blockláncon valamikor 2013 körül:

  • Zero-Confirmation: Az az elv, mely szerint ha bekerül egy tranzakció a mempoolba, akkor az onnantól szent és sérthetetlen és biztosan be fog kerülni egy blockba hamarosan, tehát garantáltan nem lehet double-spendingelni. Ez a gyakorlatban azt jelenti, hogy a kis értékű tranzakcióknál (lásd korábbi kávés példa), nem kell a kávézóban megvárnod a 10. percet az első konfirmációig ahhoz, hogy belekortyolhass a kávédba. Hiszen a felek kölcsönösen megbíznak abban, hogy a kis értékű tranzakciókat senki nem bántja és azok biztosan végre is fognak hajtódni.
  • Replace by Fee: Egy eszköz arra, hogy a mempoolban már meglévő tranzakciók költségét tudd módosítani. Ez ugye főleg akkor érdekes, ha beragad egy tranzakció a túltelített mempoolba, de te mégis szeretnéd, ha gyorsan blockba foglalnák azt. A RBF lényege nemes egyszerűséggel egy meglévő tranzakció költségének növelése.

Miért okozza az RBF a 0-confirmation halálát: Ehhez már erősebben bele kell menni a bitcoin protokolljába, így akit ez annyira nem érdekel, az nyugodtan skippelheti ezt a bekezdést, szóval: A tranzakció költsége része a tranzakciónak, ez overheadként ott van a trazakció inputján. Tehát mempoolban már listázott trazakció költségeit csak úgy tudod módosítani ha pl. az output change (visszajáró) addressét módosítod. Ha viszont tudod manipulálni a mempoolban lévő tx-ek outputjait, akkor akár képes lehetsz double-spending attackot is létrehozni, ami kapcsán már csak a bányászon múlik, hogy blockba foglalja-e a hibás trazakciót avagy sem. Ennél mélyebben nem mennék ebbe bele, de a lényeg, hogy amióta van RBF, azóta kész tény, hogy garantáltan meg kell várni bármilyen ügyletnél legalább az első confirmationt (blockba foglalást), A mempoolban fürdő tranzakció potenciális veszélyforrás lehet, ha annak txin nSequence értéke nincs (-1)-re állítva (UNIT_MAX 0xffffffff), márpedig a legtöbb wallet biztos ami biztos UNIT_MAX-1-re (0xfffffffe) állítja a sequence-t gondolván arra, hogy hátha kell alkalmazni rajta az RBF-t.

commercial break...

A helyzet az, hogy az oly sokszor teljesen jogosan a földig alázott bitcoinabc fejlesztői (Bitcoin Cash node kódja) a forráskód letisztítása közbe több egyéb “bcore” workarounddal együtt a RBF-t is kidobták a kódból. Emiatt a Bitcoin Cashben valóban létező fogalom a Zero-Confirmation. (Már persze ha egy pillanatra eltekintünk a hálózat üzemeltetőivel szemben táplált bizalom kérdésétől.) Ennek megfelelően, ha a Bitcoin Cash hálózat lényegében teljesen rezisztens arra a kutyakomédiára, ami most a bányászat körül zajlik, akkor a BCH-ra kibocsátott walleteddel minden gond nélkül tudnál vásárolni kávét filléres tranzakciós díjjal és valójában sem téged, sem a baristát nem érdekelné, hogy maga a tranzakció mondjuk csak 6 óra múlva kerül be a blockláncra (konfirmálódik), hiszen a RBF hiánya miatt BIZTOSAN tudhatjátok mindketten, hogy ami megjelenik a mempoolban, az be fog kerülni as-is a blockláncra. (Nem valójában optimális esetben sem a barista, sem Te nem fogod ezt tudni, hiszen ilyen technikai részletekig ez nem érdekel senkit, viszont mindketten tudni fogjátok, hogy “amennyiben megjelenik egy tx unconfirmed állapotban egy walleten, akkor az már úgy teljesítettnek kezelhető“. Ez az a pont, ahol kétségtelenül egyet kell értsek azzal, hogy a Bitcoin Cash implementációja Satoshi vízióját reinkarnálja, valóban ezt képzelte el a pszeudoním alapító.

Na de lássuk mi a helyzet a másik oldallal, a Bitcoin Core/Blockstream Lightning Networkkel:

Immáron két napja be lett lebegtetve, hogy a Lightning várhatóan a SegWit aktiválását követően közel azonnal elérhető lesz. Ezt megalapozandó még tegnap késő délután közzétett Charlie Lee (LTC atyja) a közleményét mely szerint kész a kód és a SegWit aktiválást követően hamarosan lehet használni az atomic swappinget és a lightninget mindkét hálózaton (Bitcoin és Litecoin). A hamarosan definíciója egyelőre még nem tiszta, a kódkészlet már le lett zárva, megkapta a “release-candidate” flaget és jelenleg folyik az utolsó körös tesztelés. Ezzel kezdetét vette a bitcoin mainneten is a “Layer 2” skálázás alkalmazhatósága.

A Lightning lényege, hogy létre tudsz hozni Lightning Hub-okat, amelyek önmagukon belül tudnak teljes értékű lightning trazakciókat kezelni. Ehhez adott összegű ‘letéttel’ kell rendelkezned, amit be is kell foglalni a fő blockláncban (payment channel megnyitása), ezt követően azonban a Lightning hubon belül végtelen mennyiségű tranzakciót tudsz bonyolítani elemi gyorsasággal, de természetesen csak az adott letét ereig.

A blockstream szerint végtelenül sok ilyen hub fog létrejönni, melyek kicsi számú LN klienssel fognak szerződni és kis mennyiségű letét ereéig fogják kiszolgálni a jellemzően mikrotranzakciókat, míg az ellenoldal (r/btc, Bitcoin Cash fan side) szerint a Lightning maga a fertő és a centralizáció melegágya, hiszen ennek segítségével alacsony számú gigantikus LN Hub fog létrejönni, amelyek uralni fogják a Bitcoin napi forgalom döntő részét.

A LN és LN HUB önmagában egy jó elképzelés, amit persze akár el is lehet rontani, de mi is pontosan ez az atomic-swap? Ennek a lényege, hogy hozzá tudsz adni a Lightning Network-ödhöz egy ‘decentralizált exchange’ funkciót. Vagyis teljes értékűen tudod úgy használni a bitcoin hálózatot és az összes bitcoin elfogadó helyet, hogy neked valójában csak litecoinod van. A Lightning Network a háttérben mindig megoldja a keresztbe váltásokat. Ez a funkció most úgy kell a bitcoinnak, mint egy falat kenyér, ha valami most rövidtávon ki tudja húzni a bitcoint abból a csávából, amibe a scaling debate miatt került (core fejlesztők vs. bányászok), akkor az csakis ez a funkció lehet. Hogy miként fog ez hatni a litecoin árára? Ahogy ezt már két hónapja is írtam:

A legtöbb általam ismert és követett technikai elemző egybehangzó véleménye alapján a Litecoin lesz a BTC/ETH [skálázási] para abszolút nyertese.

Minél tovább fog húzódni a bitcoin ikrek csetepatéja és a ‘greedy miner flip-flop” hadművelet, annál jobban fog elterjedni a Lightning Network és az a gyakorlat, hogy a bitcoin aranytartalék mellett komolyabb mennyiségű LTC-t tárolunk amivel lehet biztosítani a napi kiadásokat bármely bitcoin elfogadóhelyen. (Nem, itt most természetesen nem a Magyar valóságról beszélek…)

A segwitnek, az LN-nek és legfőképpen az atomic-swapnek köszönhetően végre látszik valamilyen fény az bitcoin alagút végén, csak reménykedhetünk, hogy az a fény már a nap fénye és nem egy másik szembe robogó vonat…

A cikket lezárásaként persze érdemes lenne értékelni a két felet, azaz a 0-confirmation és a lightning network-öt mint instant tranzakciós rendszert:

  • Alapvetően a 0-confirmation erre a generális megoldás, de a scaling debate miatt ez el lett cseszve a bitcoinban a RBF-vel. Azonban a 0-confirmationnek sokkal komolyabb határai vannak mint az LN-nek. Egyrészt a bizalom vele szemben csak addig adott amíg valóban minden unconfirmed tx be tud kerülni a soron következő blockba (így a komolyabb skálázása kérdéses 50-100 tx/sec-en túl), másrészt pedig a felek a végtelenségig bizalommal kell, hogy legyenek a bányászokkal szemben. Márpedig erre a bizalomra perpillanat nem igazán tűnik, hogy rászolgálnának.
  • Ezzel szemben a LN végtelen tranzakciós képességet igér, bár tény, hogy itt viszont kell, hogy legyen a felhasználó és az LN HUB között egy érvényes kontrakt; továbbá az sem árt, hogy ha a felek tudomásul veszik, hogy az LN-en keresztül a privacy fenntartása kevésbé kivitelezhető. (Persze erre is vannak/lesznek lehetőségek).
  • Ami viszont biztos: mindkét esetben igaz, hogy a gyorsított útvonalon végrehajtott tranzakciók (0-confirmation vagy lightning network), akár csak órákkal később kerülnek be ténylegesen a blockláncba függően a körülményektől (Bitcoin Cash esetén ez akkor igaz amikor a bányászok éppen EDA-t hajtanak végre, a Lightningnél pedig a payment channel zárása indukálja ezt), így mindkét implementáció esetén igaz, hogy az “economical finality” lényegesen lassul és jelentősen kell, hogy növekedjen a felhasználók részéről a bizalom az egész decentralizált világmodellben ezek sikerességéhez.

Nem feladatom, hogy ítéletet mondjak a két implementáció felett. Mindkettőnek megvannak a maga gyengeségei, kockázatai és persze megannyi előnye. Az idő eldönti, hogy a két téma meg tud-e élni egymás mellett, vagy az egyik elnyomja a másikat.

Ui: A cikk megírása kapcsán külön köszönet Debreczeni Balázsnak, aki időt szánt arra, hogy elmagyarázza az RBF-t.

Bookmark the permalink.

10 Comments

  1. RBF RFB
    ***szerk: Köszi javítva! (variance)

  2. Mi történt a bitcoin cash-el? szépen lassan esik, ez nem jó 🙂 Tudja valaki miért veszik koreából? https://www.bithumb.com

    • Azért veszik koreában, amiért nyugaton perpillanat az apple részvényeket: Azért mert valaki azt mondta, hogy ez egy jó ötlet. Jihan Wu és néhány egyéb BCH prominens bepromózta az “Upgraded Bitcoin”-t, hatalmas energiát fektettek abba, hogy Korea rápharapjon erre. TV interjúk, bitcoin bányákról promók, stárok/celebek bevonása, stb. Korea egyébként teljesen jó terep a #FOMO őrületre. Japán már teljesen Bitcoin elkötelezett, ott nem is rúgott labdába a BCH, hiszen ott már tényleg a sarki füszeresnél is a bitcoin tárcáddal fizetsz. Kínából állami szinten tiltották ki a spekulatív bitcoin kereskedést és helyette csináltak egy saját pénzt (NEO). Így logikus, hogy a Pacific Ring keleti felének harmadik legnagyobb gazdasági teljesítményű régióját célozzák meg, sikeres is volt a kampány.

      Egyékbént most perpillanat valóban aggasztóan néz ki a BCHBTC kereszt, éppen az 50%-os fibo szintet próbálgatja lefelé áttörni, ha az sikerül neki, akkor lesz itt komoly sírás-rívás azokban akik már 0.17, 0.19 óta tartják a pozícióikat:

  3. Független Bankár

    Sziasztok! Újabb remek írás, köszönjük szépen. A kép pedig fenomenális :-). Az lenne a kérdésem, hogy tervezel-e egy írást az aktuális ICOkrol, esetleg hogy mire érdemes figyelnünk egy White Paper esetében. Még anno a Mothershipbe léptem bele ami jó döntésnek bizonyul a mai napig de jelenleg csak a Cindicator az ami valamennyire meggyőzött… na meg persze ha lesz Estcoin. Köszönet meg egyszer

  4. Szia itt is, tuti a cikk 🙂 Az RBF dologhoz szólnék hozzá : Ha jól tudom, ez “Satoshi víziójának” a része volt, a kezdetektől fogva lehetett ezt csinálni ( opt-in jelleggel ), de eleinte csökkenteni is lehetett a tx díjat és nem is a ds volt a probléma vele elsősorban ( mert az minden unconfirmed txnél játszik egyébként is ) hanem az, hogy DoS támadásra is lehetett használni, így kivették a kódból. Később viszont visszakerült, azzal a módosítással, hogy most már csak növelni lehet a díjat. Nekem mostanában sok ilyen RBF tx-m volt és amióta tudok róla én is használom, mert így ha nem muszáj, nem fizetek többet, de ahogy írtad ha sürgőssé válik az tx, akkor viszont tudok változtatni rajta. Szóval alapvetően az RBF egy jó dolog, amit a mostani magas díjak mellett szvsz érdemes is használni, de reméljük mostmár, h Segwitteltünk, lesz ennél jobb megoldás is.

    • Szia. Ezek szerint túlélted az alvásmegvonást. Komolyan mondom nálad nagyobb kriptoanarchistával eddig még nem találkoztam 🙂 A témához: Valóban benne volt az első Satoshi féle releaseben is már a rbf, de azt igen hamar kikapcsolták, ahogy te is írod, szóval ez a rész a postban eléggé pontatlan, én inkább már csak az opt-in rbf-ről írtam, bár tény, hogy érdemes lett volna megemlíteni a korai implementációt is. Az, hogy az RBF egy jó dolog az nem is kérdés, sőt MA enélkül eléggé komoly káosz lenne utalni kiszámolt txfee-vel. Viszont tény, hog az rbf miatt ma nem igazán lehet megbízni a zero-confirmation-ben. (pontosabban meg lehetne, ha a walletek kezelnék az nSequence-t, de nem kezelik…)

  5. Nagyon köszi a cikket, nagyon sokat tanulok minden egyes írásodból.
    Erről a 0-confirmation-ről most hallottam először. Azt írod, hogy rbf nélkül ez tud működni, és a felek megbízhatnak abban, hogy ekkor a tx tuti végre fog hajtódni. Ha ez így van, akkor az a kérdés merül fel, hogy egyáltalán minek fee-t fizetni? Ha viszont megszűnik a fee, akkor a reward lecsökkenése, megszűnése esetén ki fog bányászni? Ezt nem értem. Mit értek félre?

    • > Ha ez így van, akkor az a kérdés merül fel, hogy egyáltalán minek fee-t fizetni?

      Megintcsak a skálázás a probléma. Gyorsabban generálódnak a tranzakciók, minthogy belátható időn belül biztosan bekerüljenek egy blokkba. Ezért (is) kell megpróbálni egyenlőbbnek lenni az egyenlőknél és egy kis feevel megtámogatni a jó bányászt, hogy ugyanmár vegyen előre. Amíg a másodpercenkénti tx áteresztő képesség a 10-es/100-as nagyságrendben mozog, vagy a blokkméretnövelt BCH-nél is maximum az 1000-es ben, annak is az alján, addig nincs meg az áttörés, életszerű használat mellett mindig be fognak ragadni tranzakciók, mindig rá kell majd segíteni a(z egyre magasabb) feevel. A gordiuszi átvágásához kell az LN és a mikrotranzakciók kezelésének lehetősége kívül a főláncon.

      > Ha viszont megszűnik a fee, akkor a reward lecsökkenése, megszűnése esetén ki fog bányászni?

      Nem fog megszünni, csak nem lesz a végfelhasználó közvetlenül ilyen mértékben kiszolgáltatva neki. Mivel a reward csökken, így a bányászok nyeresége szükségképpen a feeből lesz hosszútávon is.

      • Köszi a választ, ezt így értem is. Csak kifejezetten a 0-confirmation-re gondoltam, mert erre volt az az állítás, hogy a felek megbízhatnak abban, hogy ekkor a tx tuti végre fog hajtódni, vagyis bekerül a közeljövőben valamelyik blokkba, ezért a kifizetett szolgáltatás azonnal teljesülhet, ahogy a mempoolba kerül a tx. Ha a két félnek nem számít, hogy a blokkba kerülés akár 1-2 nap múlva történik meg (mert tudják, hogy úgyis megtörténik), akkor a fizető fél minek adjon fee-t? De értem, hogy ez az elfogadó félen múlik, hogy elég-e neki a mempoolba kerülés – ilyen lehet egy kávé kifizetése, de mondjuk egy tőzsdére utalás már biztos nem lehet ilyen. Másrészt valóban, ha folyamatosan több tx keletkezik, mint amennyit a hálózat át tud ereszteni, akkor persze baj van. A BCH-nál ez a rész nekem még nem tiszta.

Szólj hozzá: