Quantcast
Channel: Translations - Cardano Forum
Viewing all articles
Browse latest Browse all 288

🇸🇰 Pochopenie odolnosti Cardana proti spamovým transakciám

$
0
0

Pochopenie odolnosti Cardana proti spamovým transakciám

Siete blockchain vo svojej pôvodnej podobe čelia problémom so škálovateľnosťou. Priepustnosť siete, často meraná v transakciách za sekundu (TPS), je obmedzená veľkosťou bloku a rýchlosťou tvorby blokov. V situáciách, keď dôjde k náhlemu nárastu transakcií, môže dôjsť k preťaženiu siete, čo môže viesť k potenciálnym ťažkostiam pre používateľov, ktorí sa pokúšajú zadávať transakcie. V tomto článku sa budeme venovať mechanike spracovania transakcií v sieti Cardano a jej robustnosti pri spracovaní spamových transakcií.

Blockchainové siete sa často zahlcujú

Po prvé, je nevyhnutné pochopiť, že neexistuje žiadna spoľahlivá ochrana proti spamovým transakciám. Každá transakcia, ktorá zahŕňa poplatok za používanie siete, je v ideálnom prípade spracovaná blockchainovou sieťou bez akejkoľvek diskriminácie.

Blockchain nerozlišuje medzi transakciou od individuálneho používateľa a množstvom transakcií od spamového bota, ktorého cieľom je zahltiť sieť. Z pohľadu blockchainu sú všetky transakcie platné. Počet transakcií, ktoré môže používateľ (alebo bot) odoslať, neobmedzujú žiadne vopred definované obmedzenia. Aspoň v ideálnom svete.

Transakčné poplatky slúžia ako jedno z preventívnych opatrení proti spamovaniu. Napríklad transakčný poplatok vo výške 0,1 USD by bol primeraný pre transakciu, ktorou sa prenáša hodnota v hodnote 1000 USD. Zaplavenie siete 1 miliónom transakcií naraz by stálo 100 000 USD.

Sieť blockchainu môže byť preťažená v dôsledku náhleho nárastu dopytu, napríklad počas razenia novej série NFT. Autor série NFT môže dať používateľom pokyn, aby posielali transakcie v určitom časovom intervale. To by mohlo viesť k záplave 1 milióna transakcií do siete, čo by spôsobilo preťaženie podobné spamovému útoku. Kľúčovým rozdielom je, že poplatky za transakcie platí 1 milión používateľov, pričom každý z nich platí 0,1 USD.

Pre ostatných používateľov môže byť výsledok v oboch scenároch podobný. Mohli by sa stretnúť s ťažkosťami pri odosielaní svojich transakcií.

V prípade razenia série NFT sieť nakoniec spracuje všetky transakcie a vráti sa k prijímaniu nových transakcií. V prípade spamového útoku však môže útočník pretrvávať dovtedy, kým je ochotný financovať útok.

Stojí za zmienku, že útočník môže byť schopný získať späť časť nákladov na útok prostredníctvom ekonomických ziskov, napríklad arbitráže. To však závisí od rôznych faktorov a nie je to zaručené.

Cardano funguje s pevnou štruktúrou transakčných poplatkov, kde sa poplatky určujú na základe veľkosti transakcie v bajtoch. Napríklad pri 200-bajtovej transakcii vzniká zakaždým poplatok vo výške 0,164 ADA.

Siete, ktoré využívajú trh poplatkov, majú výhodu, pretože používatelia sa môžu rozhodnúť platiť vyššie poplatky za používanie, keď je sieť preťažená. To znamená, že každý pokus o spamovanie siete sa stáva ekonomicky náročnejším. Útočník je nútený zvyšovať poplatky, pretože uzly môžu začať vyraďovať transakcie po dosiahnutí kapacity siete (napríklad mem-poolov). Tieto vyradené transakcie by mohli byť staršie transakcie s najnižšími poplatkami. Náklady na spamový útok sú teda nepredvídateľné.

Náklady na spamový útok sú ďalej umocnené vysokým TPS a do istej miery aj decentralizáciou.

Čím rýchlejšie sieť spracúva transakcie, tým viac transakcií musí útočník predložiť a tiež zaplatiť. Siete s nízkym TPS sú ľahším cieľom pre spamovanie.

