Layer 2
Layer 2 er en samlebetegnelse på blokkjedeteknologier som skal løse kapasitetsproblemene med de opprinnelige løsningene. I en “layer 1” blokkjede er det tregt og dyrt å opprette transaksjoner. Dette følger av at nodene i nettverket skal komme til enighet om den gjeldende utgaven av hele blokkjeden hver gang en ny blokk legges til. Dette tar tid.
I Layer 2 Blockchain Scaling: a Survey [2021] skriver Cosimo Sguanci, Roberto Spatafora og Andrea Mario Vergani at det å skalere blokkjeden kun på layer 1 støter opp mot noen grunnleggende begrensninger i arkitekturen. I dag opprettes det en Bitcoin-blokk omtrent hvert tiende minutt. Hver blokk er på 1MB, og hver transaksjon på 380 bytes. Dermed har nettverket en kapasitet på 4.6 transaksjoner per sekund. (Visa takler til sammenligning tusenvis av transaksjoner per sekund.) Man kunne sett for seg å løse dette ved å generere nye blokker raskere, men i en distribuert blokkjede må hver ny blokk distribueres til de andre nodene, og disse samle seg rundt en konsensus om hva som nå er den gjeldende kjeden, før neste blokk kan legges til. Dette tar minimum 14 sekunder, som dermed setter et tak på kapasiteten til en layer 1 blokkjede. Å øke blokkstørrelsen øker også tiden det tar å distribuere den og gir derfor begrenset nytte.
Dette gjelder altså uavhengig av arbeidsmengden i Proof-of-work og det at Bitcoin automatisk justerer vanskelighetsgraden for å styre utvinningstempoet. Uansett hvilken algoritme man bruker, må nodene danne konsensus om de nye blokkene. Så lenge alt foregår på én felles blokkjede, tar dette en viss mengde tid.
Utenfor kjeden
Layer 2-teknologier løser dette ved å dele opp blokkjeden på måter som reduserer hvor ofte koordineringen av hele blokkjeden må gjennomføres. Transaksjoner gjennomføres i større grad utenfor kjeden. Sguanci, Spatafora og Vergani skriver at dilemmaet er at dette går på bekostning av sikkerheten og/eller desentraliseringen i nettverket. Distribuerte blokkjeder skal helst skalere, være sikre, og i tillegg desentraliserte, men ethvert forsøk på å forbedre dem på ett av disse tre områdene vil sette de to andre under press.
De skiller mellom tre typer Layer 2-kjeder: Channel L2, Sidechain L2 og Rollup L2. I en Channel L2 som Bitcoins Lightning Network oppretter man kanaler mellom noder hvor disse kan gjennomføre en rekke transaksjoner seg i mellom uten å måtte oppdatere blokkjeden hele tiden. Nodene kan settes sammen i et nettverk som formidler transasksjoner fra avsender til mottaker. I en Sidechain L2 gjør man noe lignende, men kanalane man åpner tar form av selvstendige blokkjeder, sidekjeder, som kommuniserer med hovedkjeden ved behov. I en Rollup L2 foregår alle transaksjoner på blokkjeden, men de utføres et annet sted, slik at datamengden som må legges på kjeden blir mindre.
Bitcoin og Litecoin (som bygger på lignende teknologi) har en kanalbasert layer 2, altså et lynnettverk. I Ethereum omtales slike løsninger som State Channels. Disse kan brukes til betalingsformidling på samme måte som i Lightning Network, men kan i teorien også brukes til å håndtere mer generelle endringer i et programs tilstand (state).
Sguanci, Spatafora og Vergani påpeker at lynnettverk har scale-free-egenskaper, det vil si at de vil ha en tendens til at noen noder blir langt viktigere enn andre. De er altså mindre desentraliserte i praksis enn i teorien. Samtidig tilbyr de mer personvern enn layer 1-transaksjoner, fordi de enkelte transaksjonene ikke blir bokført i blokkjeden.
Ethereum: Plasmakjeder
En rekke ulike layer 2-løsninger har blitt foreslått for Ethereum, med ulike styrker og svakheter.
Plasmakjeder er en variant av sidekjeder som har mer sikkerhet, slik at det er begrenset hvor mye du kan tape hvis noe går galt i sidekjeden. Sikkerhetsutfordringen ved sidekjeder er at jo færre utvinnere som jobber på en blokkjede, jo enklere er det for en ondsinnet aktør å angripe den. Bitcoin og Ethereum er så store at de foreløpig er svært vanskelig å angripe. Det er for mange utvinnere som deltar til at angriperen kan skaffe seg nok maskinkraft til å manipulere kjeden. Men hva hvis du har flyttet kupongene dine til en av mange små sidekjeder? Nå er de utenfor hovedkjedens kontroll og en angriper som ønsker å stjele verdiene dine kan nøye seg med å overta sidekjeden. Et annet scenario man må ta høyde for er at utvinnerne på sidekjeden går lei og legger ned. Dermed er verdiene dine borte.
Hensikten med sidekjeder er å øke transaksjonsvolumet og senke kostnadene, og det kan man oppnå ved hjelp av mange små sidekjeder, men den økte kapasiteten går på bekostning av sikkerheten.
Plasmakjeder løser dette ved at “rota” til hver nye blokk også legges til på hovedkjeden. Denne rota er et tall som blant annet brukes til å bevise at en transaksjon har blitt utført på den underliggende plasmakjeden. Hvis kjeden angripes eller legges ned finnes det mekanismer som skal gjøre det mulig å hente ut verdiene du har mistet. I verste fall forsvinner de nyeste transaksjonene, men ikke alle.
Ulempen ved plasmakjeder er at de ikke kan utføre like komplekse operasjoner som hovedkjeden. De er mer egnet til spesialisert bruk, for eksempel betalingsformidling, enn til komplekse smarte kontrakter. I tillegg er det vanskelig å hente verdier du har flyttet til en plasmakjede tilbake til foreldrekjeden. Årsaken er at du henviser til dataene i rota for å gjøre dette. Disse beviser at du på det tidspunktet blokken ble opprettet kontrollerte for eksempel 0.1 ETH i plasmakjeden, men du kan ha brukt verdiene i plasmakjeden like etterpå. For å motvirke tyveri legger man inn en ventetid på syv dager hvor noder i plasmakjeden kan motstride påstanden din om at du fremdeles har 0.1 ETH tilgjengelig. Hvis du har løyet, straffes du med en bot. Alternativt kan man bruke Liquidity Provider for å gjennomføre transaksjonen raskere. Dette er en tjeneste som koster mer enn et vanlig uttrekk.
Plasma er ikke én bestemt løsning, men en måte å lage sikre sidekjeder på. Flere spesifikasjoner på ulike plasmaløsninger har blitt foreslått, blant annet Plasma MVP og Plasma Cash.
Ethereum: Rollups
Rollups er løsninger hvor transaksjonene utføres i en layer 2-kjede, mens selve dataene lagres på hovedkjeden. Dette skal i teorien gjøre at man kan skalere opp 10 til 100 ganger, fordi det er arbeidet med å utføre transaksjoner, det vil si kjøre programmet i en smart kontrakt, som er mest kostnadskrevende i Ethereum, og fordi rollupen kan slå sammen flere transaksjoner hvor det eneste man er interessert i er sluttresultatet.
Det finnes to viktige typer rollups. I en Optimistic Rollup tar hovedkjeden i utgangspunktet for gitt at dataene den mottar fra rollup-kjeden er riktige. Så er det opp til andre å bestride dette hvis de mener at dataene er falske. Når dette skjer, vil alle transaksjonene som inngikk i denne rollupen bli utført på hovedkjeden for å verifisere dem. Hvis dataene er falske, straffes noden som sendte dem inn. Hvis dataene er ekte, straffes noden som motstred dem. Dermed har alle et insentiv for å ikke jukse. Det er tilstrekkelig at én ærlig node følger med på og verifiserer rollupdataene for at dette skal fungere. (Men hvilket insentiv har noen for å verifisere rollupdataene, hvis de nesten alltid er ekte?)
Ulempen med en optimistisk rollupløsning er at det tar lang tid å hente ut verdiene dine fra hovedkjeden, av samme grunn som for plasmakjeder: Man må vente en stund fra rollupkjeden har sendt dataene til man kan anse dem for pålitelige, slik at de som verifiserer dem får tid til å klage på dem. Dermed kan det ta en til to uker å overføre verdier fra rollupkjeden. I tillegg vil selve klageprosessen kunne ta lang tid, siden den innebærer at transaksjonene må utføres i sin helhet på hovedkjeden. På samme måte som for plasmakjeder finnes det likviditetstjenester som lar deg flytte verdier ut av rollupkjeden raskt mot betaling.
ZK Rollups gjør bruk av zero-knowledge proofs til å fjerne behov for en klageprosess. Et zero-knowledge proof er en måte å bevise at du vet noe uten å måtte fortelle det du vet. Rollupkjeden slår sammen transaksjoner og sender inn resultatet sammen med et et slikt bevis på at de har blitt utført riktig. Beviset er endelig, slik at det ikke er behov for noen klageprosess. Dermed kan man også hente ut verdiene sine raskere.
Ulempen med zero-knowledge rollups er at det er svært vanskelig å lage en slik løsning som er generisk nok til å utføre en vilkårlig smart kontrakt på rollupkjeden. ZK Rollups har derfor foreløpig enklere funksjonalitet enn hovedkjeden, i motsetning til Optimistic Rollups, hvor det er lett å tilby samme funksjonalitet. Ethereum-miljøet har likevel tro på at ZK Rollups etterhvert vil kunne tilby samme funksjonalitet som hovedkjeden og dermed bli den klart beste rollupløsningen.
Skaleringspotensialet i rollups kommer blant annet av at rollupkjedene kan optimisere datamengden de sender til hovedkjeden gjennom måten de slår sammen transaksjoner på. Jo mer aktivitet det er på rollupkjeden, jo mer potensiale er det i teorien også for optimisering, slik at transaksjonsavgiftene skal kunne gå ned. Samtidig jobber man med endringer i hovedkjeden for Ethereum som vil legge bedre til rette for rollups, blant annet danksharding, som gjør det lettere for rollups å lagre data på hovedkjeden.
En siste layer 2-variant for Ethereum er Validium, som gjør bruk av zero-knowledge proofs på samme måte som ZK Rollups, men hvor selve dataene ligger i layer 2-kjeden, slik at man kan støtte enda høyere transaksjonsvolumer.
Layer 2 må ikke forveksles med det som tidligere har blitt omtalt som Ethereum 2.0, som er en planlagt oppgradering av Ethereum som skal basere seg på Proof-of-Stake i stedet for Proof-of-Work. Dette vil innebære store endringer i hovedkjeden, men layer 2-kjedene vil fortsatt forholde seg til layer 1 på omtrent samme måte.
Layer 2 i praksis
Layer 2-løsningene ser ut til å kunne deles opp i tre kategorier:
- Løsninger som har blitt foreslått men ikke er tatt i bruk og muligens aldri blir det
- Løsninger som fremdeles er under utvikling og bare er tatt i bruk eksperimentelt.
- Løsninger som er mer eller mindre klar til bruk, men ikke er særlig utbredt ennå.
Hele feltet er i rask endring, og dokumentasjon som er bare et par år gammel kan allerede være utdatert.
Dette gjør at det er vanskelig å svare på hvordan blokkjeder kommer til å gjennomføre dette i praksis, og om layer 2-løsningene faktisk vil være i stand til å løse skaleringsproblemene i Bitcoin, Ethereum og andre blokkjeder. Alle som har jobbet med skalering i programvare vet at det er én ting å anta at en løsning kommer til å skalere, og noe helt annet å oppnå dette i praksis.
En utfordring ved å skalere blokkjeder er at det må lønne seg for noder å bidra med maskinvare og sette av kryptokuponger til løsningen, samtidig som man ønsker transaksjonsavgifter som er lave nok til at de kan brukes til den typen hverdagslige formål blokkjedeentusiastene ser for seg, så som å kjøpe en kopp kaffe. Dette er et problem for Bitcoins lynnettverk, layer 2-løsningen som ser ut til å ha kommet lengst. Der er transaksjonsavgiftene så lave at det ikke lønner seg særlig å bidra til nettverket. Det er uklart om det finnes et magisk punkt i layer 2-løsningene hvor gevinsten er høy nok for nodene og avgiftene samtidig lave nok for brukerne.
En annen utfordring er at skaleringen fort går på bekostning av sikkerheten og desentraliseringen i løsningen. Dette ser ut til å være driveren bak de ulike layer 2-prosjektene i Ethereum. Én stor sikkerhetsutfordring er at sjansen for å introdusere alvorlige feil er større når man bygger en kompleks løsning enn noe enkelt. Det opprinnelige Bitcoin var enkelt. Én blokkjede, vedlikeholdt med en enkel konsensumekanisime, Proof-of-Work. Det Ethereum er på vei mot er noe langt mer komplekst, med en hovedkjede delt opp i fragmenter, vedlikeholdt med en kompleks konensusmekanisme, Proof-of-Stake, omgitt av et stort antall layer 2-kjeder.
Det er også en fare for at det å bruke en slik løsning på en sikker måte blir så komplekst at man lett begår kostbare tabber. Ethereum preges allerede i dag av avanserte svindler og angrep i størrelsesorden mange millioner dollar. Vil et mer komplekst økosystem også åpne for flere slike angrep?
Kan blokkjeder skalere? Definitivt, men om de kan gjøre det tilstrekkelig til å tilby den typen tjenester web3-entusiaster ser for seg gjenstår å se. Foreløpig er det best å være avventende.