Robin Capital

zk-Rollups — ratkaisu lohkoketjujen skaalaukseen

Lohkoketjujen skaalausratkaisuiden luokittelu

Lohkoketjuja on vaikea skaalata, koska jokaisen lohkoketjun ylläpitäjän pitää pystyä prosessoimaan kaikki lohkoketjussa tehdyt transaktiot. Jos lohkoketjua skaalataan lisäämällä ylläpitäjiltä edellytettyä transaktioprosessointikykyä, samalla karsitaan pois tahoja, jotka voivat osallistua lohkoketjun ylläpitoon.

Tämä rajoite huomioon ottaen lohkoketjujen skaalaamiseen on kaksi lähestymistapaa:

  1. Lohkoketjun sisäinen skaalaus. Lohkoketjun transaktioprosessointikyvyn tehostaminen mekanismeilla, jotka eivät lisää vaatimuksia (ja kuluja) lohkoketjujen ylläpitäjille.
  • Sharding.
  1. Ulkoiset järjestelmät. Transaktioiden prosessointi lohkoketjun ulkopuolella. Ulkopuoliset järjestelmät hyötyvät alla olevan lohkoketjun turvallisuudesta, mutta ovat transaktioprosessointikyvyiltään huomattavasti tehokkaampia.
  • Maksukanavat.
  • Rinnakkaisketjut.

Lohkoketjujen sisäinen skaalaus

Sharding on yleisin lohkoketjun sisäinen skaalausmekanismi. Sharding tarkoittaa lohkoketjun jakamista pienempiin osiin — yksittäiseltä ylläpitäjältä edellytetty transaktioprosessointityö rajoittuu koskemaan vain tiettyä osaa lohkoketjusta. Lohkoketjun eri osat varmistavat omat transaktionsa, jonka jälkeen tiedot yhdistetään yhteen lohkoketjuun. Monet rakenteilla olevat uudet lohkoketjut (NEAR, Dfinity, Algorand, Ethereum 2.0) pohjautuvat sharding-tekniikkaan.

Sharding-tekniikkaan liittyy kuitenkin rajoitteita:

  • Hajautetussa lohkoketjussa ylläpitäjien välisessä viestinnässä on aina korkea latenssi, koska kaikilla ylläpitäjillä pitää olla samat tiedot transaktioista. Tämä tarkoittaa, että transaktioiden prosessointiin menee vähintään joitain sekunteja.
  • Shardien väliset transaktiot vaativat raskaamman validointiprosessin, kuin shardin sisäiset transaktiot (jotka vastaavat nykyisten lohkoketjujen sisäisiä transaktioita). Tämän seurauksena käyttäjien täytyy odottaa useita minuutteja shardien välisten transaktioiden prosessoinnissa.

Ulkoiset järjestelmät

Maksukanavat ovat kahden käyttäjän välisiä sopimuksia. Käyttäjät avaavat yhteisen maksukanavan, jonka sisällä he voivat maksaa toisilleen ilman, että jokainen maksu tallentuu lohkoketjuun. Useasta kahdenkeskisestä maksukanavasta voi luoda maksuverkon (mm. Bitcoinin Lightning-verkon toiminta perustuu tähän periaatteeseen).

Rinnakkaiset lohkoketjut ovat lohkoketjuja, jotka toimivat yhdessä toisen luotettavan lohkoketjun (esim. Ethereum) kanssa. Rinnakkaisketjut skaalautuvat paremmin, koska niiden ylläpitäjiltä voidaan edellyttää korkeampaa transaktioprosessointikykyä. Käyttäjät voivat halutessaan siirtää varansa rinnakkaisketjuun, tehdä transaktioita rinnakkaisketjussa ja siirtää varansa takaisin alla olevaan lohkoketjuun.

Maksukanavien rajoitteena on, että ne soveltuvat vain yksinkertaisiin maksuihin. Ne ovat turvallisia käyttäjilleen, koska tietoturvan takaa lopulta alla oleva lohkoketju. Rinnakkaisketjujen heikkous on, että käyttäjien pitää luottaa rinnakkaisketjun ylläpitäjiin. Koska rinnakkaisketjut ovat lohkoketjuja, ne mahdollistavat kuitenkin älysopimusten käytön.

zk-Rollups — luotettava ja tehokas rinnakkaisketju

Rollups-ketjut ovat uudenlaisia rinnakkaisketjuja, joissa käyttäjien ei tarvitse luottaa rinnakkaisketjun ylläpitäjiin. Kriittisin hetki rinnakkaisketjujen luotettavuudelle on, kun käyttäjä siirtyy pois rinnakkaisketjusta takaisin alla olevaan lohkoketjuun. Alla oleva lohkoketju (esim. Ethereum) ei tarkista ja tallenna kaikkia rinnakkaisketjun transaktioita — ainoa tieto, jonka alla oleva lohkoketju saa, on todiste käyttäjän kokonaisomistuksesta poistumishetkellä. Kun käyttäjä poistuu varoillaan rinnakkaisketjusta takaisin alla olevaan lohkoketjuun, hän lähettää alla olevaan lohkoketjuun viestin omistuksestaan rinnakkaisketjussa, jonka jälkeen käyttäjän varat ovat käytettävissä alla olevassa lohkoketjussa.

