Vad är Segregated Witness (SegWit)?

Av Kraken Learn team
11 min
26 nov. 2024

Nybörjarguiden till Bitcoin SegWit 💭

Segregated Witness (SegWit) var en uppgradering av Bitcoins källkod den 1 augusti 2017.

Trots att många såg det som förbättringar av Bitcoin-blockkedjan, mötte SegWit starkt motstånd som delade gemenskapen. 

I hjärtat av frågan fanns en konkurrerande intressekonflikt mellan gruvdriftens lönsamhet och nätverksutvecklare som ville göra Bitcoin billigare och snabbare att använda.

Spänningen orsakade en klyfta inom gemenskapen, vilket kulminerade i nätverkets första användaraktiverade mjuka gaffel och en fientlig splittring. Delningen födde en serie nya Bitcoin-gaflade projekt, inklusive Bitcoin Cash.

Till dags dato förblir SegWit ett av de mest kontroversiella händelserna i Bitcoins historia. Men det har också visat sig vara en av de viktigaste uppdateringarna för protokollets långsiktiga livskraft. 

Varje år firar många i Bitcoin-gemenskapen den 1 augusti som "Bitcoin självständighetsdag." Denna händelse markerar tillfället när folkets vilja segrade mot de centraliserade intressena hos etablerade bitcoin-gruvföretag.

Låt oss utforska var och en av dessa händelser som de inträffade och packa upp historien bakom SegWit.

BTC icon
56 267.00
+4,04 %
24H
btc

Bitcoin före SegWit ⏮️

Innan SegWit-aktiveringen hade Bitcoins blockkapacitet förblivit oförändrad i många år. Blockkapacitet avser det maximala antalet transaktioner som kan registreras inom ett givet block.

När Bitcoin lanserades 2009 satte dess skapare Satoshi Nakamoto inga parametrar för hur stora bitcoin-block kunde vara.

Men 2010 lade Nakamoto hemligt till en gräns för blockstorlek på 1 megabyte (MB) utan godkännande från andra Bitcoin-bidragare.

Många trodde att Nakamoto inkluderade gränsen för att förhindra framtida distribuerade överbelastningsattacker (DDoS) som kunde påverka nätverket.

Denna fasta gräns för blockkapacitet hade den oönskade effekten att begränsa Bitcoins potential att skala på flera sätt.

Låg genomströmning och långsamma transaktionstider

Endast ett begränsat antal transaktioner kan få plats i det jämförelsevis lilla 1MB-block som Bitcoin nu antagit. Denna lilla kapacitet innebar att Bitcoin-nätverket endast kunde bearbeta cirka 2–3 bitcoin (BTC) transaktioner per sekund — en stor skillnad från traditionella digitala betalningsnätverk som kan bearbeta tiotusentals transaktioner per sekund.

Dessutom, för att en block av transaktioner ska anses vara giltig som en del av bitcoin mining processen, måste den få sex bekräftelser. Med andra ord måste sex nya block läggas till blockkedjan efter det aktuella blocket innan det kan slutföras. Med en genomsnittlig blocktid på tio minuter innebär detta att bitcoin-blockbekräftelser tar omkring en timme.

Vid den tiden, när bara en handfull "Cypherpunk"-kryptografer var medvetna om bitcoin, var det inte nödvändigtvis ett stort problem. Men, om Bitcoin-nätverket skulle bli ett globalt "peer-to-peer elektroniskt kontantsystem" som Satoshi föreställde sig i Bitcoin white paper, behövde saker förändras.

Höga avgifter

Bitcoins låga genomströmning, begränsad av dess lilla blockkapacitet, innebar att avgifterna också var jämförelsevis mycket högre än de är idag.