Cardano so svojím priemerným TPS a predvídateľnými poplatkami (Cardano nemá trh s poplatkami, takže poplatky za transakcie sa nikdy nezvyšujú) by teoreticky mohlo byť hlavným cieľom spamového útoku. Cardano však vykazuje silnú odolnosť voči spamovým útokom vďaka distribuovanej povahe blockchainu.

Cardano pozostáva z približne 3100 uzlov, z ktorých každý disponuje vlastným mem-poolom, ktorý je dvakrát väčší ako veľkosť bloku. Predtým, ako sieť zastaví prijímanie všetkých nových transakcií, musia spamové transakcie teoreticky najprv zaplniť všetky mem-pooly vo všetkých uzloch.

Prečo je škálovateľnosť pre blockchain výzvou?

V tradičných systémoch založených na serveroch sa škálovateľnosť často dosahuje pridaním ďalších serverov, keď jeden server nedokáže pokryť dopyt. Toto je známe ako horizontálne škálovanie. Siete blockchain však fungujú inak a nedajú sa škálovať rovnakým spôsobom.

V blockchainovej sieti si každý uzol udržiava kópiu celého blockchainu a zúčastňuje sa na procese konsenzu. Proces konsenzu zahŕňa odsúhlasenie transakcií, ktoré majú byť zahrnuté do nasledujúceho bloku, a zabezpečenie toho, aby všetky uzly mali rovnaké údaje. To je kľúčové pre zachovanie integrity a bezpečnosti blockchainu.

Pridávanie ďalších uzlov do siete blockchain nezvyšuje jej škálovateľnosť z hľadiska kapacity spracovania transakcií. Môže potenciálne spomaliť sieť. Každý ďalší uzol totiž zvyšuje množstvo komunikácie potrebnej na dosiahnutie konsenzu, čo môže spomaliť proces vytvárania blokov.

Preto jednoduché pridanie ďalších uzlov (alebo “serverov”) do blockchainovej siete nezvyšuje jej škálovateľnosť. Namiesto toho je škálovateľnosť v blockchainových sieťach komplexnou otázkou, ktorá sa rieši rôznymi stratégiami, ako sú sharding (paralelné spracovanie transakcií), riešenia na druhej vrstve (transakcie mimo reťazca) a optimalizácia algoritmov konsenzu. Cieľom týchto riešení je zvýšiť počet transakcií, ktoré môže sieť spracovať za sekundu, bez toho, aby bola ohrozená jej decentralizovaná povaha a bezpečnosť.

V modeli klient-server predstavuje server jediný bod zlyhania. Ak server vypadne, celý systém sa môže stať nedostupným. V sieti blockchain však neexistuje žiadny centrálny orgán ani server. Sieť je udržiavaná viacerými uzlami, z ktorých každý má kópiu celého blockchainu. To znamená, že aj keď jeden uzol zlyhá, sieť funguje ďalej, čím je zabezpečená nepretržitá služba.

Trilema blockchainu je výzvou pre všetky tímy, pretože je ťažké dosiahnuť decentralizáciu a vysokú škálovateľnosť zároveň. V prípade riešenia typu server-klient je škálovateľnosť a ochrana pred spamom pomerne jednoduchá.

V architektúre server-klient sa pri preťažení siete môže použiť niekoľko stratégií na riadenie záťaže:

  • škrtenie: Ide o obmedzenie rýchlosti, akou server spracováva požiadavky. Pomáha predchádzať preťaženiu servera tým, že zabezpečuje, aby server nedostával viac požiadaviek, ako môže v danom čase spracovať.
  • Vyváženie záťaže: Táto technika rozdeľuje sieťovú prevádzku medzi viacero serverov, aby sa zabezpečilo, že žiadny server nebude zahltený príliš veľkým počtom požiadaviek.
  • Prioritizácia prevádzky: Niektoré systémy môžu uprednostňovať určité typy prevádzky pred inými. Napríklad služba na streamovanie videa môže uprednostniť video údaje pred inými typmi údajov, aby sa zabezpečilo plynulé prehrávanie.
  • Prepustenie transakcií: V extrémnych prípadoch môže server začať zahadzovať prichádzajúce požiadavky, keď je ich príliš veľa. Zvyčajne ide o poslednú možnosť, ako zabrániť pádu servera.

