A blokklánc jövője sorozat

Igen, a blokkláncnak skálázhatósági problémája van. Íme, mi az, és íme, mit tesznek az emberek a megoldására.

A skálázható megoldásért folytatott harc a blokklánc holdudvara. A Bitcoin másodpercenként 4,6 tranzakciót dolgoz fel. A Visa átlagosan körülbelül 1700 tranzakciót bonyolít le másodpercenként (a hivatalos állításból levezetett számítás alapján, amely szerint naponta több mint 150 millió tranzakciót bonyolít le). Az elfogadás lehetősége adott, de jelenleg a skálázhatóság szűk keresztmetszetet jelent.”

A Tata Communications 2018-ban közzétett tanulmánya szerint a felmérésben részt vevő szervezetek 44%-a alkalmazza a blokkláncot, de utal az új technológiák bevezetésével járó általános problémákra is. Építészeti szinten a skálázhatóság megoldatlan problémája a blokklánc bevezetésének és gyakorlati alkalmazásának szűk keresztmetszeteként jelenik meg.

A Deloitte Insights szerint “a blokklánc-alapú rendszerek viszonylag lassúak. A blokklánc lassú tranzakciós sebessége komoly aggodalomra ad okot a nagy teljesítményű hagyományos tranzakció-feldolgozó rendszerektől függő vállalkozások számára”. A világ 2017-ben és 2018-ban kapott ízelítőt a skálázhatósági problémákból: súlyos átutalási késések és magas díjak a Bitcoin-hálózaton, valamint a hírhedt Cryptokitties alkalmazás, amely túlterhelte az Ethereum blokklánchálózatot (egy olyan hálózatot, amelyre decentralizált alkalmazások ezrei támaszkodnak).

A blokklánc skálázásához nem elég a blokkméret növelése vagy a blokkidő csökkentése a hash bonyolultságának csökkentésével. Mindkét módszerrel a skálázhatóság elér egy plafont, mielőtt elérné az olyan tranzakciókat, amelyek szükségesek az olyan vállalkozásokkal való versenyzéshez, mint a Visa, amely “naponta átlagosan 150 millió tranzakciót kezel”, vagyis körülbelül 1736 tranzakciót másodpercenként (TPS).

Ezzel összehasonlítva a Bitcoin tranzakciós sebessége óriási mértékben alacsonyabb. Jelenleg a blokkméret 1MB (1,048,576 bájt – bár a SegWit révén ez a méret elméletileg akár 4MB-ra is skálázható), az átlagos tranzakcióméret pedig 380,04 bájt (feltételezve, hogy minden tranzakció egy tárcából x másik tárcába történik – tehát egy kötegelt tranzakció egy tranzakciónak számít. A kötegelt tranzakciókról később bővebben fogok beszélni, és arról, hogy miért jelöltem így), és úgy tűnik, hogy növekszik.Ezért a Bitcoin egy blokkjába beférő tranzakciók átlagos mennyisége jelenleg a következőképpen számítható:

A jelenlegi Bitcoin blokkgenerálási idő 10 perc; azaz, tízpercenként egy új blokk bányászása történik. Tíz perc (600 másodperc) alatt a Bitcoin a korábbi feltételezések alapján átlagosan körülbelül 2759,12 tranzakciót tud végrehajtani. Más szóval a Bitcoin blokklánc jelenleg csak 4,6 tranzakciót tud garantálni másodpercenként.

Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS

A skálázhatóság problémája a blokklánc értéktételeivel együtt jár, ezért a skálázhatóságot nem lehet egyszerűen a blokklánc paramétereinek megváltoztatásával növelni.

A Bitcoin közösség két változót állíthat be, hogy megpróbálja növelni a TPS-t. Az egyik változó a blokkméret (B), amely jelenleg keményen be van kódolva 1 MB-ra. Ideális esetben a B-t növelni kellene a TPS növeléséhez. A másik változó a blokkgenerálási idő (TB), amelyet a hashing rejtvény bonyolultságának változtatásával lehet beállítani. Ideális esetben a TB-t csökkenteni kell a TPS növeléséhez.

