Segregated Witness kan være den mest betydningsfulde forbedring af Bitcoin-protokollen til dato. Innovationen er indstillet til at løse transaktionens smidighed, tilbyder en effektiv stigning i blokstørrelse, muliggør udviklingsfleksibilitet og mere. Efter måneder med kodning er Segregated Witness tæt på udrulning, som en træk anmodning blev sendt til Bitcoin Core tidligere på ugen.
Hvor tæt på udrulning nøjagtigt? Som med enhver ændring af Bitcoin-protokollen er det svært at forudsige.
En tidslinje for adskilt vidne …
Trin et: Idéen
Hver forbedring af Bitcoin-protokollen starter med en idé.
Idéen om adskilt vidne går lang tid tilbage; det generelle koncept om at adskille transaktions- og signaturdata opstod sandsynligvis i 2014 eller måske endnu hurtigere. Men det var omkring et år siden, begyndelsen af 2015, det Blockstream‘S Bitcoin og sidekædeudviklingsteam besluttede at implementere konceptet i deres prototype sidekæde: Elementer. Elements, der inkluderer Segregated Witness, blev for det meste designet af Bitcoin Core-udvikler og Blockstream-medstifter Gregory Maxwell og udgivet i juni 2015.
På det tidspunkt blev det stadig anset for umuligt at implementere Segregated Witness på Bitcoin blockchain, medmindre det var gennem en hård gaffel. Adskillelse af transaktions- og signaturdata vil uforeneligt ændre strukturblokkene, hvilket kan forårsage en opdeling i Bitcoin-netværket mellem opgraderede noder og ikke-opgraderede noder.
I efteråret 2015 var det Bitcoin Core-udvikleren Luke Dashjr, der trods alt fandt ud af, hvordan man implementerede Segregated Witness i den vigtigste Bitcoin-protokol. Ved hjælp af et smart hack kan Segregated Witness-transaktioner markeres som “alle, der kan bruge” -transaktioner for ikke-opgraderede noder, mens opgraderede noder omdirigeres til en “tilføjelsesblok” med signaturdata. Dette løser problemet med inkompatibilitet, hvilket betyder, at Segregated Witness kan rulles ud som en blød gaffel.
Denne mulighed blev først diskuteret blandt Bitcoin Core-udviklere gennem typiske kommunikationskanaler: via privat e-mail, på IRC, lidt senere på Bitcoin udvikling mailingliste og andre steder. Alle involverede i samtalen var enige om, at det var en god idé.
Et par uger senere, i december 2015, blev Segregated Witness offentligt præsenteret af Bitcoin Core-udvikleren Pieter Wuille på Skalering af Bitcoin workshop Hong Kong.
Anslået tid: 1 år
Trin to: Koden
En idé i sig selv ændrer ikke noget. Nogen har brug for at skrive koden for at realisere ideen.
Wuille begyndte at kode Segregated Witness i november 2015 – et par uger før han præsenterede ideen i Hong Kong. Spændt af den potentielle, Bitcoin Core-udvikler og Ciphrex CEO Eric Lombrozo, Bitcoin Core-udvikler Johnson Lau og nogle andre udviklere begyndte også at bidrage.
Fem måneder senere tæller Segregated Witness for Bitcoin Core 4.743 linjer kode (inklusive testkode) og foreslår at fjerne eller ændre 554 af eksisterende linjer med Bitcoin Core-kode. Wuille og de andre bidragydere anser det for gjort.
Samlet tid: + -5 måneder
Trin tre: Gennemgangen
Da koden betragtes som afsluttet, indsendte Wuille en pull-anmodning i denne uge. En pull-anmodning er grundlæggende et “officielt” forslag på udviklingsplatform GitHub om at fusionere en batch kode – Segregated Witness – til Bitcoin Core’s hovedfilial: det konstant udviklende hjerte i projektet, som nye Bitcoin Core-udgivelser er baseret på.
Dette markerer starten på den tekniske gennemgangsproces. Andre udviklere opfordres til at gennemgå og teste koden og give deres mening. Dette kan gøres i form af en kommentar eller ved en type afstemning: “ACKs” (for) og “NACKs” (imod). Der er også flere underopdelinger af ACK’er og NACK’er, for eksempel for at indikere, at koden er blevet testet af den udvikler – eller ej.
Gennemgangsprocessen vil tage så lang tid, som vedligeholderen af Bitcoin Core-arkivet – i øjeblikket Wladimir van der Laan – finder det nødvendigt. Hvis han mener, at grov konsensus for en fusion er (og vil forblive) fraværende, kan han lukke pull-anmodningen. Forslaget afvises, og indsenderen kan vælge at omskrive koden.
I tilfælde af Segregated Witness vil reviewprocessen mere sandsynligt give feedback til Wuille og de andre udviklere, hvilket kan føre til mindre ændringer i koden.
Og hvis Van der Laan på et eller andet tidspunkt mener, at der er grov konsensus for en fusion, vil han fusionere pull-anmodningen. Segregated Witness bliver derefter en del af Bitcoin Core’s masterfilial.
I tilfælde af Segregated Witness er det svært at sige, hvor lang tid det tager for pull-anmodningen at blive flettet. Men da det er en stor ændring, vil processen tage flere uger til en måned eller måske lidt længere.
Anslået tid: 2 til 6 uger
Trin fire: frigivelsen
Når pull-anmodningen er slået sammen med Bitcoin Core’s hovedfilial, skal den tilbydes offentligheden gennem en ny Bitcoin Core-udgivelse.
Bitcoin Core tilbyder to typer udgivelser: større udgivelser (som typisk ændrer det andet nummer i udgivelsesversionen som 0.10.0, 0.11.0, 0.12.0 osv.) Og mindre udgivelser (ændrer det sidste nummer, som 0.12. 1, 0,12,2 osv.). Større udgivelser er planlagt ca. to gange om året, men inkluderer normalt ikke nogen foreslåede bløde gafler. Dette er så alle kan vedtage fordelene ved en ny større udgivelse, selvom de ikke ønsker at opgradere til den foreslåede bløde gaffel.
Mindre udgivelser tilbydes, når kode til en foreslået blød gaffel (eller bug fix) flettes, og Van der Laan mener, at der er grov enighed om en frigivelse. (Dette diskuteres normalt under ugentlige IRC-møder.)
Alle udgivelser – større og mindre – mærkes først som “frigivelseskandidat.” En frigivelseskandidat er en foreslået frigivelse, som først udbydes offentligt til test. Hvis der findes fejl eller andre problemer i frigivelseskandidaten, oprettes en ny frigivelseskandidat og tilbydes også offentligt til test.
Derudover går alle udgivelser – større og mindre såvel som frigivelseskandidater – gennem en teknisk bygning og underskrivelsesritual (“gitian-bygning”) udført af flere udviklere. Dette gøres af sikkerhedsmæssige årsager og kan tage op til flere dage.
Hvis der efter cirka en uge ikke rapporteres om problemer i den seneste udgivelseskandidat, vil Van der Laan meddele, at denne udgivelseskandidat nu er den egentlige nye udgivelse. Denne nye udgivelse distribueres igennem bitcoincore.org og bitcoin.org.
Anslået tid: 1 uge+
Trin fem: Aktivering
Når Bitcoin 0.12.2 er frigivet, vil Bitcoin Core-udviklingsteamet opfordre alle til at opgradere. Mens opgradering er valgfri – ældre noder forbliver kompatible med resten af Bitcoin-netværket – opgraderede noder høster fordelene ved Segregated Witness og bevarer maksimal sikkerhed.
Men hvis kun typiske brugere opgraderer, vil Segregated Witness endnu ikke blive aktiveret. Aktivering kræver, at minearbejdere opgraderer. I henhold til Bitcoin Core 0.12.1 og vedtagelsen af versionbits sker bløde gafler gennem en ny type signalering.
For det første begynder minearbejdere (eller puljer), der kører Bitcoin Core 0.12.2 (og Bitcoin-implementeringer, der flettede lignende kode) automatisk at signalere, at de er klar til at udvinde Segregated Witness-transaktioner. Dette sker via versionbits, de inkluderer i blokke, de gør mine, der angiver, hvilke typer transaktioner og blokke de kan udvinde.
Når minearbejdere, der repræsenterer 95 procent af hashkraft (1.916 blokke) inden for en enkelt sværhedsperiode (2.016 blokke / ca. to uger), inkluderer den rigtige version bit, blødes gaffelen i. En sværhedsperiode senere aktiveres den bløde gaffel, hvilket betyder de resterende 5 procent af minearbejdere har cirka to uger til at opgradere. (Hvis de ikke opgraderer, forbliver de en del af Bitcoin-netværket, men kan få deres blokke forældreløse af andre minearbejdere, hvis de inkluderer nu ugyldige transaktioner.)
Det er svært at forudsige, om og hvor hurtigt minearbejdere, der repræsenterer mindst 95 procent af hashkraften, vil støtte Segregated Witness. I henhold til Hong Kong Bitcoin Roundtable Consensus brev, et stort flertal af minearbejdere med hashkraft lovet at adoptere Segregated Witness.
Men selv dette brev repræsenterede ikke 95 procent af hashkraften. Og lidt mere end 5 procent af hashkraften er i øjeblikket minedrift til fordel for Bitcoin Classic; det er ikke klart, om den konkurrerende Bitcoin Core-gaffel også vil fusionere Segregated Witness. (Det er heller ikke klart, om disse minearbejdere holder fast i Bitcoin Classic, hvis det ikke fusionerer Segregated Witness.)
Minimum tid: 4 uger
Trin seks: Adoptionen
Efter at Segregated Witness er aktiveret på Bitcoin-netværket, kræves et sidste trin for at brugerne skal høste fordelene: Wallet-software skal indeholde muligheden for faktisk at oprette og modtage Segregated Witness-transaktioner.
Hvor lang tid det tager for tegnebøger at vedtage, afhænger af deres udviklere – og af Bitcoin-biblioteksudviklere. Da Bitcoin spurgte tegnebog- og biblioteksudviklere om dette tidligere på året, så det ud til, at de fleste planlægger at integrere Segregated Witness i deres software. Det tempo, hvormed dette vil ske, kan dog variere; nogle udviklere er mere villige, bedre finansierede eller simpelthen bedre i stand end andre. Nogle har allerede foretaget de nødvendige ændringer og vil støtte Segregated Witness fra aktiveringens dag 1; andre kan tage lidt længere tid.
Men så længe der er mindst en tegnebog, der tilbyder muligheden, kan brugerne altid skifte og nyde fordelene med det samme.
Anslået tid: varierer
Tak til Bitcoin Core-udviklere Eric Lombrozo og BTCDrak for feedback og teknisk vejledning.