Hvad er Segregated Witness (SegWit)?

Fra Kraken Learn team
11 min
26. nov. 2024

Begynderguide til Bitcoin SegWit 💭

Segregated Witness (SegWit) var en opgradering af Bitcoins kildekode den 1. august 2017.

På trods af at mange så det som forbedringer af Bitcoin blockchain, blev SegWit mødt med stærk modstand, der delte fællesskabet. 

Kernen i problemet var en konkurrerende interesse mellem mineres rentabilitet og netværksudviklere, der ønskede at gøre Bitcoin billigere og hurtigere at bruge.

Spændingen forårsagede en kløft i fællesskabet, som kulminerede i netværkets første brugeraktiverede bløde fork og en fjendtlig opdeling. Opdelingen gav anledning til en række nye Bitcoin-forkede projekter, herunder Bitcoin Cash.

Indtil videre forbliver SegWit en af de mest kontroversielle begivenheder i Bitcoins historie. Men det har også vist sig at være en af de vigtigste opdateringer for den langsigtede levedygtighed af protokollen. 

Hvert år fejrer mange i Bitcoin-fællesskabet den 1. august som "Bitcoin uafhængighedsdag." Denne begivenhed markerer lejligheden, hvor folkets vilje sejrede over de centraliserede interesser fra etablerede bitcoin-mineselskaber.

Lad os udforske hver af disse begivenheder, som de skete, og afdække historien bag SegWit.

BTC icon
56.712.00
+5,68 %
24 t.
btc

Bitcoin før SegWit ⏮️

Før SegWit-aktivering havde Bitcoins blokkapacitet forblevet uændret i mange år. Blokkapacitet refererer til det maksimale antal transaktioner, der kan registreres inden for en given blok.

Da Bitcoin blev lanceret i 2009, satte dens skaber(e) Satoshi Nakamoto ikke nogen parametre for, hvor store bitcoin-blokke kunne være.

Men i 2010 tilføjede Nakamoto hemmeligt en grænse for blokstørrelsen på 1 megabyte (MB) uden godkendelse fra andre Bitcoin-bidragydere.

Mange troede at Nakamoto inkluderede grænsen for at forhindre fremtidige fordelte denial of service (DDoS) angreb, der kunne påvirke netværket.

Denne faste grænse for blokkapacitet havde den uønskede effekt at begrænse Bitcoins potentiale til at skalere på flere måder.

Lav gennemstrømning og langsomme transaktionstider

Kun et begrænset antal transaktioner kan passe ind i den relativt lille 1MB blok, som Bitcoin nu har vedtaget. Denne lille kapacitet betød, at Bitcoin-netværket kun kunne behandle omkring 2–3 bitcoin (BTC) transaktioner pr. sekund — langt fra traditionelle digitale betalingsnetværk, der kan behandle titusinder af transaktioner pr. sekund.

Derudover, for at en blok af transaktioner skal betragtes som gyldig som en del af bitcoin mining processen, skal den modtage seks bekræftelser. Med andre ord skal seks nye blokke tilføjes til blockchainen efter den pågældende blok, før den bliver færdiggjort. Med en gennemsnitlig bloktid på ti minutter betyder det, at bitcoin blokbekræftelser tager omkring en time.

På det tidspunkt, hvor kun en håndfuld "Cypherpunk" kryptografer var klar over bitcoin, var det ikke nødvendigvis et stort problem. Men hvis Bitcoin-netværket skulle blive et globalt "peer-to-peer elektronisk kontantsystem", som Satoshi forestillede sig i Bitcoin white paper, måtte der ske ændringer.

Høje gebyrer

Bitcoins lave gennemstrømning, begrænset af dens lille blokkapacitet, betød, at gebyrerne også var relativt meget højere end de er i dag.

