Čo je Sharding? Vysvetlenie tohto konceptu škálovania Etherea

As diskusia o mierke v kryptomenách pokračuje, niektoré potenciálne riešenia sú skutočne vo vývoji už pomerne dlho.

Konkrétne v prípade Ethereum, kde sa veľký dôraz kladie na decentralizáciu a zabezpečenia na úkor škálovateľnosti, aplikácia shardingu v spojení s implementáciou Dôkaz o podiele konsenzus sa považuje za veľmi potrebný mechanizmus, prostredníctvom ktorého sa sieť môže rozšíriť na praktické úrovne pre aplikácie, pričom si stále zachováva svoju decentralizáciu a bezpečnosť.

Zdieľanie je zložitá téma, najmä ak sa aplikuje na decentralizovanú, peer-to-peer sieť ako napríklad Ethereum kde sa globálny stav siete neustále aktualizuje.

Čo teda vlastne sharding je a ako môže pomôcť pri škálovaní blockchainových sietí?

Pozadie zdieľania a distribuovaných výpočtov

Sharding je v skutočnosti oveľa starší ako technológia blockchain a bol implementovaný v rôznych systémoch od optimalizácie obchodných databáz až po Globálna databáza Spanner spoločnosti Google.

  • Sharding je v podstate konkrétna metóda na horizontálne rozdelenie údajov v databáze.
  • Všeobecnejšie povedané, databáza je rozdelená na malé kúsky nazývané „črepiny“, ktoré keď sa agregujú, tvoria pôvodnú databázu.
  • V distribuovaných blockchainových sieťach pozostáva sieť zo série uzlov prepojených vo formáte peer-to-peer bez centrálnej autority.
  • Ako je to v prípade súčasných blockchainových systémov, každý uzol ukladá všetky stavy siete a spracováva všetky transakcie.
  • Toto poskytuje vysokú úroveň bezpečnosti prostredníctvom decentralizácie, najmä v systémoch Proof of Work, ako napr Bitcoin a Ethereumvedie to k legitímnym problémom s mierkou.

Zdieľanie etherea

Ak použijeme Ethereum ako príklad, úplný uzol v Ethereum sieť uchováva celý stav blockchainu vrátane zostatkov na účtoch, úložiska a kódu zmluvy.

Bohužiaľ, ako sa veľkosť siete zväčšuje exponenciálnym tempom, konsenzus rastie len lineárne. Toto obmedzenie je spôsobené komunikáciou potrebnou medzi uzlami potrebnými na dosiahnutie konsenzu.

Uzly v sieti nemajú špeciálne privilégiá a každý uzol v sieti uchováva a spracováva každú transakciu. Výsledkom je, že v sieti veľkosti Etherea sa problémy, ako sú vysoké náklady na plyn a dlhšie časy potvrdzovania transakcií, stávajú viditeľnými problémami, keď je sieť napätá. The sieť je len taký rýchly ako jednotlivé uzly a nie súčet jeho častí.

Sharding pomáha zmierniť tieto problémy tým, že poskytuje zaujímavé, no komplexné riešenie. Koncept zahŕňa zoskupovanie podmnožín uzlov do fragmentov, ktoré následne spracovávajú transakcie špecifické pre daný fragment. Umožňuje systému spracovávať mnoho transakcií paralelne, čím sa výrazne zvyšuje priepustnosť.

Jednoduchším spôsobom by bolo predstaviť si rozdelenie Spojených štátov na štáty.

Zatiaľ čo každý štát (v tomto prípade črep) je súčasťou väčších Spojených štátov (sieť Ethereum), majú svoje špecifické pravidlá, hranice a podskupiny populácií. Zdieľajú však univerzálny jazyk a kultúru ako súčasť ich väčšej siete, ktorá tvorí krajinu.