Här är ett enkelt sätt att förstå detta problem. Föreställ dig att du står utanför i en folkmassa efter att ha sett en teaterföreställning. Alla från teatern vill ta en taxi hem samtidigt. Om det finns gott om taxibilar runt omkring, borde det vara lätt för alla att komma hem. Men, om det bara finns en handfull taxibilar, kan folk försöka betala ett högre pris till taxichaufförerna för att uppmuntra chauffören att ta dem hem först. Beroende på efterfrågan kan priserna för taxibilar skjuta i höjden betydligt högre än det normala priset.

Bitcoin-avgifter fungerar utifrån dessa samma principer för utbud och efterfrågan. Om många människor vill ha sina transaktioner behandlade samtidigt, kan vissa välja att betala mer i avgifter för att få sin transaktion behandlad snabbare av gruvarbetarna. Under perioder med hög användning på Bitcoin-nätverket kan trängsel leda till konkurrens bland användare, vilket kan orsaka att transaktionsavgifterna skjuter i höjden.

Transaktionsformbarhet

En annan inneboende nyans med hur Bitcoin-block fungerade var känd som transaktionsmalleabilitet. Innan SegWit kunde folk ändra ID:t för en transaktion innan den fick tillräckligt med bekräftelser på blockkedjan.

Att ta information relaterad till en specifik transaktion och köra den genom en hash-funktion skapar ett transaktions-ID. Du kan lära dig mer om hash-funktioner i vår artikel Hur använder kryptovalutor kryptografi?

Men för enkelhetens skull kan du tänka på dessa transaktions-ID:n som digitala fingeravtryck som används för att identifiera och referera till transaktioner på blockkedjan.

Att ändra transaktions-ID:t skapar en helt ny hash som ibland kan förvirra blockkedjeklientprogramvara. Alla noder kör klientprogramvara för att interagera med blockkedjan och utföra viktiga roller som dataverifiering.

Denna formbarhetsbugg i Bitcoins kod öppnade dörren för illvilliga attacker. Ett av de mest beryktade exemplen på en attack mot transaktionsformbarhet var Mt. Gox-börsens hack 2014 – känd för att vara den största bitcoin-hacket i historien.

Experter rapporterade att en hacker, eller en grupp av hackare, tömde Mt. Gox-börsens bitcoin-plånbok. De gjorde detta delvis genom att ändra transaktions-ID:t för sina uttag. 

Attacken mot transaktionsformbarhet fick det att verka som om uttagen inte bekräftades på blockkedjan, när de i själva verket gjorde det.

Denna sårbarhet, i kombination med andra attackvektorer, gjorde det möjligt för hackaren/hackarna att suga över 840 000 BTC från börsen.

Vilka förbättringar gjorde SegWit? ⚙️

Bitcoin-bidragaren Pieter Wuille presenterade först SegWit-uppgraderingen vid ett Bitcoin Hong Kong-evenemang 2015.

Hans lösning var innovativ på tre fronter. SegWit förbättrade Bitcoins skalbarhet, tog bort formbarhet och tillät noder att anta den nya transaktionsstrukturen. Bäst av allt, detta kunde implementeras utan att hårdga fork nätverket.

Separat digital signatur och transaktionsinformation

Wuilles förslag ökade Bitcoins blockkapacitet genom att "segreggera" "vittnes"-data från ett block och flytta det till coinbase-transaktionen. Coinbase-transaktioner är de allra första transaktionerna inom varje nytt Bitcoin-block. Coinbase-transaktionen är ansvarig för att utfärda nypräglad kryptovaluta i cirkulation som belöning för bitcoin mining-processen.

Gruvoperatörer som lyckas vinna Bitcoins kryptografibaserade proof-of-work-tävling tjänar dessa nypräglade tokens som "blockbelöningar."

Vittnesdata, även känt som ScriptSig eller Unlocking Script, inkluderar digital signatur och offentlig nyckelinformation som behövs för att låsa upp den överförda bitcoin. SegWit-uppgraderingen introducerade ett separat "vittnesfält" för ScriptSig-delen av en transaktion.