Tieto mechanizmy však nie sú priamo použiteľné v blockchainových sieťach vzhľadom na ich decentralizovanú, bezpovolenkovú a otvorenú povahu:

  • Decentralizácia: Na rozdiel od centralizovaného servera sa blockchainová sieť skladá z viacerých uzlov, z ktorých každý udržiava kópiu celého blockchainu. To znamená, že škrtenie alebo vyrovnávanie záťaže nemožno riadiť centrálne.
  • Bez oprávnení a otvorenosť: Do blockchainovej siete sa môže pripojiť a zúčastniť ktokoľvek a každý účastník má rovnaké právo zadávať transakcie. Je možné uprednostňovať transakcie na základe poplatkov. Sieť sa však môže stať exkluzívnou, dostupnou len pre bohatých.
  • Férovosť: Protokol blockchainu zabezpečuje, že so všetkými transakciami sa zaobchádza rovnako bez ohľadu na ich pôvod a výšku.

V centralizovanom systéme môže jeden server alebo skupina serverov riadiť záťaž riadením rýchlosti požiadaviek na služby (throttling) alebo rozdelením záťaže medzi viacero serverov (load balancing). V decentralizovanej blockchainovej sieti však tieto úlohy nemožno riadiť centrálne. Je to preto, že každý uzol v sieti spracúva svoje požiadavky a neexistuje centrálny orgán, ktorý by tieto úlohy koordinoval.

Niektoré projekty však majú tendenciu centralizovať konsenzus v tomto ohľade, pretože tímy sa snažia dosiahnuť vysokú TPS.

Blockchain zabezpečuje spravodlivosť prostredníctvom decentralizácie. To znamená, že žiadny jednotlivý účastník nemôže manipulovať so systémom vo svoj vlastný prospech. Všetky uzly v sieti majú rovnakú moc a zodpovednosť pri udržiavaní blockchainu. Snahy o centralizáciu konsenzu môžu viesť k obmedzeniu autonómie uzlov, t. j. k určitej forme nespravodlivosti v systéme.

V prípade silného spamového útoku môžu uzly začať zahadzovať transakcie alebo prestať akceptovať novo prichádzajúce transakcie. Toto nie je ideálne riešenie, pretože je v rozpore so zásadou spravodlivosti. Je to však nevyhnutné opatrenie na ochranu siete a zabezpečenie jej prežitia.

Každé zariadenie, ktoré je pripojené k sieti, t. j. aj uzol blockchainu, musí chrániť svoje zdroje pred vyčerpaním, inak by mohlo dôjsť k jeho zrúteniu. Prípadný pád viacerých uzlov naraz by mohol ohroziť fungovanie celého systému. Reštartovanie siete nie je pre blockchain možnosťou.

Je však rozdiel, či konkrétny uzol bráni svoje zdroje autonómne, alebo či to robí centrálna autorita.

Keď sa tím snaží skonštruovať blockchain s vysokou rýchlosťou spracovania transakcií (TPS) a začleniť do neho antispamové mechanizmy podobné tým v architektúre server-klient, často musí pristúpiť na kompromisy v oblasti decentralizácie. Mechanizmus konsenzu môže vykazovať prvky centralizácie. Väčšia centralizácia uľahčuje vývoj ochranných opatrení proti spamu v sieti.

Ako je Cardano odolné voči spamu?

Okrem vhodných transakčných poplatkov slúži decentralizovaná štruktúra blockchainovej siete ako do istej miery účinná ochrana proti spamovým útokom. Cieľom siete Cardano je spracovať všetky transakcie, ktoré boli prijaté.

Ak Cardano nie je schopné prijať novo zadanú transakciu, používateľ je okamžite informovaný a môže sa pokúsiť o jej opätovné zadanie.

Sieť Cardano sa skladá z 3 100 poolov. Každý pool, ktorý funguje ako uzol produkujúci bloky, je zvyčajne pripojený k 2 - 3 reléovým uzlom a je za nimi chránený. Toto nastavenie bráni priamej sieťovej komunikácii s uzlom produkujúcim bloky. Reléové uzly fungujú ako sprostredkovatelia medzi uzlami jadra siete a internetom a vytvárajú bezpečnostný perimeter okolo uzlov produkujúcich bloky.