Her er en nem måde at forstå dette problem på. Forestil dig, at du står udenfor i en menneskemængde efter at have set et teaterstykke. Alle fra teatret vil gerne tage en taxa hjem på samme tid. Hvis der er masser af taxaer omkring, burde det være nemt for alle at komme hjem. Men hvis der kun er en håndfuld taxaer, kan folk forsøge at betale en højere pris til taxaerne for at tilskynde chaufføren til at tage dem hjem først. Afhængigt af efterspørgslen kan priserne for taxaer stige betydeligt højere end den normale sats.

Bitcoin-gebyrer fungerer ud fra de samme principper for udbud og efterspørgsel. Hvis mange mennesker ønsker, at deres transaktioner skal behandles på samme tid, kan nogle vælge at betale mere i gebyrer for at få deres transaktion behandlet hurtigere af minerne. I perioder med høj brug på Bitcoin-netværket kan trængsel resultere i konkurrence blandt brugerne, hvilket kan få transaktionsgebyrerne til at stige kraftigt.

Transaktionsmalleabilitet

En anden iboende nuance ved måden, Bitcoin-blokke fungerede på, var kendt som transaktionsmalleabilitet. Før SegWit kunne folk ændre ID'et på en transaktion, før det modtog nok bekræftelser på blockchainen.

At tage oplysningerne relateret til en specifik transaktion og køre det gennem en hash-funktion skaber et transaktions-ID. Du kan lære mere om hash-funktioner i vores artikel Hvordan bruger kryptovalutaer kryptografi?

Men for enkelhedens skyld kan du tænke på disse transaktions-ID'er som digitale fingeraftryk, der bruges til at identificere og referere til transaktioner på blockchainen.

Ændring af transaktions-ID'et skaber en helt ny hash, som nogle gange kan forvirre blockchain-klientsoftware. Alle noder kører klientsoftware for at interagere med blockchainen og udføre vigtige roller som datavalidering.

Denne malleabilitetsfejl i Bitcoins kode åbnede døren for ondsindede angreb. Et af de mest berygtede eksempler på et angreb på transaktionsmalleabilitet var Mt. Gox-børsens hack i 2014 - berømt for at være det største bitcoin-hack i historien.

Eksperter rapporterede at en hacker eller en gruppe af hackere drænede Mt. Gox-børsens bitcoin-tegnebog. De gjorde dette delvist ved at ændre transaktions-ID'et for deres udbetalinger. 

Angrebet på transaktionsmalleabilitet fik det til at se ud som om, at udbetalinger ikke blev bekræftet på blockchainen, når de i virkeligheden blev det.

Denne sårbarhed, sammen med andre angrebsvektorer, gjorde det muligt for hackeren(e) at siphonere over 840.000 BTC fra børsen.

Hvilke forbedringer gjorde SegWit? ⚙️

Bitcoin-bidragsyder Pieter Wuille præsenterede først SegWit-opgraderingen ved et Bitcoin Hong Kong-arrangement i 2015.

Hans løsning var innovativ på tre fronter. SegWit forbedrede Bitcoins skalerbarhed, fjernede malleabilitet og tillod noder at adoptere den nye transaktionsstruktur. Bedst af alt kunne dette implementeres uden at hard-forke netværket.

Separat digital signatur og transaktionsinformation

Wuilles forslag øgede Bitcoins blokkapacitet ved at "segregere" "vidne"-data fra en blok og flytte det til coinbase-transaktionen. Coinbase-transaktioner er de allerførste transaktioner inden for hver ny Bitcoin-blok. Coinbase-transaktionen er ansvarlig for at udstede nypræget kryptovaluta i omløb som en belønning for bitcoin mining processen.

Minere, der lykkes med at vinde Bitcoins kryptografibaserede proof-of-work-konkurrence, tjener disse nyprægede tokens som "blokbelønninger."

Vidne-data, også kendt som ScriptSig eller Unlocking Script, inkluderer digital signatur og offentlige nøgleoplysninger, der er nødvendige for at låse den overførte bitcoin op. SegWit-opgraderingen introducerede et separat "vidnefelt" til ScriptSig-delen af en transaktion.