Genom att bearbeta digital signaturinformation separat från transaktionsinmatningsfältet fanns det mer utrymme för transaktioner att passa in i varje block.

Fler transaktioner per block innebär högre transaktionsgenomströmning. Så istället för 2-3 transaktioner per sekund kan Bitcoin bearbeta mellan 7-10 SegWit-transaktioner per sekund. Ökad kapacitet innebär också lägre avgifter, eftersom Bitcoin-blockkedjan kan hantera en högre volym av transaktioner.

Trots separationen är det viktigt att notera att noder fortfarande bearbetar både transaktionsdata och vittnesdata på kedjan. Ingen sidokedja eller Layer 2-protokoll används.

Blockvikt

Innan SegWit mätte gruvarbetare bitcoin-block efter storlek (i byte). Detta system fungerade bra när block innehöll både vittnes- och transaktionsdata, men stötte på problem när de separerades.

För att övervinna detta introducerade uppgraderingen en måttstock som kallas blockvikt för att hantera storleken på block.

Med detta koncept består varje 1-megabyte block av 4 000 000 vikt-enheter (WU). Varje transaktion ges en vikt baserat på följande formel:

Bastransaktionsstorlek i byte (utan vittnesdata) * 3 + Total transaktionsstorlek i byte.

Genom att ta bort vittnesfältdata från beräkningen har SegWit-transaktioner en mycket lägre vikt. Å andra sidan innehåller en icke-SegWit-transaktion fortfarande vittnesdata. Detta innebär att icke-SegWit-transaktioner alltid väger 4 gånger mer än SegWit-transaktioner.

Detta koncept ökar teoretiskt storleken på ett bitcoin-block från 1MB till 4MB, om ett block nästan helt består av vittnesdata. Men detta är inte möjligt i praktiken.

Den största fördelen med det viktade systemet är att det incitamenterar gruvarbetare att bearbeta block som mestadels innehåller SegWit-transaktioner. Om man antar att SegWit-transaktioner har samma avgifter som legacy-block, kan en miner bearbeta mycket fler SegWit-transaktioner per block. Ju fler transaktioner de bearbetar per block, desto fler avgifter tjänar de.

En win-win för båda parter. Eller så skulle man tro.

Inga fler problem med transaktionsmalleabilitet

Under SegWit-strukturen innehåller den hashade transaktions-ID:n endast transaktionsinformationen, inte vittnesfältets information.

Denna förändring tar bort den modifierbara komponenten av en bitcointransaktion som tidigare möjliggjorde malleabilitetsattacker.

Som ett resultat blev sekundära skalningslösningar som Bitcoin Lightning Network möjliga.

 

Varför var SegWit kontroversiellt? 🤔

Många i utvecklingsgemenskapen kände att SegWit inte gick tillräckligt långt för att ta itu med Bitcoins skalningsproblem.

De huvudsakliga argumenten mot aktiveringen av SegWit inkluderar:

  • Bitcoins ökade genomströmning på 7-10 transaktioner per sekund är fortfarande långt ifrån tillräckligt för ett decentraliserat, globalt betalningssystem.
  • Avgifterna skulle förbli relativt höga, vilket gör saker som mikrotransaktioner ekonomiskt orealistiska.
  • Miners kan fortfarande bearbeta legacy-transaktionsblock, vilket innebär att malleabilitet fortfarande är ett hot.
  • Det upptäcktes senare att SegWit skulle upphäva Bitmains ASICBOOST-mekanism; en utnyttjande som användes för att avsevärt öka effektiviteten hos gruvriggar.

Cirka ett år efter Wuille’s förslag hade han och andra Bitcoin Core-utvecklare, inklusive Eric Lombrozo, förberett koden för att gå live i den kommande Bitcoin Core 0.13.1-uppdateringen. Det enda återstående steget för att aktivera SegWit var att miners skulle börja bearbeta nya SegWit-block. 