Alebo ešte lepšie, v Vitalik Buterinvlastné slová:

 „Predstavte si, že Ethereum bolo rozdelené na tisíce ostrovov. Každý ostrov môže robiť svoje veci. Každý z ostrovov má svoje vlastné jedinečné vlastnosti a každý, kto patrí na tento ostrov, tj účty, môže medzi sebou interagovať A môže sa slobodne oddávať všetkým jeho vlastnostiam. Ak chcú kontaktovať iné ostrovy, budú musieť použiť nejaký protokol.

Ako môžete vidieť, koncept fragmentácie siete na efektívnejšie časti umožňuje sieti fungovať ako súčet jej častí, a nie byť obmedzená rýchlosťou každého jednotlivého uzla.

Ako funguje zdieľanie v blockchainoch?

V tomto budeme naďalej používať Ethereum ako príklad, pretože ide o najznámejšie a najnáročnejšie pokusy o sharding v aréne blockchainu, keďže vývojári Ethereum implementujú to, čo je známe ako „štátne sharding".

Súčasný stav blockchainu Ethereum je známy ako „globálny štát“ a je to, čo môže každý vidieť, keď sa pozrie na blockchain v konkrétnom prípade.

Zložitou časťou implementácie shardingu v Ethereu je to, že rozdelením uzlov na menšie podmnožiny musia byť tieto podmnožiny schopné spracovať špecifické súbory transakcií a súčasne aktualizovať stav siete, a to všetko pri zabezpečení jeho platnosti.

Sharding v Ethereu by mal byť implementovaný v dvojfázovom zavádzaní, čo je viac ako pravdepodobné potom Dôkaz o podiele je implementovaný v sieť. Prvá fáza bude dátová vrstva pozostávajúca z konsenzu o tom, aké údaje sú v úlomkoch. Druhá fáza je stavová vrstva. Toto všetko je veľmi plynulé, takže všeobecný rozpis toho, ako to môže fungovať, je uvedené nižšie.

Ethereum rozkladá sieť na konkrétne časti. Každému fragmentu je priradená špecifická skupina transakcií, ktorá je určená zoskupením konkrétnych účtov (vrátane inteligentných zmlúv) do fragmentu. Každá skupina transakcií má hlavičku a telo, ktoré pozostávajú z nasledujúceho.

  • ID fragmentu skupiny transakcií
  • Pridelenie validátorov cez náhodný výber (overiť transakcie v zlomku)
  • State Root (stav merkle koreňa fragmentu pred a po pridaní transakcií)

Telo

  • Všetky transakcie patriace do skupiny transakcií, ktoré sú súčasťou konkrétneho fragmentu.

Transakcie sú špecifické pre každý zlomok a prebiehajú medzi účtami, ktoré sú pre daný zlomok vlastné.

Pri overovaní transakcií sa mení stav siete a aktualizujú sa zostatky na účtoch, úložisko atď. Aby bolo možné overiť platnosť skupiny transakcií, koreňový adresár skupiny transakcií pred stavom sa musí zhodovať s koreňom fragmentu v globálnom stave. Ak sa zhodujú, skupina transakcií sa overí a globálny stav sa aktualizuje prostredníctvom konkrétneho koreňového stavu ID fragmentu.

Namiesto toho, aby obsahoval iba koreň stavu, každý blok blockchainu Ethereum teraz obsahuje koreň stavu aj koreň skupiny transakcií. Koreň skupiny transakcií je merkle root všetkých skupín transakcií zo špecifických fragmentov pre daný blok transakcií.

V podstate existuje merkle koreň všetkých rôznych fragmentov, ktoré obsahujú aktualizované a overené skupiny transakcií. Tento koreň je uložený v blockchaine spolu s aktualizovaným koreňom stavu.

Využitie konceptov merkle tree v tejto štruktúre je nevyhnutné na zabezpečenie platnosti blockchainu. Pochopenie, ako a merkle strom a konkrétne merkle root work, vám môže pomôcť pochopiť tieto pojmy oveľa jednoduchšie.

Čo je to strom Merkle

Prečítajte si: Čo je to strom Merkle?

Konsenzus v rámci fragmentu sa dosiahne prostredníctvom konsenzu Proof of Stake náhodne vybraných uzlov, ktoré sa aplikujú na fragment pre konkrétne kolo konsenzu.