1. táblázat: a TPS növelésének különböző forgatókönyveit az alábbi szakaszban vizsgáljuk. A Bitcoin blokklánc csak az S1 és S2 esetben érheti el a Visa-szerű TPS-t, de mindkét forgatókönyv lehetetlen a tranzakciók terjedési ideje miatt, amelyet szintén ebben a szakaszban tárgyalunk.

1. forgatókönyv & 2

Hogy a 4,4-ről a Visa 1736-ra nőjön, a Bitcoin TPS-ét 377,5-szeresére kellene méretezni. Más szóval a B-t 1 MB-ról 377,5 MB-ra kellene növelni (1. táblázat, S1), vagy a TB-t tíz percről 1,6 másodpercre kellene csökkenteni (1. táblázat, S2). Egy harmadik forgatókönyv szerint mindkettőt módosítani kellene. A három forgatókönyv közül bármelyik megvalósíthatatlan a blokkláncon egy harmadik, nem szabályozható tényező miatt: az új blokknak a Bitcoin-hálózat minden csomópontjához történő továbbításához szükséges továbbítási idő (TR).

A Bitcoin-hálózatban jelenleg becslések szerint 10 198 csomópont van. Egy 1 MB (1 048 576 bájt) blokk továbbítása a peer-to-peer hálózaton keresztül bizonyos időt vesz igénybe. A Karlsruhe Institute of Technology méri a Bitcoin blokkterjedési idejét, és a 2019. január 17-én jelentett átlagos blokkterjedési idő 13 989,42 milliszekundum, azaz körülbelül 14 másodperc volt, amíg a hálózat 99%-áig terjedt. A TB nem eshet a TR 99%-a (TR99)=14 alá, mert ha ez megtörténne, akkor egy új blokk előbb generálódna, minthogy egy régi blokkot a hálózatban lévő blokkok többsége megkapná. Minél közelebb kerül a TB a TR99-hez, annál több probléma merül fel a forkokkal, az árva blokkokkal és a lánc újraszervezésével, valamint (szélsőséges esetben) az olyan biztonsági sebezhetőségekkel, mint a double-spend támadások.

3. forgatókönyv

Még ha a TB = TR99 = 14, 1 MB-os blokkmérettel a Bitcoin blokklánc csak 188 TPS-re tudná növelni a sebességét (1. táblázat, S3). Bár ez a skála 188-szoros TPS-növekedést jelent, meg sem közelíti a Visa által naponta lebonyolított 1736 TPS-t; ráadásul a fent említett kockázatokat rétegzi. A másik változó, a B átállítható, de nem a TR befolyásolása nélkül, ami hatással lenne a TR99-re és így a TB alsó határára.

4. forgatókönyv

A B méretének megduplázásával (1 MB-ról 2 MB-ra) például a hálózat minden egyes csomópontjának egy új blokk letöltéséhez szükséges idő, a TR is megnőne – körülbelül kétszeresére; így 2 MB esetén a TR99 = 28 s, így a TB alsó határa is 28 s lenne. A B tetszőleges tényezővel történő növelésével, és ezt követően a TR ugyanilyen tényezővel történő növelésével a nettó TPS változatlan maradna – ebben az esetben körülbelül 188 TPS (1. táblázat, S4). A B és a TR közötti hatás csökkentésének egyik megoldása a sávszélesség növelése a Bitcoin-hálózat összes csomópontja között. Sajnos, mivel P2P-hálózatról van szó, ez a felelősség a hálózatban lévő minden egyes peer ölébe hull.

A SegWit megjelenése

2017-ben a Segregated Witness (SegWit) minden Bitcoin-csomópontban életbe lépett. Megjegyzés – nem fogok belemenni a SegWit minden részletébe, de ha szeretnéd megismerni a történetét és a Bitcoin Cash hard fork kialakulásában játszott szerepét, nézd meg ezt a cikket:

Ez azt teszi, aminek a neve hangzik – elkülöníti az egyes tranzakciók tanú részét a tényleges tranzakciós adatoktól. Soft forkként történt, tehát a meglévő blokklánchálózatra és kódra gyakorolt jelentősebb hatások nélkül került bevezetésre. A tanú tranzakció súlyozásának módja miatt az új SegWit-képes Bitcoin blokkok elméletileg akár 4 MB-ra is növelhetők anélkül, hogy a Bitcoin blokk mérete megváltozna.

Azért mondom, hogy elméletileg, mert vannak további tényezők, amelyek hozzájárulnak a SegWit blokk végső méretéhez. Valójában, ha megnézel egy Bitcoin blokklánc-kutatót, láthatod, hogy (legalábbis a cikk megjelenésekor) az átlagos blokkméret még mindig 1MB alatt van.

forrás: https://www.blockchain.com/charts

De ez nem jelenti azt, hogy a blokkok nem haladhatják meg az 1 MB-ot. 2018 elején tanúi lehettünk az egyik legnagyobb (valószínűleg még mindig a legnagyobb) generált blokkméretnek, amely 2,1 MB körüli súlyú volt. A SegWit soft forkja segített a blokkméret javításában az alapkód módosítása nélkül, de ez még mindig nem javítja a TPS-t skálázható módon.

Az előző négy forgatókönyvet megvizsgálva a proof-of-work konszenzus alatt láttuk, hogy a blokkméret egyszerű növelése vagy a bányászat bonyolultságának csökkentése csak eddig vezethet. Még ezek kombinációja is korlátozott lenne a tranzakciók terjedési ideje miatt. Ha gyorsabban próbálunk új blokkokat bányászni, mint ahogy a régi blokkok terjedni tudnak, az elég nagy biztonsági problémákhoz vezet. A SegWit időközben segített enyhíteni a TPS-problémák egy részét, de a Visa-szerű TPS eléréséhez még mindig szükség van egy skálázhatóbb megoldásra.

Úgy tűnik, hogy a TPS növeléséhez bármelyik darabot a helyére téve egy másik darabot mozdít ki a helyéről valahol máshol a blokklánc puzzle-ben; ettől függetlenül vannak projektek és startupok, amelyek a blokklánc elfogadottságának skálázható szintre való emeléséhez szükséges TPS-válaszok elérésén dolgoznak.

Létező és jövőbeli megközelítések a skálázhatóság megoldására

A skálázhatósági probléma lehetséges megoldását keresve több más kérdés is felmerül. Például, ha a válasz csak egy adott blokkláncra alkalmazható, akkor azon a feltételezésen alapul, hogy az adott blokklánc lesz az, amelynek a jövőben szüksége lesz erre a skálázhatóságra; ellenkező esetben az erőfeszítés indokolatlan vagy céltalan. Egy másik szempont az, hogy megértsük, mi lehet a kompromisszum. Jelenleg minden elérhető megoldás korlátozásokkal jár.

Batch Payments into One Transaction

Pros: Csökkenti a tranzakciós rekord méretét azáltal, hogy több tranzakciót egybefoglal, így összességében több tranzakciót lehet végrehajtani blokkonként, ami bizonyos mértékig növelheti a TPS-t.

Hátrányok: Nem lehet több pénztárca tranzakcióit összevonni; kockáztatja az adatvédelmet

A kötegelt fizetés a Bitcoin (és így a Bitcoin forks, beleértve a Digibyte, Dogecoin, Bitcoin Cash, stb.) egyik jellemzője volt az RPC sendmany-on keresztül. A tőzsdék már most is ezt csinálják, és ezt láthatod, ha megpróbálod megnézni a tranzakcióazonosítódat egy blokklánc-kutatóban. A végén azt láthatod, hogy egy pénztárca több különböző pénztárcának küld. Ebben az esetben ez egy kötegelt tranzakció.

Az előnye ennek az, hogy egy tranzakcióba téve azt jelenti, hogy 1) csak egy tranzakciós díjat kell fizetned, és 2) nem kell egy teljes tranzakciót írnod, ami, ahogy korábban leírtam, körülbelül 380 bájt, minden egyes tranzakcióhoz. Valójában a 380 bájtból, amiből a tranzakció lehet, csak 34 bájt lehet a tranzakciós információ.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.