Hva er Segregated Witness (SegWit)?

Nybegynnerguiden til Bitcoin SegWit 💭
Segregated Witness (SegWit) var en oppgradering av Bitcoins kildekode som ble gjort 1. august 2017.
Til tross for det mange så på som forbedringer av Bitcoin-blokkjeden, møtte SegWit sterk motstand som splittet fellesskapet.
Kjernen i saken var en motstridende interesse mellom minernes lønnsomhet og nettverksutviklere som ønsket å gjøre Bitcoin billigere og raskere å bruke.
Spenningen forårsaket en splittelse i fellesskapet, som kulminerte i nettverkets første brukeraktiverte soft fork og en fiendtlig splittelse. Delingen ga opphav til en rekke nye Bitcoin-forkede prosjekter, inkludert Bitcoin Cash.
Til dags dato er SegWit fortsatt en av de mest kontroversielle hendelsene i Bitcoins historie. Men det har også vist seg å være en av de viktigste oppdateringene for protokollens langsiktige levedyktighet.
Hvert år feirer mange i Bitcoin-fellesskapet 1. august som «Bitcoin-uavhengighetsdagen». Denne hendelsen markerer anledningen da folkets vilje seiret mot de sentraliserte interessene til etablerte Bitcoin-gruveselskaper.
La oss utforske hver av disse hendelsene slik de skjedde og pakke ut historien bak SegWit.
Bitcoin før SegWit ⏮️
Før SegWit-aktivering hadde Bitcoins blokkapasitet vært uendret i mange år. Blokkapasitet refererer til det maksimale antallet transaksjoner som kan registreres innenfor en gitt blokk.
Da Bitcoin ble lansert i 2009, satte skaperen(e) Satoshi Nakamoto ingen parametere for hvor store Bitcoin-blokker kunne være.
I 2010 la Nakamoto imidlertid i hemmelighet til en blokkstørrelsesgrense på 1 megabyte (MB) uten godkjenning fra andre Bitcoin-bidragsytere.
Mange mente Nakamoto inkluderte grensen for å forhindre fremtidige distribuerte tjenestenektangrep (DDoS) som kunne påvirke nettverket.
Dette faste taket på blokkapasitet hadde den uønskede effekten av å begrense Bitcoins potensial til å skalere på flere måter.
Lav gjennomstrømning og langsomme transaksjonstider
Bare et begrenset antall transaksjoner får plass i den relativt lille 1 MB-blokken som Bitcoin nå tok i bruk. Denne lille kapasiteten betydde at Bitcoin-nettverket bare kunne behandle rundt 2–3 Bitcoin (BTC)-transaksjoner per sekund — langt unna tradisjonelle digitale betalingsnettverk som kan behandle titusenvis av transaksjoner per sekund.
I tillegg, for at en blokk med transaksjoner skal anses som gyldig som en del av Bitcoin-gruveprosessen, må den motta seks bekreftelser. Med andre ord må seks nye blokker legges til blokkjeden etter den aktuelle blokken før den er ferdigstilt. Med en gjennomsnittlig blokktid på ti minutter betyr dette at Bitcoin-blokkbekreftelser tar rundt én time.
På den tiden, da bare en håndfull «Cypherpunk»-kryptografer var klar over Bitcoin, var det ikke nødvendigvis et stort problem. Men hvis Bitcoin-nettverket skulle bli et globalt «peer-to-peer elektronisk kontantsystem» slik Satoshi så for seg i Bitcoin white paper, måtte ting endres.
Høye gebyrer
Bitcoins lave gjennomstrømning, begrenset av den lille blokkapasiteten, betydde at gebyrene også var relativt mye høyere enn de er i dag.
Her er en enkel måte å forstå dette problemet på. Tenk deg at du står ute i en folkemengde etter å ha sett en teaterforestilling. Alle fra teateret ønsker å ta en taxi hjem samtidig. Hvis det er mange taxier tilgjengelig, bør det være enkelt for alle å komme seg hjem. Men hvis det bare er en håndfull drosjer, kan folk prøve å betale en høyere pris til drosjesjåførene for å motivere sjåføren til å ta dem hjem først. Avhengig av etterspørselen kan prisene for taxier skyte i været betydelig høyere enn normalprisen.
Bitcoin-gebyrer fungerer etter de samme prinsippene om tilbud og etterspørsel. Hvis mange mennesker ønsker at transaksjonene deres skal behandles samtidig, kan noen velge å betale mer i gebyrer for å få transaksjonen behandlet raskere av minere. I perioder med høy bruk på Bitcoin-nettverket kan overbelastning føre til konkurranse blant brukere, noe som kan føre til at transaksjonsgebyrene stiger kraftig.
Transaksjonsmalleabilitet
En annen iboende nyanse med måten Bitcoin-blokker fungerte på, var kjent som transaksjonsmalleabilitet. Før SegWit kunne folk endre ID-en til en transaksjon før den mottok nok bekreftelser på blokkjeden.
Ved å ta informasjonen knyttet til en spesifikk transaksjon og kjøre den gjennom en hash-funksjon, opprettes en transaksjons-ID. Du kan lære mer om hash-funksjoner i artikkelen vår Hvordan bruker kryptovalutaer kryptografi?
Men for enkelhets skyld kan du tenke på disse transaksjons-ID-ene som digitale fingeravtrykk som brukes til å identifisere og referere til transaksjoner på blokkjeden.
Endring av transaksjons-ID-en skaper en helt ny hash som noen ganger kan forvirre blokkjede-klientprogramvare. Alle noder kjører klientprogramvare for å samhandle med blokkjeden og utføre viktige roller som dataverifisering.
Denne malleabilitetsfeilen i Bitcoins kode åpnet døren for ondsinnede angrep. Et av de mest beryktede eksemplene på et transaksjonsmalleabilitetsangrep var Mt. Gox-børsens hack i 2014 — kjent for å være det største Bitcoin-hacket i historien.
Eksperter rapporterte at en hacker, eller en gruppe hackere, tømte Mt. Gox-børsens Bitcoin-lommebok. De gjorde dette delvis ved å endre transaksjons-ID-en for sine uttak.
Transaksjonsmalleabilitetsangrepet fikk det til å se ut som om uttak ikke ble bekreftet på blokkjeden, når de faktisk ble det.
Denne sårbarheten, kombinert med andre angrepsvektorer, gjorde det mulig for hackeren(e) å tappe over 840 000 BTC fra børsen.
Hvilke forbedringer gjorde SegWit? ⚙️
Bitcoin-bidragsyter Pieter Wuille presenterte SegWit-oppgraderingen for første gang på et Bitcoin Hong Kong-arrangement i 2015.
Løsningen hans var nyskapende på tre fronter. SegWit forbedret Bitcoins skalerbarhet, fjernet malleabilitet og tillot noder å ta i bruk den nye transaksjonsstrukturen. Best av alt, dette kunne implementeres uten å hard-forke nettverket.
Separat digital signatur og transaksjonsinformasjon
Wuilles forslag økte Bitcoin-blokkapasiteten ved å «segregere» «vitne»-dataene fra en blokk og flytte dem til coinbase-transaksjonen. Coinbase-transaksjoner er de aller første transaksjonene innenfor hver nye Bitcoin-blokk. Coinbase-transaksjonen er ansvarlig for å utstede nylig preget kryptovaluta i sirkulasjon som en belønning for Bitcoin-gruveprosessen.
Minere som lykkes med å vinne Bitcoins kryptografibaserte proof-of-work-konkurranse, tjener disse nylig pregede tokenene som «blokkbelønninger».
Vitnedata, også kjent som ScriptSig eller Unlocking Script, inkluderer digital signatur og offentlig nøkkelinformasjon som trengs for å låse opp den overførte Bitcoin. SegWit-oppgraderingen introduserte et separat «vitnefelt» for ScriptSig-delen av en transaksjon.
Ved å behandle digital signaturinformasjon separat fra transaksjonsinndatafeltet, ble det mer plass til transaksjoner i hver blokk.
Flere transaksjoner per blokk tilsvarer høyere transaksjonsgjennomstrømningskapasitet. Så, i stedet for 2-3 transaksjoner per sekund, kan Bitcoin behandle mellom 7-10 SegWit-transaksjoner per sekund. Økt kapasitet betyr også lavere gebyrer, da Bitcoin-blokkjeden kan håndtere et høyere transaksjonsvolum.
Til tross for separasjonen er det viktig å merke seg at noder fortsatt behandler både transaksjonsdata og vitnedata on-chain. Ingen sidekjede eller Layer 2-protokoll brukes.
Blokkvekt
Før SegWit målte minere Bitcoin-blokker etter størrelse (i byte). Dette systemet fungerte bra når blokker inneholdt både vitne- og transaksjonsdata, men støtte på problemer når de ble separert.
For å overvinne dette introduserte oppgraderingen en metrikk kalt blokkvekt for å administrere størrelsen på blokker.
Med dette konseptet består hver 1-megabyte blokk av 4 000 000 vektenheter (WU). Hver transaksjon får en vekt basert på følgende formel:
Grunnleggende transaksjonsstørrelse i byte (uten vitnedata) * 3 + Total transaksjonsstørrelse i byte.
Ved å fjerne vitnefeltdata fra beregningen, har SegWit-transaksjoner en mye lavere vekt. På den annen side inneholder en ikke-SegWit-transaksjon fortsatt vitnedata. Dette betyr at ikke-SegWit-transaksjoner alltid veier 4 ganger mer enn SegWit-transaksjoner.
Dette konseptet øker teoretisk sett størrelsen på en Bitcoin-blokk fra 1 MB til 4 MB, hvis en blokk nesten utelukkende består av vitnedata. Dette er imidlertid ikke mulig i praksis.
Hovedfordelen med det vektede systemet er at det motiverer minere til å behandle blokker som hovedsakelig inneholder SegWit-transaksjoner. Forutsatt at SegWit-transaksjoner har de samme gebyrene som eldre blokker, kan en miner behandle mange flere SegWit-transaksjoner per blokk. Jo flere transaksjoner de behandler per blokk, jo mer gebyrer tjener de.
En vinn-vinn for begge parter. Eller det skulle man tro.
Ikke flere problemer med transaksjonsmalleabilitet
Under SegWit-strukturen inneholder den hashede transaksjons-ID-en kun transaksjonsinformasjonen, ikke vitnefeltinformasjonen.
Denne endringen fjerner den modifiserbare komponenten av en Bitcoin-transaksjon som tidligere muliggjorde malleabilitetsangrep.
Som et resultat ble sekundære skaleringsløsninger som Bitcoin Lightning Network mulig.
Hvorfor var SegWit kontroversielt? 🤔
Mange i utviklingsmiljøet mente at SegWit ikke gikk langt nok for å løse Bitcoins skaleringsproblemer.
Hovedargumentene mot SegWits aktivering inkluderer:
- Bitcoins økte gjennomstrømning på 7-10 transaksjoner per sekund er fortsatt langt fra høy nok for et desentralisert, globalt betalingssystem.
- Gebyrer ville forbli relativt høye, noe som gjør ting som mikrotransaksjoner økonomisk urealistiske.
- Minere kan fortsatt behandle eldre transaksjonsblokker, noe som betyr at malleabilitet fortsatt er en trussel.
- Det ble senere oppdaget at SegWit ville oppheve Bitmains ASICBOOST-mekanisme; en utnyttelse som ble brukt til å betydelig øke effektiviteten til gruverigger.
Rundt ett år etter Wuilles forslag hadde han og andre Bitcoin Core-utviklere, inkludert Eric Lombrozo, forberedt koden for å gå live i den kommende Bitcoin Core 0.13.1-oppdateringen. Det eneste gjenstående trinnet for å aktivere SegWit var at minere skulle begynne å behandle nye SegWit-blokker.
For å sementere implementeringen måtte over 95 % av alle Bitcoin-minere vise støtte til SegWit innen de første to ukene av initiativet — en stor hindring gitt omstendighetene på den tiden.
Brukeraktivert soft fork
Unødvendig å si var store gruveselskaper som Bitmain fortsatt misfornøyde med de foreslåtte endringene og nektet å støtte SegWits aktivering.
Tidlig i 2017 tok en pseudonym utvikler ved navn «Shaolinfry» opp muligheten for at Bitcoin-noder skulle håndheve en soft fork i et online bitcoin-dev-innlegg.
En brukeraktivert soft fork hadde aldri blitt forsøkt på Bitcoin-nettverket før, men det ville tillate utviklere å presse gjennom SegWit med rundt 51 % støtte fra minere. De som nektet å støtte nye blokker risikerte å få blokkene sine avvist av noder. Løsningen var ikke uten risiko. Hvis SegWit ikke mottok tilstrekkelig støtte fra minere, ville utfallet uunngåelig føre til en kjedesplittelse.
De som var imot SegWit foreslo i stedet en annen SegWit 2X hard fork-oppgradering. En som ville implementere SegWit og øke Bitcoins blokkstørrelse til 2 MB.
I motsetning til den tidligere oppgraderingen ville SegWit 2X ikke være bakoverkompatibel med tidligere versjoner av Bitcoin-klienten. Disse endringene betydde at noder måtte oppdatere programvaren sin for å fortsette å operere på nettverket.
SegWit og New York-avtalen 🗽
Bransjens toppselskaper møttes på Consensus 2017 og signerte kollektivt et memorandum kalt «New York-avtalen». Dette dokumentet la frem planer for at SegWit skulle gå live om sommeren og for at Bitcoins blokkstørrelse skulle øke til 2 MB innen november.
Før november utarbeidet Shaolinfry to Bitcoin Improvement Proposals (BIP-er); BIP148 og BIP149. Førstnevnte representerte en rask og effektiv løsning; signaliser støtte for SegWit-blokker, ellers vil noder avvise blokkene dine. Sistnevnte ga en lengre tidshorisont for minere å komme om bord, og satte en aktiveringsfrist til juli året etter.
Etter hvert som datoen nærmet seg, foreslo Bitmain Warranty-ingeniør, James Hillard, en ny BIP; BIP91. Løsningen hans søkte å gjøre både SegWit 2X og BIP148 kompatible med hverandre. Hvorfor risikere en kjedesplittelse over to konkurrerende SegWit-oppdateringer når du kan gjøre dem begge kompatible?
1. august sementerte tilstrekkelig gruvestøtte SegWits aktivering. Den andre fasen av New York-avtalen fikk imidlertid ikke den samme støtten.
Manglende evne til å øke Bitcoins blokkstørrelse til 2 MB resulterte i dannelsen av Bitcoin Cash (BCH) — et nytt forket prosjekt fra Bitcoin-blokkjeden.
Viktigheten av Bitcoin-uavhengighetsdagen
Introduksjonen av SegWit og fellesskapets beslutning om å avvise blokkstørrelsesøkningen representerte et landemerke for det bredere Bitcoin-fellesskapet.
SegWit viste viktigheten av konsensus når det gjaldt endringer i Bitcoin-blokkjeden, samt omfanget av desentralisering av makt som Bitcoin tilbød.
Ingen enkeltperson var i stand til å ta over nettverket og gjennomføre sitt forslag.
I stedet debatterte, itererte og fortsatte fellesskapet den lange prosessen med å oppnå konsensus som en kollektiv gruppe — ikke under ledelse av en enkeltperson.
Begynn å kjøpe Bitcoin
Nå som du har lært alt om SegWit, er du klar til å fortsette din kryptoreise og kjøpe Bitcoin?
Sjekk ut vår Kraken Learn Center-guide for mer informasjon om Hvordan kjøpe Bitcoin (BTC) og registrer deg for en konto hos Kraken i dag.