V systéme Cardano si každý uzol produkujúci bloky alebo pool udržiava svoj mem-pool. V ňom sa uchovávajú transakcie pred ich zaradením do bloku. Veľkosť mem-poolu je nastavená na dvojnásobok veľkosti aktuálneho bloku, čo mu umožňuje pojať približne 600 štandardných transakcií alebo menší počet väčších transakcií s vyšším poplatkom.

Mem-pool slúži ako sieťová vyrovnávacia pamäť a môže spôsobiť mierne oneskorenie pri začleňovaní transakcií do bloku. Transakcia v mem-poole, ktorá funguje na princípe “kto prv príde, ten prv melie”, by mala byť zaradená do nového bloku v priebehu nasledujúcich dvoch blokov za predpokladu, že sa rozšírila do všetkých uzlov. V čase preťaženia siete však môže byť transakcia prítomná len v niekoľkých mem-pooloch, čo vedie k dlhšiemu času čakania, kým bude zaradená do nového bloku.

Po odoslaní sa nová transakcia odovzdá z relay uzla do uzla vytvárajúceho blok. Táto transakcia sa potom šíri do všetkých ostatných uzlov vytvárajúcich bloky, pričom tento proces uľahčujú reléové uzly. Ďalej sa budeme zaoberať tým, ako sa na šírenie transakcií využívajú miniprotokoly Node-to-Node (NtN).

Transakcie sa nespracúvajú okamžite. Namiesto toho sa ukladajú do pamäťových fondov v rôznych uzloch siete. Vedúci nasledujúceho slotu, uzol, ktorý má privilégium raziť nový blok, získa transakcie z mem-poolu a zahrnie ich do nového bloku. Všetky pooly v sieti Cardano sú tak pripravené na razenie nového bloku, čo zvyšuje robustnosť siete tým, že eliminuje jediný bod zlyhania.

Na priloženom diagrame môžete pozorovať transakciu (znázornenú červeným rámčekom), ktorá sa postupne dostane do všetkých mem-poolov (znázornených ako žlté rámčeky) prostredníctvom postupného šírenia (naznačeného červenými šípkami) transakcie cez relay uzly.

V každom okamihu sa obsah mem-poolov vo všetkých uzloch môže líšiť. Je to spôsobené transakciami, ktoré sa odosielajú z rôznych miest súčasne, a časom potrebným na ich šírenie. V dôsledku toho každý mem-pool obsahuje jedinečný, ale veľmi podobný súbor transakcií.

Z 3 100 uzlov vytvárajúcich bloky má každý potenciál vytvoriť nový blok obsahujúci podobnú sadu transakcií. Uzol vybraný ako ďalší vedúci slotu bude mať za úlohu vytvoriť tento nový blok.

Cardano funguje ako protokol riadený dopytom. Každý uzol kontroluje rýchlosť prichádzajúcich dát, maximálnu súbežnosť (počet simultánnych úloh) a objem nevyriešených dát (odoslané, ale ešte nepotvrdené dáta). To znamená, že každý uzol si vyžiada ďalšiu prácu až vtedy, keď je na ňu pripravený, namiesto toho, aby mu bola práca vnucovaná.

Protokol Node-to-Node (NtN) uľahčuje prenosy transakcií medzi plnými uzlami prostredníctvom reléových uzlov. NtN zahŕňa tri miniprotokoly (chain-sync, block-fetch a tx-submission), ktoré sú multiplexované cez jeden kanál TCP.

NtN využíva stratégiu založenú na ťahaní, kde iniciátorský uzol požaduje nové transakcie a odpovedajúci uzol poskytuje transakcie, ak sú k dispozícii. Tento protokol sa ideálne hodí do prostredia bez dôvery, kde musia byť obe strany chránené pred útokmi na spotrebu zdrojov z druhej strany.

