Segregated Witness kan vara den viktigaste förbättringen av Bitcoin-protokollet hittills. Innovationen är inställd på att fixa transaktionens smidighet, erbjuder en effektiv blockstorleksökning, möjliggör utvecklingsflexibilitet och mer. Efter månader av kodning kommer Segregated Witness nära att lanseras, som en dra begäran överlämnades till Bitcoin Core tidigare i veckan.

Hur nära utrullning exakt? Som med alla ändringar av Bitcoin-protokollet är det svårt att förutsäga.

En tidslinje för segregerat vittne …

Steg ett: Idén

Varje förbättring av Bitcoin-protokollet börjar med en idé.

Idén om segregerat vittne går länge tillbaka; det allmänna konceptet att separera transaktions- och signaturuppgifter kommer troligen från 2014, eller kanske till och med tidigare. Men det var ungefär ett år sedan, tidigt 2015, det BlockstreamUtvecklingsteamet för Bitcoin och sidokedja beslutade att implementera konceptet i sin prototyp sidokedja: Element. Elements, som inkluderar Segregated Witness, designades mestadels av Bitcoin Core-utvecklaren och Blockstream-grundaren Gregory Maxwell och släpptes i juni 2015.

Vid den tidpunkten ansågs det fortfarande omöjligt att implementera Segregated Witness på Bitcoin blockchain, om inte det var genom en hård gaffel. Att separera transaktions- och signaturdata skulle på ett oförenligt sätt ändra strukturblocken, vilket kan orsaka en splittring i Bitcoin-nätverket mellan uppgraderade noder och icke-uppgraderade noder.

Hösten 2015 var det trots allt Bitcoin Core-utvecklaren Luke Dashjr som redogjorde för hur man implementerade Segregated Witness i huvud Bitcoin-protokollet. Med hjälp av ett smart hack kan Segregated Witness-transaktioner markeras som “alla som kan spendera” -transaktioner för icke-uppgraderade noder, medan uppgraderade noder omdirigeras till ett “tilläggsblock” med signaturdata. Detta löser inkompatibilitetsproblemet, vilket innebär att Segregated Witness kan rullas ut som en mjuk gaffel.

Detta alternativ diskuterades först bland Bitcoin Core-utvecklare genom typiska kommunikationskanaler: via privat e-post, på IRC, lite senare på Bitcoin utvecklings e-postlista och på andra håll. Alla som var inblandade i konversationen var överens om att det var en bra idé.

Ett par veckor senare, i december 2015, presenterades Segregated Witness offentligt av Bitcoin Core-utvecklaren Pieter Wuille på Skalning av Bitcoin verkstad Hong Kong.

Beräknad tid: 1 år

Steg två: Koden

En idé i sig förändrar ingenting. Någon behöver skriva koden för att förverkliga idén.

Wuille började koda Segregated Witness i november 2015 – ett par veckor innan han presenterade idén i Hong Kong. Upphetsad av den potentiella, Bitcoin Core-utvecklaren och Ciphrex VD Eric Lombrozo, Bitcoin Core-utvecklaren Johnson Lau och några andra utvecklare började också bidra.

Fem månader senare räknar Segregated Witness for Bitcoin Core 4 743 kodrader (inklusive testkod) och föreslår att 554 av befintliga rader med Bitcoin Core-kod tas bort eller modifieras. Wuille och de andra bidragsgivarna anser att det är gjort.

Total tid: + -5 månader

Steg tre: granskningen

Eftersom koden anses vara fullbordad lämnade Wuille in en begäran om utdrag denna vecka. En pull-begäran är i grunden ett “officiellt” förslag på utvecklingsplattformen GitHub att slå samman en sats kod – Segregated Witness – till Bitcoin Cores huvudgren: det ständigt utvecklande hjärtat i projektet som nya Bitcoin Core-utgåvor bygger på.

Detta markerar början på den tekniska granskningsprocessen. Andra utvecklare uppmanas att granska och testa koden och ge sina åsikter. Detta kan göras i form av en kommentar eller genom en typ av omröstning: “ACKs” (för) och “NACKs” (mot). Det finns också flera underavdelningar av ACK och NACK, till exempel för att indikera att koden har testats av utvecklaren – eller inte.

Granskningsprocessen kommer att ta så lång tid som Bitcoin Core-arkivhållaren – för närvarande Wladimir van der Laan – anser nödvändig. Om han tror att grov samförstånd för en sammanslagning är (och kommer att förbli) frånvarande, kan han stänga dragbegäran. Förslaget avvisas och avsändaren kan välja att skriva om koden på nytt.

Mer sannolikt, när det gäller Segregated Witness, kommer granskningsprocessen att ge feedback till Wuille och de andra utvecklarna, vilket kan leda till små förändringar av koden.

Och om Van der Laan någon gång tror att det finns grov enighet för en sammanslagning kommer han att slå samman begäran om dragning. Segregated Witness blir sedan en del av Bitcoin Cores huvudfilial.

När det gäller Segregated Witness är det svårt att säga hur lång tid det tar innan dragbegäran slås samman. Men eftersom det är en stor förändring kommer processen att ta flera veckor till en månad, eller kanske lite längre.

Uppskattad tid: 2 till 6 veckor

Steg fyra: Släppet