To nielenže poskytuje konečnosť konsenzu, ktorý je potrebný v rámci črepov, ale poskytuje aj konkrétnu obranu proti útoku, ktorý Blockchain dôkazu o práci by bolo v tomto prípade náchylné.

Hašovacia sila potrebná na prekročenie špecifického fragmentu v sieti s úlomkom PoW je drasticky znížená a schopnosť zlomyseľného aktéra prevziať fragment prostredníctvom výpočtového výkonu je realizovateľná.

Prostredníctvom toho by zlý aktér mohol útočiť na iné fragmenty prostredníctvom komunikačného protokolu, ktorý je jednou z komplikovanejších a dôležitejších vlastností architektúry shardingu. Náhodný výber vzoriek validátorov v rámci fragmentu dokáže potlačiť tento typ útoku, pretože zlý herec nebude vedieť, do ktorého fragmentu je umiestnený skôr, ako doň bude skutočne umiestnený.

Ďalej sa na výber validátorov použije náhodný výber skutočne validácia z tejto náhodnej validačnej sady.

Komunikačný protokol je životne dôležitý pre správne fungovanie architektúry zdieľania v systéme. Komunikačný protokol si môžete predstaviť ako univerzálny jazyk, ktorý je konzistentný medzi štátmi ako súčasťou väčších Spojených štátov.

Návrh tohto protokolu je však veľmi náročný a je potrebné ho vykonať tak, aby sa používal iba v prípade potreby. Stáva sa nevyhnutným, keď špecifický uzol vyžaduje informácie, ktoré nie sú uložené v jeho vlastnom zlomku a potrebuje nájsť zlomok s požadovanými informáciami. Táto komunikácia je známa ako cross-shard communication.

Krížová komunikácia je dosiahnutá aplikáciou konceptu transakčných príjmov. Potvrdenie o transakcii je uložené v koreňovom adresári merkle, ktorý sa dá ľahko overiť, ale nie je súčasťou koreňového adresára štátu.

Úlomok prijímajúci transakciu z iného fragmentu skontroluje koreň Merkle, aby sa uistil, že príjem nebol vyčerpaný. Účtenky sú v podstate uložené v zdieľanej pamäti, ktorú je možné overiť inými úlomkami, ale nezmeniť ju. Preto prostredníctvom distribuovaného úložiska účteniek môžu črepy medzi sebou komunikovať.

Sharding Moving Forward

Očakáva sa, že zdieľanie v Ethereu bude implementované po Casper Aktualizácia PoS. Nedávno tam došlo k určitému vývoju ohľadom Etherea 2.0 ktoré zahŕňajú implementáciu oboch Casper a strúhanie.

Zdieľanie bolo implementované aj v niekoľkých ďalších platformách, predovšetkým Zilliqa. Zilliqa však v súčasnosti neimplementuje zdieľanie stavu a namiesto toho sa zameriava na poskytovanie vysoko výkonného blockchainu pomocou transakčného a výpočtového shardingu.

ZilliqaPrečítajte si naše Sprievodca po Zilliqa

záver

Sharding slúži na to, aby práve teraz ponúkal niektoré sľubné riešenia pre slona v miestnosti blockchainových platforiem, škálovateľnosť.

Zatiaľ čo blesková sieť bitcoinu je vo fáze testovania a zatiaľ vykazuje veľmi sľubný pokrok, riešenie Ethereum so sebou prináša niekoľko jedinečných výziev, pretože je zafixované ako svetový počítač, ktorý je kompletný Turing.

Zdieľanie bude priamo fungovať iba na úrovni protokolu, takže pre koncového používateľa alebo vývojára dapp nemusí byť nevyhnutne relevantné sa o tom dozvedieť.

Bez ohľadu na to je pokus Etherea o štátne rozdelenie pre rozsiahlu decentralizovanú sieť pôsobivým úsilím a bude obrovským úspechom, ak bude úspešne implementovaný.

Zdroj: https://blockonomi.com/shading/