Na nasledujúcom diagrame môžete pozorovať, ako dochádza k šíreniu blokov medzi poolmi prostredníctvom miniprotokolov. Alica odošle transakciu uzlu 1 (znázornené červenými šípkami). Uzol 2, ktorý má vo svojom mem-poole voľné miesto, začne požadovať transakcie zo svojho okolia. Uzol 2 odošle požiadavku uzlu 1, a tým získa Alicinu transakciu (znázornené modrými šípkami 1 až 6). O chvíľu neskôr urobí to isté uzol 3, ktorý požiada uzol 2 (modré šípky 7 až 12). Alicina transakcia je teraz prítomná vo všetkých mem-pooloch.

Každý uzol je zodpovedný za overenie transakcie pred jej odovzdaním. Ak uzol posiela neplatné alebo nevyžiadané transakcie, riskuje, že ho ostatné uzly odpojia. Aby si uzol zachoval svoje sieťové spojenia, môže sa rozhodnúť pre spojenie s iným uzlom.

Je dôležité pochopiť, že mem-pooly sa napĺňajú súčasne z rôznych miest v sieti. Množstvo používateľov odosiela transakcie súčasne prostredníctvom rôznych relay uzlov. Tieto transakcie sa potom postupne šíria prostredníctvom miniprotokolov.

Na priloženom obrázku môžete pozorovať postupné napĺňanie troch mem-poolov. Alica, Bob a Bot predkladajú transakcie z rôznych miest. V čase TIME-1 obsahuje každý mem-pool jednu transakciu. V ČASE-2 uzly stiahli transakcie zo svojich rovnocenných uzlov. Teraz všetky mem-pooly obsahujú jednu transakciu Bota a dve užívateľské transakcie. Bez ohľadu na to, ktorý uzol sa stane vedúcim slotu, bude súbor transakcií v nasledujúcom bloku identický.

Poďme sa zahĺbiť do toho, čo sa odohráva počas spamového útoku.

Bot môže zaplavovať jeden uzol platnými spamovými transakciami, čím zaplní pamäťový fond tohto uzla. Keď sa pamäťový fond naplní, uzol prestane prijímať nové transakcie, t. j. nebude ich pridávať do pamäťového fondu.

Ostatné uzly začnú sťahovať transakcie, len ak majú vo svojich mem-pooloch miesto. Transakcie, ktoré ťahajú, 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 svojho mem-poolu, nebude musieť ťahať transakcie z iných uzlov. Toto je štandardný postup pre všetky uzly v sieti. Ak sa bot zameria na jeden uzol, nebude môcť zabrániť tomu, aby sa väčšina používateľských transakcií dostala do následných blokov.

Pravdepodobnosť úspešných útokov sa zvyšuje 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 útok a zvyšuje jeho náklady.

Každý uzol, ktorý sa rozhodne odmietnuť transakcie a považuje ich za vytvorené botmi, v podstate chráni ostatné uzly v sieti.

Na priloženom obrázku vidíte, že bot posiela platné spamové transakcie do uzla 1. Pamäťový fond uzla 1 môže byť zaplnený platnými spamovými transakciami. Súčasne Alica a Bob posielajú platné používateľské transakcie do uzla 3. Uzol 3, ktorý má vo svojom mem-poole voľné miesto, stiahne z uzla 2 iba jednu platnú spamovú transakciu. Ak sa uzol 3 stane v ďalšom kole vedúcim slotu, väčšina transakcií v bloku bude od používateľov.

Ak je za lídra slotu zvolený uzol 1 alebo uzol 2, výsledný blok bude zaplnený spamovými transakciami. Všetky transakcie si však nakoniec nájdu cestu do bloku, ak ich používatelia dokážu úspešne odoslať do mem-poolu.

Ako možno pozorovať, Cardano v danom okamihu prijíma transakcie až do výšky kapacity jednotlivých mem-poolov v rôznych uzloch. Nerozlišuje pritom medzi spamovými transakciami a transakciami používateľov.

Po prijatí nového bloku uzol preskúma transakcie v rámci bloku a odstráni tieto transakcie zo svojho mem-poolu. Týmto úkonom sa uvoľní miesto v mem-poole, čo uzlu umožní prijímať nové transakcie.

Ak by sa vo všetkých mem-pooloch nachádzali identické spamové transakcie, všetky mem-pooly by sa v priebehu dvoch blokov opäť vyprázdnili.