För att cementera dess implementering skulle över 95% av alla bitcoin-miners behöva visa stöd för SegWit inom de första två veckorna av dess initiering - ett stort hinder med tanke på omständigheterna vid den tiden.

Användaraktiverad mjuk gaffel

Det är överflödigt att säga att stora gruvföretag som Bitmain fortfarande var missnöjda med de föreslagna förändringarna och vägrade att stödja aktiveringen av SegWit.

I början av 2017 väckte en pseudonym utvecklare vid namn "Shaolinfry" möjligheten att Bitcoin-noder skulle genomdriva en mjuk gaffel i ett online bitcoin-dev inlägg

En användaraktiverad mjuk gaffel hade aldrig tidigare försökt på Bitcoin-nätverket, men det skulle tillåta utvecklare att driva igenom SegWit med cirka 51% stöd från gruvarbetare. De som vägrade att stödja nya block riskerade att få sina block avvisade av noder. Lösningen var inte utan sina risker. Om SegWit misslyckades med att få tillräckligt med stöd från gruvarbetare skulle resultatet ofrånkomligen leda till en kedjesplittring.

De som var emot SegWit föreslog istället en annan SegWit 2X hård gaffeluppgradering. En som skulle implementera SegWit och öka Bitcoins blockstorlek till 2MB.

Till skillnad från den tidigare uppgraderingen skulle SegWit 2X inte vara bakåtkompatibel med tidigare versioner av Bitcoin-klienten. Dessa förändringar innebar att noder skulle behöva uppdatera sin programvara för att fortsätta fungera på nätverket.

SegWit & New York-avtalet 🗽

Branschens främsta företag träffades på Consensus 2017 och undertecknade gemensamt ett memorandum som kallades "New York Agreement." Detta dokument lade fram planer för att SegWit skulle gå live under sommaren och för Bitcoins blockstorlek att öka till 2MB i november.

Inför november utarbetade Shaolinfry två Bitcoin Improvement Proposals (BIPs); BIP148 och BIP149. Den förra representerade en hård och snabb lösning; signalera stöd för SegWit-block eller noder kommer att avvisa dina block. Den senare gav en längre tidsram för gruvarbetare att ansluta sig, med en aktiveringsdeadline för juli året därpå.

När datumet närmade sig föreslog Bitmain Warranty-ingenjören James Hillard en ny BIP; BIP91. Hans lösning syftade till att göra både SegWit 2X och BIP148 kompatibla med varandra. Varför riskera en kedjesplittring över två konkurrerande SegWit-uppdateringar när du kan göra dem båda kompatibla?

Den 1 augusti cementerade tillräckligt med gruvstöd SegWits aktivering. Den andra etappen av New York Agreement fick dock inte samma stöd.

Misslyckandet att öka Bitcoins blockstorlek till 2MB resulterade i bildandet av Bitcoin Cash (BCH) – ett nytt förgrening projekt från Bitcoin-blockkedjan.

378.060
+0,33 %
24H
bch

Vikten av Bitcoins oberoendedag

Införandet av SegWit och gemenskapens beslut att avvisa blockstorleksökningen representerade ett historiskt ögonblick för den bredare Bitcoin-gemenskapen.

SegWit visade vikten av konsensus när det gällde förändringar av Bitcoin-blockkedjan samt graden av decentralisering av makt som bitcoin erbjöd.

Ingen enskild individ kunde ta över nätverket och se sin proposition igenom.

Istället debatterade gemenskapen, itererade och fortsatte den långa processen att nå konsensus som en kollektiv grupp – inte under ledning av en enskild individ.

Börja köpa Bitcoin

Nu när du har lärt dig allt om SegWit, är du redo att fortsätta din kryptoresa och köpa bitcoin?

Kolla in vår Kraken Learn Center-guide för mer information om Hur man köper Bitcoin (BTC) och registrera dig för ett konto med Kraken idag.