Što je Sharding? Objašnjenje ovog koncepta skaliranja Ethereuma

As rasprava o skaliranju u kriptovalutama se nastavlja, neka potencijalna rješenja su zapravo u razvoju već duže vrijeme.

Konkretno, u slučaju Ethereum, gdje je veliki fokus stavljen na decentralizaciju i sigurnosti nauštrb skalabilnosti, primjena shardinga u kombinaciji s implementacijom Dokaz o ulozi konsenzus se smatra prijeko potrebnim mehanizmom putem kojeg se mreža može proširiti na praktične razine za primjenu, a da pritom zadrži svoju decentralizaciju i sigurnost.

Sharding je složena tema, posebno kada se primjenjuje na decentraliziranu, ravnopravnu mrežu kao što je Ethereum gdje se globalno stanje mreže stalno ažurira.

Dakle, što je zapravo sharding i kako može pomoći blockchain mrežama da se skaliraju?

Sharding i distribuirana računalna pozadina

Sharding je zapravo puno stariji od blockchain tehnologije i implementiran je u razne sustave od optimizacije poslovnih baza podataka do Googleova globalna Spanner baza podataka.

  • U suštini, dijeljenje je posebna metoda za horizontalno particioniranje podataka unutar baze podataka.
  • Općenito, baza podataka je razbijena na male komadiće zvane "krhotine", koje kada se agregiraju zajedno tvore izvornu bazu podataka.
  • U distribuiranim blockchain mrežama, mreža se sastoji od niza čvorova povezanih u peer to peer formatu, bez središnjeg tijela.
  • Kao što je slučaj s trenutnim blockchain sustavima, svaki čvor pohranjuje sva stanja mreže i obrađuje sve transakcije.
  • Iako to osigurava visoku razinu sigurnosti kroz decentralizaciju, posebno u sustavima Proof of Work kao što su npr Bitcoin i Ethereum, to dovodi do opravdanih problema skaliranja.

Ethereum Sharding

Koristeći Ethereum kao primjer, puni čvor u Ethereum mreža pohranjuje cjelokupno stanje blockchaina, uključujući stanja računa, pohranu i kod ugovora.

Nažalost, kako mreža raste u veličini eksponencijalnim tempom, konsenzus se povećava samo linearno. Ovo ograničenje je zbog komunikacije potrebne između čvorova potrebne za postizanje konsenzusa.

Čvorovi u mreži nemaju posebne privilegije i svaki čvor u mreži pohranjuje i obrađuje svaku transakciju. Kao rezultat toga, u mreži veličine Ethereuma, problemi poput visokih troškova plina i duljeg vremena potvrde transakcije postaju uočljivi problemi kada je mreža napeta. The mreža brz je samo onoliko koliko su brzi pojedinačni čvorovi, a ne zbroj njegovih dijelova.

Sharding pomaže u ublažavanju ovih problema pružajući zanimljivo, ali složeno rješenje. Koncept uključuje grupiranje podskupova čvorova u dijelove koji zauzvrat obrađuju transakcije specifične za taj dio. Omogućuje sustavu da paralelno obrađuje mnoge transakcije, čime se značajno povećava propusnost.

Jednostavniji način da se to izrazi bilo bi zamisliti podjelu Sjedinjenih Država na države.

Iako je svaka država (u ovom slučaju dio) dio većih Sjedinjenih Država (mreža Ethereum), oni imaju svoja specifična pravila, granice i podskupove stanovništva. Međutim, oni dijele univerzalni jezik i kulturu kao dio njihove veće mreže koja čini zemlju.

Ili još bolje, u Vitalik Buterinvlastite riječi:

 “Zamislite da je Ethereum podijeljen na tisuće otoka. Svaki otok može raditi svoje. Svaki od otoka ima svoje jedinstvene značajke i svi koji pripadaju tom otoku, tj. računi, mogu međusobno komunicirati I mogu se slobodno prepustiti svim njegovim značajkama. Ako žele kontaktirati druge otoke, morat će koristiti neku vrstu protokola.”

Kao što možete vidjeti, koncept fragmentacije mreže na učinkovitije dijelove omogućuje mreži da funkcionira kao zbroj svojih dijelova, umjesto da je ograničena brzinom svakog pojedinog čvora.

Kako funkcionira dijeljenje u blokovima?

Nastavit ćemo koristiti Ethereum kao primjer u ovome jer je to najpoznatiji i najzahtjevniji pokušaj dijeljenja u blockchain areni, budući da programeri Ethereuma implementiraju ono što je poznato kao "dijeljenje stanja".

Trenutno stanje Ethereum blockchaina poznato je kao “globalna država” i to je ono što svi mogu vidjeti kada pogledaju blockchain na određenoj instanci.

Zamršen dio u implementaciji dijeljenja u Ethereumu je da dijeljenjem čvorova na manje podskupove, ti podskupovi moraju biti u mogućnosti obraditi određene skupove transakcija dok istovremeno ažuriraju stanje mreže, a sve to osiguravajući da je valjano.

Sharding u Ethereumu bi se trebao implementirati u dvije faze, više nego vjerojatno nakon Dokaz o ulozi provodi se u mreža. Prva faza bit će podatkovni sloj koji se sastoji od konsenzusa o tome koji se podaci nalaze u dijelovima. Druga faza je sloj stanja. Sve je to vrlo fluidno, pa je opći pregled načina na koji može funkcionirati u nastavku.

