Transakčné poplatky a sieťová architektúra ako ochrana pred spamom
Na rozdiel od Bitcoinu alebo Etherea, ktoré fungujú na tradičnom trhu poplatkov, Cardano využíva systém pevných a predvídateľných poplatkov. Tieto poplatky síce nie sú prehnané, ale sú nastavené na úrovni, ktorá účinne odrádza od spamových útokov. Na druhej strane, extrémne nízke transakčné poplatky Solana sú dvojsečnou zbraňou. Vďaka nim sú síce transakcie cenovo dostupné, ale zároveň vedú k vysokej miere neúspešnosti - v súčasnosti sa neuskutoční približne 75 % transakcií používateľov. Sieť je zaplavená transakciami generovanými botmi.
Okrem transakčných poplatkov zohráva sieťová vrstva kľúčovú úlohu pri predchádzaní spamovým transakciám. Uzol Cardano využíva mem-pool a jeho protokol je konštruovaný spôsobom riadeným dopytom. Táto konštrukcia umožňuje každému uzlu a každému peerovi, ktorý je s ním prepojený, regulovať rýchlosť príchodu dát a množstvo nesplatených dát. Na druhej strane, Solana nevyužíva mem-pool, namiesto toho sú všetky transakcie smerované priamo k ďalším validátorom. Tento článok objasní, prečo je spamovanie Solany relatívne jednoduché, zatiaľ čo v prípade Cardana je to náročné.
Ako vyvážiť inkluzívnosť a bezpečnosť?
Určenie správnych poplatkov za používanie siete je výzvou, ktorej čelí každý blockchainový tím. Tieto poplatky by mali odrážať skutočné náklady na využívanie výpočtových zdrojov v distribuovanej sieti. Tím musí zvážiť potreby prevádzkovateľov siete, ktorí prevádzkujú uzly produkujúce bloky, aj používateľov. Zatiaľ čo prevádzkovatelia sa snažia o maximálne odmeny, používatelia uprednostňujú minimálne poplatky. Vyváženie týchto záujmov je veľmi dôležité.
Tradičné trhy s poplatkami, ako sú tie, ktoré sa používajú v Bitcoine alebo Ethereu, majú nevýhodu. Keď sa zvýši využívanie siete, zvýšia sa aj poplatky, čím sa sieť stane exkluzívnou a prístupnou len pre tých, ktorí si môžu dovoliť vysoké náklady. Naproti tomu Cardano využíva fixné a predvídateľné poplatky. Používatelia platia rovnaký poplatok za transakcie rovnakej veľkosti. Poplatok sa skladá z fixnej zložky a variabilnej zložky na základe veľkosti transakcie v bajtoch.
V prípade 200-bajtovej transakcie na Cardano je poplatok vždy presne 0,164271 ADA - ani viac, ani menej. Tento poplatok sa rovná približne 0,1 USD. S rastúcou cenou ADA sa zvyšuje aj dolárová hodnota poplatku.
V porovnaní s Bitcoinom alebo Ethereom, ktoré používajú tradičný trh s poplatkami, kde sa poplatky zvyšujú s dopytom po sieti, je tento poplatok nízky. Na Ethereu sa poplatky môžu pohybovať v rozmedzí od 1 do 100 USD (a viac), a to aj v prípade neúspešnej transakcie.
Štruktúra poplatkov Solana sa skladá z dvoch častí: základného poplatku a prioritného poplatku. Základný poplatok je fixný poplatok za transakciu. V súčasnosti je základný poplatok stanovený na 0,000005 SOL za podpis. Prioritný poplatok je voliteľný dodatočný poplatok, ktorý môžu používatelia zaplatiť, aby zvýšili pravdepodobnosť, že ich transakcia bude zaradená do bloku. Je to užitočné najmä pri časovo citlivých transakciách.
Poplatky sú nestále a môžu sa v priebehu času meniť. Podobne ako v prípade sietí využívajúcich trh s poplatkami, ak sa sieť využíva viac, poplatky sa zvyšujú.
V súčasnosti sa transakčné náklady na Solane pohybujú od 0,00001 do 0,00003 SOL, čo je približne 0,001 až 0,005 USD. V porovnaní s Cardanom sú poplatky na Solane výrazne nižšie, pričom rozdiel je približne 20- až 100-násobný.
Nízke poplatky sú síce pre používateľov atraktívne a robia zo Solany inkluzívnu sieť, nechránia však pred spamovými transakciami. Boti môžu posielať tisíce transakcií denne len za niekoľko dolárov. To je dôvod, prečo v súčasnosti 75 % transakcií používateľov na Solane zlyháva.
Ďalším kľúčovým aspektom, ktorý je potrebné zohľadniť pri poplatkoch za používanie siete, je dlhodobá ekonomická udržateľnosť každého decentralizovaného blockchainu. To znamená, že poplatky by mali byť dostatočné na pokrytie prevádzkových nákladov. Nízke výnosy z poplatkov možno vyvážiť nekonečnou infláciou mincí, čo by však mohlo mince časom potenciálne znehodnotiť v dôsledku nekonečnej inflácie.
Solana funguje na nekonečnej inflácii mincí, zatiaľ čo Cardano má vopred stanovený počet mincí, ktoré budú v obehu. V tejto chvíli je náročné určiť, ktorá stratégia je výhodnejšia.
Ak sa vrátime k téme ochrany proti spamovým transakciám, tradičný trh poplatkov, ktorý využívajú Bitcoiny a Ethereum, slúži ako účinný odstrašujúci prostriedok proti spamovým transakciám. Podobne aj poplatky v Cardano sú relatívne vysoké, čo robí pokusy o spamovanie siete nákladnými. Poplatky v Solane sú však také nízke, že spamovanie sa stáva lacnou záležitosťou.
Blockchainová sieť by mala byť univerzálne prístupná a nediskriminačná voči svojim používateľom. Nevyžaduje žiadne postupy typu Poznaj svojho zákazníka (KYC). Sieť v podstate nemôže cenzurovať transakcie.
Každý používateľ, ktorý zaplatí za transakciu, by mal mať primeranú istotu, že jeho transakcia bude zahrnutá do nadchádzajúceho bloku. Preto zavedenie akejkoľvek formy filtra nie je možné. Jediným obmedzením pri využívaní siete sú transakčné poplatky.
Prečo 75 % transakcií používateľov na Solane zlyháva?
Aby bola transakcia zahrnutá do bloku a trvalo zaznamenaná v účtovnej knihe, musí prejsť dvoma základnými vrstvami: sieťovou vrstvou a vrstvou konsenzu.
Na začiatku je transakcia spracovaná sieťovou vrstvou v uzle. Ak úspešne splní validačné kritériá tejto vrstvy, pokračuje do vrstvy konsenzu. Úlohou vrstvy konsenzu je určiť obsah nových blokov a dosiahnuť dohodu o bloku vo všetkých uzloch siete.
Tieto princípy sú spoločné pre všetky siete blockchain, hoci sa môžu v detailoch líšiť.
V niektorých blockchainoch, v ktorých transakcie vykazujú nedeterministické správanie, môže transakcia prejsť do vrstvy konsenzu a následne aj tak zlyhať. Dôvody tohto stavu môžu byť rôzne. Napríklad nemusia byť splnené podmienky na vykonanie transakcie inteligentného kontraktu podľa očakávaní používateľa. Transakcia sa teda vykoná, ale zlyhá, hoci používateľ zaplatil poplatok.
Súčasný problém so Solanou nespočíva v tom, že by konsenzuálna vrstva zhadzovala transakcie. Transakcie sa skôr ani nedostanú zo sieťovej vrstvy do vrstvy konsenzu. Sieťová vrstva je taká preťažená, že uzol sa rozhodne časť transakcií zahodiť. Uzol sa chráni pred preťažením a potenciálnym pádom, ku ktorému by mohlo dôjsť v dôsledku vyčerpania zdrojov.
Používatelia, ktorí sa pokúšajú využívať Solanu, často zisťujú, že ich transakcie zlyhávajú. Potom musia transakciu odoslať znova, čo si môže vyžiadať viacero pokusov. Je to predovšetkým preto, že si konkurujú s transakciami generovanými botmi. Boti, ktorí sú rýchlejší a schopní generovať podstatne väčší objem transakcií ako používatelia, v sieti dominujú. Obrovské množstvo transakcií, ktoré generujú boti, súvisí s arbitrážou. Odhaduje sa, že len 10 % transakcií je generovaných používateľmi.
Na obrázku môžete vidieť, ako boti a používatelia súťažia o to, čie transakcie sa dostanú do bloku prostredníctvom vrstiev siete a konsenzu.
Uvažujme scenár, v ktorom zo 100 transakcií je 10 od používateľov a 90 od botov. Ak sa uzol rozhodne vyradiť 30 % transakcií, je možné, že v danom čase budú vyradené všetky transakcie používateľov. Ak je uzol preťažený, môže sa rozhodnúť zahodiť ešte viac transakcií. Bežne je to 50 % transakcií.
Sieť Solana je funkčná a výpočtové zdroje uzlov nie sú vyčerpané v dôsledku upúšťania transakcií. V dôsledku toho nie je potrebné sieť reštartovať a riziko pádu uzla je nízke. Reštart by neriešil ani problém s botmi. Hlavný problém spočíva v ťažkostiach, ktorým čelia používatelia pri pokuse o odosielanie transakcií. Napriek tomu, že sieť beží, je v podstate nepoužiteľná. Väčšinu transakcií, ktoré sa dostanú do blokov, vytvárajú boti, len niekoľko z nich sú transakcie používateľov.
Na obrázku môžete vidieť červené transakcie od botov a používateľov, ktoré uzol zahodil, a niekoľko čiernych transakcií len od botov, ktoré sa dostali do konsenzuálnej vrstvy a majú šancu byť úspešne spracované (a uložené do účtovnej knihy).
Je dôležité poznamenať, že zatiaľ čo každý používateľ má zvyčajne jedno spojenie na odoslanie transakcie, boti môžu udržiavať viacero spojení súčasne. To dáva botom značnú výhodu.
Okrem toho je bežné, že jeden bot posiela spamové transakcie do viacerých uzlov. Je to preto, že boti sa snažia o čo najrýchlejšie spracovanie svojich transakcií a odosielanie transakcií viacerým uzlom zvyšuje pravdepodobnosť, že sa tak stane.
Rozhodovanie o tom, ktoré spojenia má uzol zrušiť, aby nebol zahltený transakciami, je zložitá otázka. Na sieťovej vrstve je analýza obsahu transakcií náročná vzhľadom na výpočtové zdroje potrebné na rozbor obsahu správ. Okrem toho je takmer nemožné rozlíšiť transakcie používateľov od transakcií generovaných botmi. Boti generujú spamové transakcie, ale z pohľadu sieťovej a konsenzuálnej vrstvy môže ísť o platné transakcie obsahujúce poplatky. Ide o platnú spamovú transakciu. Najjednoduchšou stratégiou by mohlo byť náhodné vynechávanie transakcií, ale to tento problém účinne nerieši.
Keď uzol Solana zahodí transakciu, poplatok za transakciu sa nezaplatí. Poplatok za transakciu totiž vzniká len vtedy, keď je transakcia úspešne spracovaná a zaradená do bloku. Ak je transakcia zrušená skôr, ako sa dostane do konsenzuálnej vrstvy, je to, ako keby transakcia nebola nikdy odoslaná, a preto sa neúčtuje žiadny poplatok.
Problém, ktorému čelí tím Solana, spočíva v tom, že aj keď sú transakcie vytvorené botmi zahrnuté do bloku, súvisiace poplatky sú zanedbateľné v porovnaní s potenciálnymi arbitrážnymi ziskami. To platí aj v prípade, že väčšina transakcií zlyhá na úrovni konsenzu a poplatky sa platia.
Výpočty
Solana denne spracuje približne 25 miliónov transakcií používateľov. Z týchto transakcií sa vyberú poplatky od používateľov v rozmedzí od 25 000 do 100 000 USD.
Odhaduje sa, že používateľské transakcie tvoria približne 10 % z celkového počtu, pričom boti tvoria až 90 %. Z toho vyplýva, že spameri by museli na transakčné poplatky vynaložiť približne 50 000 USD (250 SOL) denne.
Na druhej strane Ethereum vyberie na poplatkoch denne približne 400 ETH, čo sa rovná približne 1,5 milióna USD. Preto by spamovanie Etherea stálo približne 30-krát viac ako spamovanie Solana.
Protokol Cardano vyberie každý deň na poplatkoch približne 12 000 USD. To je takmer päťkrát menej ako Solana. Niekto by sa teda mohol čudovať, prečo Cardano nie je zahltený spamovými transakciami. V ďalšej časti článku sa ponoríme do sieťovej vrstvy, aby sme na to odpovedali.
Je potrebné si uvedomiť, že ak by Cardano dokázalo spracovať rovnaké množstvo transakcií ako Solana, a túto kapacitu možno dosiahnuť pomocou vstupných endorserov, sieť by na poplatkoch vybrala približne 2,5 milióna USD denne. Ochrana pred spamom by bola dostatočná.
Jeden blok v blockchaine Cardano dokáže pojať približne 250-300 základných transakcií. Ak uvažujeme o poplatku za transakciu vo výške 0,1 USD za každú, Cardano by získalo príjem 25-30 USD za blok. Vzhľadom na to, že Cardano generuje nový blok zhruba každých 20 sekúnd, znamená to dennú produkciu 4 320 blokov. Ak by sa všetky tieto bloky zaplnili výlučne platnými spamovými transakciami, jednotlivec, ktorý by inicioval útok, by na transakčných poplatkoch vynaložil denné náklady presahujúce 100 000 USD.
Architektúra siete Solana
V predchádzajúcej časti článku sme hovorili o sieťovej vrstve len z pohľadu uzla validátora. To bolo trochu zjednodušené.
Používatelia aj boti sa pripájajú k validátorom prostredníctvom serverov RPC. Používatelia priamo nevedia, kto je vedúci validátor, preto posielajú svoje transakcie na server RPC, ktorý ich preposiela aktuálnemu a nasledujúcemu validátoru podľa plánu vedúceho validátora. Tento plán je známy vopred.
Sledujme životný cyklus transakcie Solana. Transakcie Solana nie sú gossipované do mem-poolu ako v iných sieťach. Namiesto toho sa musia poslať priamo ako paket UDP vedúcemu konsenzuálneho protokolu. Servery RPC, ktoré poznajú plán lídra, preto posielajú transakcie priamo tým validátorom, ktorí budú vytvárať bloky v nasledujúcom kole.
Solana sa snaží spracovať všetky odoslané transakcie čo najskôr. Namiesto rozposielania transakcií do všetkých uzlov (čo trvá určitý čas) sa transakcie smerujú k ďalším validátorom s predpokladom, že všetky budú zahrnuté do nasledujúceho bloku.
Zjednodušene povedané, validátory sú zraniteľné voči útokom botov prostredníctvom obmedzeného počtu serverov RPC. Je to preto, že všetky transakcie sú týmito servermi odovzdávané ďalším validátorom. Keď objem spamového útoku prekročí kapacitu niekoľkých blokov Solana, vedie to k preťaženiu siete. Následne validátory začnú upúšťať od transakcií.
To znamená, že boti sa nemusia zameriavať na mnoho validátorov Solana, alebo skôr serverov RPC, v celej sieti, pretože podľa návrhu sú všetky nové transakcie smerované na ďalšie validátory, ktoré môžu byť rýchlo zaplavené transakciami.
Na obrázku môžete vidieť, ako servery RPC presmerujú všetky transakcie na uzol validátora 1. Ten môže byť ľahko zahltený transakciami a začne ich zahadzovať. Hneď ako uzol 1 vytvorí blok, servery RPC analogicky posunú všetky transakcie ďalšiemu validátoru, napríklad uzlu 2. Pre ľahšie pochopenie som to zjednodušil.
Miesto odoslania transakcie a konkrétny použitý server RPC je irelevantné, pretože všetky servery RPC majú za cieľ posunúť transakciu ďalším validátorom. Keď sieť nie je preťažená, systém funguje bez problémov a poskytuje používateľom takmer okamžité potvrdenia transakcií. Architektúra siete spolu s nízkymi poplatkami ju však bohužiaľ robí náchylnou na spamovanie.
Je potrebné dodať, že okrem transakcií používateľov sú rozhodujúcou súčasťou konsenzuálneho mechanizmu siete Solana aj hlasovacie transakcie. Validátori v sieti Solana si navzájom posielajú hlasy na potvrdenie transakcií. Tieto hlasy sú kľúčovou súčasťou mechanizmu konsenzu siete Solana, ktorý potvrdzuje transakcie.
Ako je Cardano chránené pred spamovými transakciami?
Okrem primeraných transakčných poplatkov je najúčinnejšou ochranou proti spamovým útokom decentralizácia. S približne 3 000 poolmi je Cardano toho príkladom. Každý pool, ktorý je uzlom produkujúcim bloky, je zvyčajne prepojený s 2-3 relay uzlami a je za nimi chránený. Toto usporiadanie zabraňuje priamej sieťovej komunikácii s uzlom produkujúcim bloky.
Reléové uzly slúžia ako sprostredkovatelia medzi uzlami jadra siete a internetom a vytvárajú bezpečnostnú bariéru okolo uzlov produkujúcich bloky.
Nová transakcia sa po odoslaní prenáša z reléového uzla do uzla produkujúceho bloky. Táto transakcia sa potom šíri do všetkých ostatných uzlov produkujúcich bloky, pričom tento proces sa tiež uskutočňuje prostredníctvom reléových uzlov.
Na rozdiel od Solany sa transakcie nespracúvajú okamžite. Namiesto toho sa uchovávajú v mem-pooloch v mnohých uzloch siete. Ďalší vedúci uzol, ktorý je uzlom s udeleným právom raziť nový blok, získa transakcie z mem-poolu a vloží ich do nového bloku.
Na obrázku môžete vidieť transakciu (červený rámček), ktorá sa postupne dostane do všetkých mem-poolov (žltý rámček) prostredníctvom postupného šírenia (červené šípky) transakcie cez relay uzly. Pre ľahšie pochopenie som obrázok zjednodušil.
V danom čase sa obsah mem-poolov vo všetkých uzloch mení. Je to preto, že transakcie sa odovzdávajú súčasne z rôznych miest a ich šírenie trvá určitý čas. Výsledkom je, že každý mem-pool obsahuje jedinečný, ale veľmi podobný súbor transakcií.
Z 3 000 uzlov, ktoré vytvárajú bloky, má každý potenciál vytvoriť nový blok obsahujúci porovnateľný súbor transakcií. Uzol vybraný ako ďalší vedúci slotu bude zodpovedný za výrobu tohto nového bloku.
Pravdepodobne vás napadne, že bot môže ľahko zaplniť mem-pooly všetkých ostatných uzlov v sieti prostredníctvom jedného uzla, podobne ako je to popísané na ďalšom obrázku. Cez uzol 1 sa všetky transakcie dostanú do uzla 2 a potom do uzla 3.
V protokole v štýle riadenom dopytom, ako je Cardano, každý uzol kontroluje rýchlosť prichádzajúcich údajov, maximálnu súbežnosť (počet simultánnych úloh) a množstvo nevyriešených údajov (údaje, ktoré boli odoslané, ale ešte neboli potvrdené). To znamená, že každý uzol požiada o ďalšiu prácu, až keď je pripravený, namiesto toho, aby mu bola práca vnucovaná.
Protokol Node-to-node (NtN) prenáša transakcie medzi plnými uzlami. NtN zahŕňa tri miniprotokoly (chain-sync, block-fetch a tx-submission), ktoré sú multiplexované cez jeden kanál TCP.
NtN sa riadi stratégiou založenou na ťahaní, kde sa iniciátorský uzol pýta na nové transakcie a odpovedajúci uzol odpovedá transakciami, ak nejaké existujú. Tento protokol sa dokonale hodí do prostredia bez dôvery, kde obe strany musia byť chránené pred útokmi na spotrebu zdrojov z druhej strany.
Pozrite si kontrast medzi Cardanom a Solanou. V prípade Solany servery RPC delegujú úlohy na validátory. V scenári Cardano však každý uzol aktívne chráni svoje zdroje.
Každý uzol má za úlohu overiť transakciu pred jej odoslaním. Ak uzol odošle neplatné alebo nevyžiadané transakcie, ostatné uzly ho odpojia. Na zachovanie rovnakého počtu spojení má možnosť nadviazať spojenie s iným uzlom.
Ak bot odosiela platné transakcie do jedného uzla, môže nasýtiť mem-pool tohto uzla. Keď sa mem-pool uzla naplní, prestane prijímať nové transakcie (nebude ich pridávať do mem-poolu). Ostatné uzly začnú prijímať transakcie, len ak majú vo svojich mem-pooloch voľné miesto. Transakcie, ktoré získajú, môžu byť kombináciou transakcií generovaných botmi a transakcií od používateľov.
Uzol môže prijímať transakcie používateľov od svojich relay uzlov. Ak má uzol dostatok transakcií na zaplnenie mem-poolu, nebude musieť ťahať transakcie z iných uzlov. Toto je štandardná operácia pre všetky uzly v sieti. Ak by sa bot zameral na jeden uzol, nedokázal by zabrániť tomu, aby bola väčšina používateľských transakcií zahrnutá do nasledujúcich blokov.
Pravdepodobnosť úspešných útokov rastie s počtom uzlov, na ktoré sa boti zameriavajú, pretože by zaplnili viac mem-poolov platnými spamovými transakciami. To však výrazne komplikuje a zvyšuje náklady na útok.
Každý uzol, ktorý sa rozhodne odmietnuť transakcie a považuje ich za vytvorené botmi, v podstate chráni ostatné uzly v sieti.
Na obrázku vidíte, že bot posiela platné spamové transakcie do uzla 1. Pamäťový fond uzla 1 môže byť plný platných spamových transakcií. Alica a Bob posielajú platné používateľské transakcie do uzla 3. Uzol 3 mal prázdne miesto v mem-poole a stiahol len jednu platnú spamovú transakciu z uzla 2. Ak by sa uzol 3 stal v ďalšom kole vedúcim slotu, väčšina transakcií v bloku by bola od používateľov.
Keď bot odošle transakciu, pridá sa do mem-poolu, čím sa efektívne rezervuje ADA, ktorý bol použitý ako transakčný poplatok. Cardano mem-pool má dvojnásobnú kapacitu bloku, do ktorého sa zmestí približne 500 až 600 transakcií. Ak sa bot zameria na zaplnenie 100 mem-poolov odlišnými transakciami, výsledkom bude celkovo 60 000 transakcií, čo bude stáť približne 6 000 USD na poplatkoch. Tento objem transakcií by sieť mohla spracovať v priebehu hodiny. Napriek tomu je pravdepodobné, že sieť bude naďalej spracovávať značný počet používateľských transakcií prostredníctvom uzlov, na ktoré sa útočník priamo nezameral a ktoré obsahujú používateľské transakcie vo svojom mem-poole. Niektoré transakcie však môžu byť stiahnuté z iných uzlov, takže môže ísť o platné spamové transakcie.
Záver
Poplatky a architektúra siete sú v podstate primárnou obranou proti spamovým transakciám. Arbitrážne roboty sú povinné predkladať platné transakcie vrátane poplatkov. Nejde o tradičný útok DDOS, pri ktorom je cieľom zaplavenie uzla transakciami na sieťovej vrstve. Ak boti predložia do siete veľký objem transakcií, uzly môžu začať upúšťať od používateľských transakcií na úrovni siete. To predstavuje riziko pre všetky siete, pretože ide o legitímne transakcie, ktoré obsahujú zaplatené poplatky. Ak útočník môže z arbitráže získať väčší zisk, poplatky nemusia poskytovať dostatočnú ochranu pred spamovými transakciami. Útočníkovi nedôjdu prostriedky a môže útok udržiavať, kým je arbitráž ziskový. Preto je ďalšou rozhodujúcou vrstvou ochrany architektúra siete.
Pri diskusii o decentralizácii a tvorbe blokov by sa dalo tvrdiť, že Solana je podstatne centralizovanejšia (a teda náchylnejšia na zaplavenie transakciami) ako Cardano, vzhľadom na to, že plán lídrov je vopred určený a všetky transakcie sú smerované k nim. Všimnite si, že na počte validátorov vôbec nezáleží. Tím Solana stojí pred ťažkou úlohou, ako sa s tým vysporiadať, podobne ako tím Cardano, ktorý musí zlepšiť škálovateľnosť. Ani jedna z týchto výziev nie je triviálna.
Pôvodný článok: https://cexplorer.io/article/transaction-fees-and-network-architecture-as-spam-protection
1 post - 1 participant