Rinnakkaisketjusta poistuminen avaa kaksi potentiaalista hyökkäysvektoria:

  1. Rinnakkaisketjun ylläpitäjä voi lähettää väärän tiedon rinnakkaisketjun käyttäjien omistuksista alla olevaan lohkoketjuun. Tämä hyökkäys on helppo estää Merkle-todisteilla, joita käytetään Plasma-rinnakkaisketjuissa. Merkle-todiste on kryptografinen primitiivi, jonka käyttäjät voivat muodostaa rinnakkaisketjun transaktioista. Merkle-todisteeseen on tiivistetty tieto kaikista rinnakkaisketjuissa tapahtuneista transaktioista. Plasma-rinnakkaisketjuissa käyttäjille varataan aikaa haastaa väärä alla olevaan lohkoketjuun lähetetty viesti Merkle-todisteella, joka sisältää todellisen tiedon Plasma-rinnakkaisketjussa tapahtuneista transaktioista.
  2. Datan saatavuushyökkäyksessä (data-availability attack) rinnakkaisketjun ylläpitäjä lähettää väärän tiedon käyttäjien omistuksesta alla olevaan lohkoketjuun, mutta jättää transaktiot julkaisematta rinnakkaisketjussa. Tällöin käyttäjillä ei ole mahdollisuutta rakentaa Merkle-todistetta, koska heillä ei ole siihen vaadittavaa transaktiodataa. Datan saatavuushyökkäykseen ei ole vielä löydetty täydellistä ratkaisua, minkä takia Plasma-rinnakkaisketjut eivät ole vielä aktiivisessa käytössä.

Rollups-ketjuja voidaan rakentaa nollatietotodistusten (zero-knowledge proof) avulla ja ne ratkaisevat datan saatavuushyökkäyksen. Nollatietotodistuksella joku todistaja (“prover”) voi osoittaa jollekin toiselle osapuolelle (“verifier”) tietävänsä jonkin salaisuuden ilman, että todistaja paljastaa mitään tietoa salaisuuden sisällöstä. Rollups-ketjut käyttävät tätä periaatetta todistaakseen alla olevalle lohkoketjulle, että kaikki Rollups-ketjun transaktiot ovat olleet sääntöjenmukaisia ilman, että alla olevan ketjun täytyy todentaa ja tallentaa kaikkia Rollups-ketjussa tapahtuneita transaktioita.

Rollups-ketjun liittäminen lohkoketjuun tapahtuu transaktioviestillä, joka sisältää kolme osaa:

  1. Merkle-todiste Rollups-ketjun viimeisimmistä transaktioista.
  2. Kaikki viimeisimmät Rollups-ketjussa tehdyt transaktiot.
  3. Nollatietotodistus, joka muodostuu sekä viimeisimpien, että aiemmin lähetettyjen, transaktioiden Merkle-todisteista. Nollatietotodistus osoittaa, että jos aiemmin lähetettyihin transaktioihin lisätään myös viimeisimmät transaktiot, on lopputuloksena uusi todenmukainen Merkle-todiste.

Alla oleva lohkoketju todentaa, että nollatietotodistus on laskettu oikein lähetetyn transaktiodatan perusteella. Mikäli näin on, Rollups-ketjun käyttäjien sen hetkiset omistukset tallennetaan yhtenä Merkle-todisteena alkuperäiseen lohkoketjuun. Tällöin Rollups-ketjun ylläpitäjä ei voi piilottaa dataa Rollups-ketjun käyttäjiltä, koska Rollups-ketjun liittäminen alla olevaan lohkoketjuun vaatii tiedon kaikista Rollups-ketjussa tapahtuneista transaktioista.

Rollups-ketjut mahdollistavat äärimmäisen tehokkaan lohkoketjujen skaalauksen, koska transaktioprosessointi voi tapahtua täysin keskitetysti. Käyttäjien ei tarvitse luottaa Rollups-ketjun ylläpitäjiin. Rollups-ketjun turvallisuus on sidottu alla olevan lohkoketjun turvallisuuteen, mutta transaktioita voidaan prosessoida ilman hajautetun lohkoketjun aiheuttamia transaktioprosessointikustannuksia.

Rollups-ketjuja on työstetty aktiivisesti vain noin vuoden ajan ja ne ovat osoittautuneet käytännössä yllättävän helposti implementoitaviksi. Esimerkiksi hajautetun pörssiprotokolla 0x:n uusin implementaatio STARKDex sekä Uniswapin automatisoituun markkinatakaajaprotokollaan yhdistävä Unipig Exchange hyödyntävät Rollups-ketjuja. Myös Augur-protokollan ennustemarkkinoiden tarjouskirjat ollaan siirtämässä Rollups-ketjuun ensi vuoden alussa.