Ethereum razbija mrežu na određene dijelove. Svakoj dionici dodijeljena je određena skupina transakcija koja je određena grupiranjem određenih računa (uključujući pametne ugovore) u dionicu. Svaka grupa transakcija ima zaglavlje i tijelo koje se sastoji od sljedećeg.

  • ID dijela transakcijske grupe
  • Dodjela validatora kroz nasumično uzorkovanje (provjerite transakcije u šardu)
  • State Root (stanje merkle korijena šarda prije i nakon dodane transakcije)

Tijelo

  • Sve transakcije koje pripadaju grupi transakcija koje su dio određenog dijela.

Transakcije su specifične za svaki segment i odvijaju se između računa koji su izvorni za taj dio.

Kada se transakcije verificiraju, stanje mreže se mijenja i ažuriraju se stanja računa, pohrana itd. Kako bi se transakcijska grupa potvrdila kao valjana, korijen predstanja transakcijske grupe mora odgovarati korijenu šarda u globalnom stanju. Ako se podudaraju, grupa transakcija se provjerava, a globalno stanje se ažurira putem korijena stanja određenog ID-a fragmenta.

Umjesto da sadrži samo korijen stanja, svaki blok Ethereum blockchaina sada sadrži korijen stanja i korijen grupe transakcija. Korijen grupe transakcija je merkle korijen svih transakcijskih grupa iz specifičnih dijelova za taj blok transakcija.

U osnovi, postoji merkle korijen svih različitih dijelova koji sadrže ažurirane i provjerene grupe transakcija. Ovaj korijen je pohranjen u blockchainu zajedno s ažuriranim korijenom stanja.

Primjena koncepata merkle stabla u ovoj strukturi ključna je za osiguranje valjanosti blockchaina. Razumijevanje kako a stablo merkle a posebno merkle root work, može vam pomoći da lakše shvatite ove koncepte.

Što je stablo Merkle

Pročitajte: Što je Merkle drvo?

Konsenzus unutar šarda postiže se konsenzusom dokaza o ulozi nasumično odabranih čvorova koji se primjenjuju na dio za određeni krug konsenzusa.

To ne samo da osigurava konačnost konsenzusa, koji je neophodan unutar krhotina, već također pruža posebnu obranu od napada koji Dokaz o radu blockchain bi u ovom slučaju bio podložan.

Snaga raspršivanja potrebna za prevladavanje određenog dijela u PoW razdijeljenoj mreži drastično je smanjena i mogućnost zlonamjernog aktera da preuzme dio pomoću računalne snage je izvediva.

Kroz to bi loši akter mogao napasti druge fragmente putem komunikacijskog protokola što je jedna od kompliciranijih i važnijih značajki arhitekture shardinga. Slučajnim odabirom uzorka validatora unutar šarda uspijeva ugušiti ovu vrstu napada budući da loš akter neće znati u koji je dio stavljen prije nego što se zapravo stavi u njega.

Nadalje, nasumično uzorkovanje će se koristiti za odabir validatora koji jesu zapravo provjera valjanosti iz tog slučajnog skupa za provjeru valjanosti.

Komunikacijski protokol je od vitalnog značaja za ispravno funkcioniranje arhitekture shardinga u sustavu. Komunikacijski protokol možete zamisliti kao univerzalni jezik koji je dosljedan među državama kao dijelom većih Sjedinjenih Država.

Međutim, osmišljavanje ovog protokola vrlo je izazovno i potrebno ga je izvesti tako da se koristi samo kada je potrebno. Postaje neophodno kada određeni čvor zahtijeva informacije koje nisu pohranjene unutar njegovog vlastitog dijela i treba pronaći dio s potrebnim informacijama. Ova komunikacija poznata je kao komunikacija unakrsnih dijelova.

Međusobna komunikacija postiže se primjenom koncepta transakcijskih potvrda. Potvrda o transakciji pohranjena je u merkle korijenu koji se može lako provjeriti, ali koji nije dio korijena države.

Dionica koja prima transakciju od drugog šarda provjerava merkle root kako bi se uvjerila da račun nije potrošen. U osnovi, računi se pohranjuju u zajedničku memoriju koju drugi dijelovi mogu provjeriti, ali ne i mijenjati. Stoga, kroz distribuiranu pohranu računa, krhotine mogu međusobno komunicirati.

Sharding Pomicanje naprijed

Očekuje se da će se shardiranje u Ethereumu implementirati nakon Caspera PoS nadogradnja. Nedavno, tamo došlo je do nekih pomaka u vezi s Ethereumom 2.0 koji uključuju provedbu oba Casper i usitnjavanje.

Sharding je također implementiran na nekoliko drugih platformi, ponajviše Zilliqa. Međutim, Zilliqa u ovom trenutku ne implementira dijeljenje stanja i umjesto toga se usredotočuje na pružanje blockchaina velike propusnosti korištenjem transakcijskog i računalnog dijeljenja.

ZilliqaPročitajte naše Vodič kroz Zilliqu

Zaključak

Sharding služi da ponudi neka obećavajuća rješenja za slona u prostoriji blockchain platformi upravo sada, skalabilnost.

Dok je Bitcoinova Lightning mreža u fazi testiranja i do sada pokazuje vrlo obećavajući napredak, Ethereumovo rješenje sa sobom donosi neke jedinstvene izazove jer je vezan za svjetsko računalo koje je Turing dovršeno.

Sharding će izravno funkcionirati samo na razini protokola, tako da krajnjem korisniku ili razvojnom programeru dapp-a to možda neće biti nužno relevantno za učenje.

Bez obzira na to, Ethereumov pokušaj dijeljenja stanja za ogromnu, decentraliziranu mrežu je impresivan pothvat i bit će ogroman podvig ako se uspješno implementira.

Izvor: https://blokonomi.com/sharding/