Ved at behandle digitale signaturinformationer separat fra transaktionsinputfeltet, var der mere plads til transaktioner i hver blok.

Flere transaktioner pr. blok svarer til højere transaktionsgennemstrømning. Så i stedet for 2-3 transaktioner pr. sekund kan Bitcoin behandle mellem 7-10 SegWit-transaktioner pr. sekund. Øget kapacitet betyder også lavere gebyrer, da Bitcoin-blockchainen kan håndtere et højere volumen af transaktioner.

På trods af adskillelsen er det vigtigt at bemærke, at noder stadig behandler både transaktionsdata og vidnedata on-chain. Ingen sidechain eller Layer 2-protokoller anvendes.

Blokvægt

Før SegWit målte minearbejdere bitcoin-blokke efter størrelse (i bytes). Dette system fungerede godt, når blokke indeholdt både vidne- og transaktionsdata, men stødte på problemer, når de blev adskilt.

For at overvinde dette introducerede opgraderingen en måleenhed kaldet blokvægt for at styre størrelsen på blokke.

Med dette koncept består hver 1-megabyte blok af 4.000.000 vægtenheder (WU). Hver transaktion tildeles en vægt baseret på følgende formel:

Basis transaktionsstørrelse i bytes (uden vidnedata) * 3 + Total transaktionsstørrelse i bytes.

Ved at fjerne vidnefeltdata fra beregningen har SegWit-transaktioner en meget lavere vægt. På den anden side indeholder en ikke-SegWit-transaktion stadig vidnedata. Dette betyder, at ikke-SegWit-transaktioner altid vejer 4 gange mere end SegWit-transaktioner.

Dette koncept øger teoretisk størrelsen på en bitcoin-blok fra 1MB til 4MB, hvis en blok næsten udelukkende består af vidnedata. Men dette er ikke muligt i praksis.

Den største fordel ved det vægtede system er, at det tilskynder minearbejdere til at behandle blokke, der hovedsageligt indeholder SegWit-transaktioner. Hvis man antager, at SegWit-transaktioner har de samme gebyrer som legacy-blokke, kan en miner behandle mange flere SegWit-transaktioner pr. blok. Jo flere transaktioner de behandler pr. blok, jo flere gebyrer tjener de.

En win-win for begge parter. Eller det ville man tro.

Ingen flere problemer med transaktionsmalleabilitet

Under SegWit-strukturen indeholder den hashede transaktions-ID kun transaktionsoplysningerne, ikke oplysningerne fra vidnefeltet.

Denne ændring fjerner den modificerbare komponent af en bitcoin-transaktion, der tidligere gjorde det muligt for malleabilitetsangreb.

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

 

Hvorfor var SegWit kontroversielt? 🤔

Mange i udviklingssamfundet mente, at SegWit ikke gik langt nok for at tackle Bitcoins skaleringsproblemer.

De vigtigste argumenter imod aktiveringen af SegWit inkluderer:

  • Bitcoins øgede gennemstrømning på 7-10 transaktioner pr. sekund er stadig langt fra høj nok til et decentraliseret, globalt betalingssystem.
  • Gebyrerne ville forblive relativt høje, hvilket gør ting som mikrotransaktioner økonomisk urealistiske.
  • Minere kan stadig behandle legacy-transaktionsblokke, hvilket betyder, at malleabilitet stadig er en trussel.
  • Det blev senere opdaget, at SegWit ville negere Bitmains ASICBOOST-mekanisme; en udnyttelse, der blev brugt til betydeligt at øge effektiviteten af mineudstyr.

Omkring et år efter Wuille’s forslag havde han og andre Bitcoin Core-udviklere, herunder Eric Lombrozo, forberedt koden til at gå live i den kommende Bitcoin Core 0.13.1-opdatering. Det eneste resterende skridt for at aktivere SegWit var, at minerne skulle begynde at behandle nye SegWit-blokke. 