När pull-begäran slås samman i Bitcoin Core’s huvudfilial, måste den erbjudas allmänheten genom en ny Bitcoin Core-release.

Bitcoin Core erbjuder två typer av utgåvor: större utgåvor (som vanligtvis ändrar det andra numret i utgivningsversionen, som 0.10.0, 0.11.0, 0.12.0, etc.) och mindre utgåvor (ändrar det senaste numret, som 0.12. 1, 0,12,2, etc.). Stora utgåvor planeras ungefär två gånger per år, men innehåller vanligtvis inga föreslagna mjuka gafflar. Detta är så att vem som helst kan anta fördelarna med en ny större version, även om de inte vill uppgradera till den föreslagna mjuka gaffeln. 

Mindre versioner erbjuds när kod för en föreslagen mjuk gaffel (eller bug fix) slås samman, och Van der Laan anser att det finns grov enighet för en release. (Detta diskuteras normalt under veckovisa IRC-möten.)

Alla utgåvor – stora och mindre – märkas först som ”utsläppskandidat.” En release-kandidat är en föreslagen release, som först erbjuds offentligt för testning. Om det finns några buggar eller andra problem i release-kandidaten skapas en ny release-kandidat och erbjuds också offentligt för testning. 

Dessutom går alla utgåvor – stora och mindre, samt utgivarkandidater – genom en teknisk byggnads- och signeringsritual (”gitian-byggnad”) utförd av flera utvecklare. Detta görs för säkerhets- och kvalitetsändamål och kan ta upp till flera dagar.

Om det efter ungefär en vecka inte rapporteras några problem i den senaste release-kandidaten kommer Van der Laan att meddela att denna release-kandidat nu är den faktiska nya versionen. Denna nya version distribueras genom bitcoincore.org och bitcoin.org.

Beräknad tid: 1 vecka+

Steg fem: Aktivering

När Bitcoin 0.12.2 har släppts uppmuntrar Bitcoin Core-teamet alla att uppgradera. Medan uppgradering är valfritt – äldre noder förblir kompatibla med resten av Bitcoin-nätverket – uppgraderade noder skördar fördelarna med Segregated Witness och behåller maximal säkerhet.

Men om bara vanliga användare uppgraderar kommer Segregated Witness ännu inte att aktiveras. Aktivering kräver att gruvarbetare uppgraderar. Enligt Bitcoin Core 0.12.1 och antagandet av versionbitar sker mjuka gafflar genom en ny typ av signalering.

Först börjar gruvarbetare (eller pooler) som kör Bitcoin Core 0.12.2 (och Bitcoin-implementeringar som slår samman liknande kod) automatiskt att de är redo att bryta Segregated Witness-transaktioner. Detta händer genom versionbitar som de innehåller i block de gör mina som anger vilka typer av transaktioner och block de kan bryta. 

När gruvarbetare som representerar 95 procent av hashkraften (1 916 block) inom en enda svårighetsperiod (2 016 block / cirka två veckor) inkluderar rätt version bit, är den mjuka gaffeln låst i. En svårighetsperiod senare aktiveras den mjuka gaffeln, vilket betyder resterande 5 procent av gruvarbetarna har ungefär två veckor på sig att uppgradera. (Om de inte uppgraderar kommer de att förbli en del av Bitcoin-nätverket, men kan ha kvarlämnat sina block av andra gruvarbetare om de inkluderar nu ogiltiga transaktioner.)

Huruvida och hur snabbt gruvarbetare som representerar minst 95 procent av hashkraften kommer att stödja Segregated Witness är svårt att förutsäga. Enligt Hong Kong Bitcoin Roundtable Consensus brev, en stor majoritet av gruvarbetare med hashkraft lovade att anta segregerat vittne. 

Men till och med det brevet representerade inte 95 procent av hashkraften. Och drygt 5 procent av hashkraften bryter för närvarande till förmån för Bitcoin Classic; det är inte klart om den konkurrerande Bitcoin Core-gaffeln också kommer att slå samman Segregated Witness. (Det är inte heller klart om dessa gruvarbetare kommer att hålla fast vid Bitcoin Classic om den inte slår samman Segregated Witness.)

Minsta tid: 4 veckor

Steg sex: Adoptionen

Efter att Segregated Witness har aktiverats i Bitcoin-nätverket krävs ett sista steg för att användare ska kunna dra nytta av det: Wallet-programvaran måste innehålla möjligheten att faktiskt skapa och ta emot Segregated Witness-transaktioner.

Hur lång tid det tar för plånböcker att anta beror på deras utvecklare – och på Bitcoin-biblioteksutvecklare. När Bitcoin frågade plånbok- och biblioteksutvecklare om detta tidigare i år verkade det som om de flesta planerar att integrera Segregated Witness i sin programvara. Den takt som detta kommer att ske kan dock variera; vissa utvecklare är mer villiga, bättre finansierade eller helt enkelt mer kapabla än andra. En del har redan gjort de nödvändiga ändringarna och kommer att stödja Segregated Witness från dag 1 av aktivering; andra kan ta lite längre tid.

Men så länge det finns minst en plånbok som erbjuder alternativet kan användare alltid byta och njuta av fördelarna direkt.

Uppskattad tid: varierar

 

Tack till Bitcoin Core-utvecklarna Eric Lombrozo och BTCDrak för feedback och teknisk vägledning.