- 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.
- Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS
- A SegWit megjelenése
- Létező és jövőbeli megközelítések a skálázhatóság megoldására
- Batch Payments into One Transaction
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.
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ó.