Ak by jedinečné spamové transakcie zaplnili všetky mem-pooly, po každých dvoch novo vyťažených blokoch by sa vyprázdnil len jeden mem-pool.

Ak je cieľom útočníka zabrániť predkladaniu nových užívateľských transakcií na dlhšie obdobie, musí sa neustále pokúšať zaplniť všetky mem-pooly jedinečnými spamovými transakciami. Po vyprázdnení mem-poolu môžu mať používatelia možnosť predložiť transakciu skôr ako útočník.

Ak útočník predloží spamové transakcie na jednom mieste v sieti, tieto transakcie pravdepodobne nasýtia mem-pool konkrétneho uzla. Zároveň tieto spamové transakcie budú pravdepodobne po krátkom oneskorení čiastočne stiahnuté susednými uzlami. Po zahrnutí týchto transakcií do nového bloku sa však súčasne vyprázdnia viaceré mem-pooly. Uzly, ktoré sú vzdialenejšie, budú mať s väčšou pravdepodobnosťou vo svojich mem-pooloch vyšší podiel používateľských transakcií.

Približné náklady na spamový útok

Rozdeľme si tieto čísla.

Do mem-poolu sa zmestí 600 štandardných transakcií. Za predpokladu súčasnej trhovej hodnoty ADA by poplatky za transakcie predstavovali 50 USD za zaplnenie jedného mem-poolu.

Pri 3 100 uzloch, z ktorých každý má mem-pool, by náklady útočníka na súčasné zaplnenie všetkých mem-poolov jedinečnými transakciami predstavovali približne 155 000 USD. To by si vyžadovalo predloženie 1,8 milióna transakcií.

Cardano dokáže spracovať 15 štandardných transakcií za sekundu, čo zodpovedá približne 1,3 milióna transakcií za deň. To znamená, že v priebehu jedného dňa a niekoľkých hodín by Cardano dokázalo spracovať všetky unikátne transakcie v mem-poole.

Hneď ako by sa však v mem-poole uvoľnilo miesto, používatelia by okamžite predkladali nové transakcie. Niektoré z týchto novo predložených transakcií by sa spracovali skôr ako staršie transakcie v mem-poole. Preto by v skutočnosti trvalo dlhšie, kým by sa z mem-poolu vymazali všetky nevyžiadané transakcie.

Útočník má možnosť útok predĺžiť.

Zvýšenie trhovej hodnoty mincí ADA zvyšuje náklady na vykonanie spamového útoku. Okrem toho, ak by sa zvýšila rýchlosť spracovania transakcií (TPS) Cardano, napríklad prostredníctvom implementácie vstupných schvaľovačov, ďalej by to zvýšilo náklady na útok. Zrýchlené spracovanie transakcií núti útočníkov predkladať platné transakcie (vrátane poplatkov) rýchlejším tempom. Implementácia viacúrovňového oceňovania pozitívne ovplyvňuje odolnosť voči spamovým transakciám, keďže transakcie sa vo vyšších úrovniach zdražujú.

Záver

Je dôležité pochopiť, že odolnosť voči spamovým transakciám závisí od spravodlivého prijímania transakcií v rôznych uzloch siete. Aj v situáciách, keď je sieť preťažená, by používatelia mali mať možnosť okamžite odoslať transakciu a mať istotu, že ich transakcia bude zaradená do niektorého z nadchádzajúcich blokov. Samozrejme, niektorým používateľom sa môže stať, že transakciu nepredložia. Dobre vyvážené transakčné poplatky slúžia ako najlepšia ochrana pred spamovými transakciami.

Nemal by existovať centrálny orgán, ktorý by mal právomoc určovať, ktoré transakcie sa majú odmietnuť, alebo akýmkoľvek spôsobom obmedzovať tok transakcií. Z pohľadu blockchainovej trilemy je výzvou dosiahnuť vysokú TPS a zároveň neobetovať decentralizáciu. V prípade sietí, ktoré majú v súčasnosti vysokú TPS a nízke transakčné poplatky, zvyčajne nájdete určité prvky centralizácie.


Pôvodný článok: https://cexplorer.io/article/understanding-resilient-of-cardano-against-spam-transactions

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 288

Trending Articles