Hva er Segregated Witness (SegWit)?

Av Kraken Learn team
11 min
26. november 2024

Begynnerveiledningen til Bitcoin SegWit 💭

Segregated Witness (SegWit) var en oppgradering gjort til Bitcoin's kildekode den 1. august 2017.

Til tross for det mange så på som forbedringer av Bitcoin-blokkjeden, møtte SegWit sterk motstand som delte fellesskapet. 

Kjernen i saken var en konkurrerende interesse mellom gruvearbeidernes lønnsomhet og nettverksutviklere som søkte å gjøre Bitcoin billigere og raskere å bruke.

Spenningen forårsaket en splittelse innenfor fellesskapet, og kulminerte i nettverk’s første brukeraktiverte soft fork og en fiendtlig splittelse. Divisjonen fødte en serie nye Bitcoin-forgrenede prosjekter, inkludert Bitcoin Cash.

Til dags dato forblir SegWit en av de mest kontroversielle hendelsene i Bitcoin's historie. Men den 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 independence day.” Denne hendelsen markerer anledningen da folkets vilje triumferte mot de sentraliserte interessene til etablerte bitcoin-gruveselskaper.

La oss utforske hver av disse hendelsene slik de skjedde og pakke ut historien bak SegWit.

BTC icon
$63 888.00
−2,29 %
24 timer
btc

Bitcoin før SegWit ⏮️

Før SegWit-aktivering hadde Bitcoins blokkapasitet forblitt 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 ikke skaperen(e) Satoshi Nakamoto noen parametere for hvor store bitcoin-blokker kunne være.

Imidlertid la Nakamoto i 2010 i hemmelighet til en grense på 1 megabyte (MB) blokkstørrelse uten godkjenning fra andre Bitcoin-bidragsytere.

Mange trodde Nakamoto inkluderte grensen for å forhindre fremtidige distribuerte tjenestenektangrep (DDoS) som kunne påvirke nettverket.

Denne faste begrensningen 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 1MB-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 fra 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, seks nye blokker må legges til blokkjeden etter den aktuelle blokken før den er fullført. 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” som Satoshi så for seg i Bitcoin white paper, måtte ting endres.

Høye gebyrer

Bitcoins lave gjennomstrømming, begrenset av den lille blokkapasiteten, betydde at gebyrene også var forholdsvis 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 vil ta en drosje hjem samtidig. Hvis det er mange drosjer tilgjengelig, burde 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 å kjøre dem hjem først. Avhengig av etterspørselen kan drosjeprisene skyte i været betydelig høyere enn normalprisen.

Bitcoin-gebyrer fungerer etter de samme prinsippene om tilbud og etterspørsel. Hvis mange mennesker vil ha transaksjonene sine behandlet 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.

Å ta informasjonen relatert til en spesifikk transaksjon og kjøre den gjennom en hashfunksjon, skaper en transaksjons-ID. Du kan lære mer om hashfunksjoner 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.

Å endre transaksjons-ID-en skaper en helt ny hash som noen ganger kunne forvirre blokkjedeklientsprogramvare. Alle noder kjører klientsprogramvare for å interagere 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 gruppe hackere, tømte Mt. Gox-børsens bitcoin-lommebok. De gjorde dette delvis ved å endre transaksjons-ID-en for uttakene deres. 

Transaksjonsmalleabilitetsangrepet fikk det til å se ut som om uttakene ikke ble bekreftet på blokkjeden, når de faktisk ble det.

Denne sårbarheten, sammen med andre angrepsvektorer, gjorde det mulig for hackeren(e) å stjele over 840 000 BTC fra børsen.

Hvilke forbedringer gjorde SegWit? ⚙️

Bitcoin-bidragsyter Pieter Wuille presenterte SegWit-oppgraderingen først 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. Det beste av alt var at dette kunne implementeres uten å hard-forke nettverket.

Separate digital signatur- og transaksjonsinformasjon

Wuilles forslag økte Bitcoin-blokk-kapasiteten ved å «separere» «witness»-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 nypreget kryptovaluta i sirkulasjon som en belønning for Bitcoin-utvinningsprosessen.

Minere som lykkes i å vinne Bitcoins kryptografibasert «proof-of-work»-konkurranse, tjener disse nypregede tokenene som «blokkbelønninger».

Witness-data, også kjent som ScriptSig eller Unlocking Script, inkluderer informasjon om digital signatur og offentlig nøkkel som er nødvendig for å låse opp den overførte Bitcoin. SegWit-oppgraderingen introduserte et separat «witness-felt» for ScriptSig-delen av en transaksjon.

Ved å behandle digital signaturinformasjon separat fra transaksjonsinndatafeltet, ble det mer plass for 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, ettersom Bitcoin-blokkjeden kan håndtere et høyere transaksjonsvolum.

Til tross for separasjonen er det viktig å merke seg at noder fortsatt behandler både transaksjonsdataene og witness-dataene 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 witness- og transaksjonsdata, men støtte på problemer når de ble separert.

For å overvinne dette introduserte oppgraderingen en metrikk kalt blokkvekt for å administrere blokkstørrelsen.