For at cementere dens implementering skulle over 95% af alle bitcoin-minere vise støtte til SegWit inden for de første to uger efter dens indførelse - en stor hindring i betragtning af omstændighederne på det tidspunkt.

Brugeraktiveret blød fork

Unødvendigt at sige, at store minefirmaer som Bitmain stadig var utilfredse med de foreslåede ændringer og nægtede at støtte aktiveringen af SegWit.

I begyndelsen af 2017 rejste en pseudonym udvikler ved navn "Shaolinfry" muligheden for, at Bitcoin-noder håndhævede en blød fork i et online bitcoin-dev indlæg

En brugeraktiveret blød fork var aldrig blevet forsøgt på Bitcoin-netværket før, men det ville give udviklerne mulighed for at presse SegWit igennem med omkring 51% støtte fra minearbejdere. De, der nægtede at støtte nye blokke, risikerede at få deres blokke afvist af noder. Løsningen var ikke uden sine risici. Hvis SegWit ikke fik tilstrækkelig opbakning fra minearbejdere, ville resultatet uundgåeligt føre til en kædesplit.

De, der var imod SegWit, foreslog i stedet en anden SegWit 2X hård fork-opgradering. En, der ville implementere SegWit og øge Bitcoins blokstørrelse til 2MB.

I modsætning til den tidligere opgradering ville SegWit 2X ikke være bagudkompatibel med tidligere versioner af Bitcoin-klienten. Disse ændringer betød, at noder skulle opdatere deres software for at fortsætte med at operere på netværket.

SegWit & New York-aftalen 🗽

Branchens topvirksomheder mødtes på Consensus 2017 og underskrev samlet et memorandum kaldet "New York-aftalen." Dette dokument skitserede planer for, at SegWit skulle gå live om sommeren og for Bitcoins blokstørrelse at stige til 2MB inden november.

Forud for november udarbejdede Shaolinfry to Bitcoin-forbedringsforslag (BIPs); BIP148 og BIP149. Det første repræsenterede en hård og fast løsning; signalstøtte til SegWit-blokke eller noder vil afvise dine blokke. Det sidste gav en længere tidsramme for minearbejdere at onboarde, og satte en aktiveringsfrist til juli det følgende år.

Da datoen nærmede sig, foreslog Bitmain Warranty-ingeniør, James Hillard, et nyt BIP; BIP91. Hans løsning søgte at gøre både SegWit 2X og BIP148 kompatible med hinanden. Hvorfor risikere en kædesplit over to konkurrerende SegWit-opdateringer, når du kan gøre dem begge kompatible?

Den 1. august cementerede tilstrækkelig minedriftstøtte SegWits aktivering. Den anden fase af New York-aftalen fik dog ikke den samme opbakning.

Manglen på at øge Bitcoins blokstørrelse til 2MB resulterede i dannelsen af Bitcoin Cash (BCH) - et nyt forkert projekt fra Bitcoin blockchain.

382.39
+1,61 %
24 t.
bch

Vigtigheden af Bitcoins uafhængighedsdag

Introduktionen af SegWit og samfundets beslutning om at afvise blokstørrelsesforøgelsen repræsenterede et skelsættende øjeblik for det bredere Bitcoin-samfund.

SegWit viste vigtigheden af konsensus, når det kom til ændringer af Bitcoin blockchain samt omfanget af decentraliseringen af magten, som bitcoin tilbød.

Ingen enkeltperson var i stand til at overtage netværket og få deres forslag igennem.

I stedet debatterede samfundet, itererede og fortsatte den lange proces med at nå konsensus som en kollektiv gruppe - ikke under ledelse af en enkeltperson.

Begynd at købe Bitcoin

Nu hvor du har lært alt om SegWit, er du klar til at fortsætte din kryptorejse og købe bitcoin?

Tjek vores Kraken Learn Center-guide for mere information om Hvordan man køber Bitcoin (BTC) og tilmelder dig en konto hos Kraken i dag.