Med dette konseptet består hver 1-megabyte blokk av 4 000 000 vekt-enheter (WU). Hver transaksjon får en vekt basert på følgende formel:

Grunntransaksjonsstørrelse i byte (uten witness-data) * 3 + Total transaksjonsstørrelse i byte.

Ved å fjerne witness-feltdata fra beregningen har SegWit-transaksjoner en mye lavere vekt. På den annen side inneholder en ikke-SegWit-transaksjon fortsatt witness-data. Dette betyr at ikke-SegWit-transaksjoner alltid veier 4 ganger mer enn SegWit-transaksjoner.

Dette konseptet øker teoretisk størrelsen på en Bitcoin-blokk fra 1 MB til 4 MB, hvis en blokk nesten utelukkende består av witness-data. Dette er imidlertid ikke mulig i praksis.

Hovedfordelen med det vektede systemet er at det insentiverer minere til å behandle blokker som for det meste inneholder SegWit-transaksjoner. Antatt 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, desto mer gebyrer tjener de.

En vinn-vinn-situasjon for begge parter. Eller, det skulle man tro.

Ikke flere transaksjonsmalleabilitetsproblemer

Under SegWit-strukturen inneholder hash-transaksjons-ID-en kun transaksjonsinformasjonen, ikke witness-feltinformasjonen.

Denne endringen fjerner den modifiserbare komponenten i en Bitcoin-transaksjon som tidligere muliggjorde malleabilitetsangrep.

Som et resultat ble sekundære skaleringsløsninger som Bitcoin Lightning Network mulige.

 

Hvorfor var SegWit kontroversiell? 🤔

Mange i utviklingsmiljøet mente at SegWit ikke gikk langt nok i å adressere Bitcoins skaleringsproblemer.

Hovedargumentene mot SegWits aktivering inkluderte:

  • Bitcoins økte gjennomstrømning på 7-10 transaksjoner per sekund er fortsatt ikke i nærheten av å være høy nok for et desentralisert, globalt betalingssystem.
  • Gebyrer ville forbli relativt høye, noe som gjorde ting som mikrotransaksjoner økonomisk urealistiske.
  • Minere kan fortsatt behandle legacy transaksjonsblokker, noe som betyr at malleability fortsatt er en trussel.
  • Det ble senere oppdaget at SegWit ville oppheve Bitmains ASICBOOST-mekanisme; en sårbarhet som ble brukt til å betydelig øke effektiviteten i mining-rigger.

Omtrent ett år etter Wuilles forslag hadde han og andre Bitcoin Core-utviklere, inkludert Eric Lombrozo, forberedt koden for å lanseres i den kommende Bitcoin Core 0.13.1-oppdateringen. Det eneste gjenstående trinnet for å aktivere SegWit var at minere begynte å behandle nye SegWit-blokker. 

For å sementere implementeringen, måtte over 95 % av alle bitcoin-minere vise støtte til SegWit innen de to første ukene etter igangsettingen — et stort hinder med tanke på omstendighetene på den tiden.

Brukeraktivert soft fork

Unødvendig å si var store mining-firmaer 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 kunne håndheve en soft fork i et nettbasert bitcoin-dev-innlegg

En brukeraktivert soft fork hadde aldri blitt forsøkt på Bitcoin-nettverket før, men den 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 fikk tilstrekkelig støtte fra minere, ville utfallet uunngåelig føre til en kjedeoppdeling.

De som var mot 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 toppbedrifter møttes på Consensus 2017 og signerte kollektivt et memorandum kalt "New York-avtalen." Dette dokumentet la frem planer for at SegWit skulle lanseres sommeren og for at Bitcoins blokkstørrelse skulle øke til 2 MB innen november.

Før november utformet Shaolinfry to Bitcoin Improvement Proposals (BIP-er); BIP148 og BIP149. Førstnevnte representerte en rask og kompromissløs løsning; signaliser støtte for SegWit-blokker, ellers vil noder avvise blokkene dine. Sistnevnte ga en lengre tidshorisont for minere til å komme i gang, 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. Hans løsning forsøkte å gjøre både SegWit 2X og BIP148 kompatible med hverandre. Hvorfor risikere en kjedeoppdeling over to konkurrerende SegWit-oppdateringer når du kan gjøre dem begge kompatible?

Den 1. august sementerte tilstrekkelig mining-stø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.

$210.100
−0,85 %
24 timer
bch

Viktigheten av Bitcoin-uavhengighetsdagen

Innføringen av SegWit og fellesskapets beslutning om å avvise økningen i blokkstørrelse representerte et landemerke for det bredere Bitcoin-fellesskapet.

SegWit viste viktigheten av konsensus når det gjaldt endringer i Bitcoin blockchain, samt omfanget av desentralisering av makt som bitcoin tilbød.

Ingen enkeltpersoner var i stand til å overta nettverket og få gjennomført sitt forslag.

I stedet debatterte, videreutviklet og fortsatte fellesskapet den lange prosessen med å oppnå konsensus som en samlet 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 du kjøper Bitcoin (BTC) og registrer deg for en konto hos Kraken i dag.