Segregated Witness kan være den viktigste forbedringen av Bitcoin-protokollen til dags dato. Innovasjonen er satt til å fikse transaksjons smidighet, gir en effektiv økning i blokkstørrelse, muliggjør utviklingsfleksibilitet og mer. Etter måneder med koding, blir Segregated Witness nær utrulling, som en trekk forespørsel ble sendt til Bitcoin Core tidligere denne uken.

Hvor nær utrulling akkurat? Som med enhver endring av Bitcoin-protokollen, er det vanskelig å forutsi.

En tidslinje for segregerte vitner …

Trinn 1: Ideen

Hver forbedring av Bitcoin-protokollen starter med en idé.

Idéen om segregerte vitner går lenge tilbake; det generelle konseptet om å skille transaksjons- og signaturdata oppsto sannsynligvis i 2014, eller kanskje enda før. Men det var for rundt et år siden, tidlig i 2015, det BlockstreamUtviklingsteamet for Bitcoin og sidekjede bestemte seg for å implementere konseptet i prototypens sidekjede: Elementer. Elements, som inkluderer Segregated Witness, ble for det meste designet av Bitcoin Core-utvikler og Blockstream medstifter Gregory Maxwell og ble utgitt i juni 2015.

På det tidspunktet ble det fortsatt ansett umulig å implementere Segregated Witness på Bitcoin blockchain, med mindre det var gjennom en hard gaffel. Å skille transaksjons- og signaturdata vil uforenlig endre strukturblokkene, noe som kan føre til en splittelse i Bitcoin-nettverket mellom oppgraderte noder og ikke-oppgraderte noder.

Høsten 2015 var det Bitcoin Core-utvikler Luke Dashjr som tross alt fant ut hvordan man kunne implementere Segregated Witness i den viktigste Bitcoin-protokollen. Ved hjelp av et smart hack kan Segregated Witness-transaksjoner merkes som “alle som kan bruke” -transaksjoner for ikke-oppgraderte noder, mens oppgraderte noder blir omdirigert til en “tilleggsblokk” med signaturdata. Dette løser problemet med inkompatibilitet, noe som betyr at Segregated Witness kan rulles ut som en myk gaffel.

Dette alternativet ble først diskutert blant Bitcoin Core-utviklere gjennom typiske kommunikasjonskanaler: via privat e-post, på IRC, litt senere på Bitcoin utvikling postliste og andre steder. Alle involverte i samtalen var enige om at det var en god idé.

Et par uker senere, i desember 2015, ble Segregated Witness offentlig presentert av Bitcoin Core-utvikler Pieter Wuille på Skalering av Bitcoin verksted Hong Kong.

Anslått tid: 1 år

Trinn to: Koden

En idé i seg selv endrer ikke noe. Noen trenger å skrive koden for å realisere ideen.

Wuille begynte å kode Segregated Witness i november 2015 – et par uker før han presenterte ideen i Hong Kong. Spent av den potensielle, Bitcoin Core-utvikleren og Ciphrex Konsernsjef Eric Lombrozo, Bitcoin Core-utvikler Johnson Lau og noen andre utviklere begynte også å bidra.

Fem måneder senere teller Segregated Witness for Bitcoin Core 4743 linjer med kode (inkludert testkode), og foreslår å fjerne eller endre 554 av eksisterende linjer med Bitcoin Core-kode. Wuille og de andre bidragsyterne anser det som gjort.

Total tid: + -5 måneder

Trinn tre: Gjennomgangen

Siden koden anses som fullført, sendte Wuille inn en pull-forespørsel denne uken. En pull-forespørsel er i utgangspunktet et “offisielt” forslag på utviklingsplattformen GitHub om å slå sammen et parti kode – Segregated Witness – til Bitcoin Core’s hovedgren: det kontinuerlige utviklingen av prosjektet som nye Bitcoin Core-utgivelser er basert på.

Dette markerer starten på den tekniske gjennomgangsprosessen. Andre utviklere er invitert til å gjennomgå og teste koden, og gi sin mening. Dette kan gjøres i form av en kommentar, eller gjennom en type avstemning: “ACKs” (for) og “NACKs” (mot). Det er også flere underavdelinger av ACKer og NACKer, for eksempel for å indikere at koden er testet av utvikleren – eller ikke.

Gjennomgangsprosessen vil ta så lang tid som Bitcoin Core repository vedlikeholder – for tiden Wladimir van der Laan – anser det nødvendig. Hvis han mener grov konsensus for en sammenslåing er (og vil forbli) fraværende, kan han lukke trekkforespørselen. Forslaget avvises, og innsenderen kan velge å skrive koden på nytt.

Mer sannsynlig, når det gjelder Segregated Witness, vil gjennomgangsprosessen gi tilbakemelding til Wuille og de andre utviklerne, noe som kan føre til små endringer i koden.

Og hvis Van der Laan på et tidspunkt mener det er grov konsensus for en sammenslåing, vil han slå sammen trekkforespørselen. Segregated Witness blir da en del av Bitcoin Cores hovedfilial.

Når det gjelder Segregated Witness, er det vanskelig å si hvor lang tid det vil ta før pull-forespørselen blir slått sammen. Men siden det er en stor endring, vil prosessen ta flere uker til en måned, eller kanskje litt lenger.

Anslått tid: 2 til 6 uker

Trinn fire: Utgivelsen

Når pull-forespørselen er slått sammen med Bitcoin Core’s hovedfilial, må den tilbys til publikum gjennom en ny Bitcoin Core-utgivelse.

Bitcoin Core tilbyr to typer utgivelser: store utgivelser (som vanligvis endrer det andre nummeret i utgivelsesversjonen, som 0.10.0, 0.11.0, 0.12.0, etc.) og mindre utgivelser (endrer det siste tallet, som 0.12. 1, 0.12.2 osv.). Store utgivelser er planlagt omtrent to ganger per år, men inkluderer vanligvis ikke foreslåtte myke gafler. Dette er slik at alle kan vedta fordelene ved en ny større utgivelse, selv om de ikke vil oppgradere til den foreslåtte myke gaffelen. 

Mindre utgivelser tilbys når kode for en foreslått myk gaffel (eller bug fix) slås sammen, og Van der Laan mener det er grov enighet om en utgivelse. (Dette diskuteres normalt under ukentlige IRC-møter.)

Alle utgivelser – store og mindre – blir først merket som “utgivelseskandidat.” En frigjøringskandidat er en foreslått utgivelse, som først blir tilbudt offentlig for testing. Hvis det oppdages feil eller andre problemer i utgivelseskandidaten, opprettes en ny utgivelseskandidat og tilbys også offentlig for testing. 

I tillegg går alle utgivelser – store og mindre, samt utgivelseskandidater – gjennom et teknisk bygg- og signeringsritual (“gitian building”) utført av flere utviklere. Dette gjøres for sikkerhets- og stilighetsformål, og kan ta opptil flere dager.

Hvis det etter omtrent en uke ikke rapporteres om problemer i den siste utgivelseskandidaten, vil Van der Laan kunngjøre at denne utgivelseskandidaten nå er den faktiske nye utgivelsen. Denne nye utgivelsen distribueres gjennom bitcoincore.org og bitcoin.org.

Anslått tid: 1 uke+

Trinn fem: Aktivering

Når Bitcoin 0.12.2 er utgitt, vil utviklingsteamet for Bitcoin Core oppfordre alle til å oppgradere. Mens oppgradering er valgfritt – eldre noder vil forbli kompatible med resten av Bitcoin-nettverket – oppgraderte noder høster fordelene med Segregated Witness og beholder maksimal sikkerhet.

Men hvis bare vanlige brukere oppgraderer, vil Segregated Witness ennå ikke aktivere. Aktivering krever at gruvearbeidere oppgraderer. I henhold til Bitcoin Core 0.12.1 og adopsjon av versjonsbiter skjer myke gafler gjennom en ny type signalering.

For det første begynner gruvearbeidere (eller bassenger) som kjører Bitcoin Core 0.12.2 (og Bitcoin-implementeringer som slår sammen lignende kode) automatisk med å signalisere at de er klare til å utvinne Segregated Witness-transaksjoner. Dette skjer gjennom versjonsbiter de inkluderer i blokker de gjør mine som indikerer hvilke typer transaksjoner og blokker de kan bryte. 

Når gruvearbeidere som representerer 95 prosent av hashkraften (1.916 blokker) innen en enkelt vanskelighetsperiode (2016 blokker / omtrent to uker) inkluderer riktig versjonsbit, blir den myke gaffelen låst inne. En vanskelighetsperiode senere, blir den myke gaffelen aktivert, noe som betyr at de resterende 5 prosent av gruvearbeidere har omtrent to uker på å oppgradere. (Hvis de ikke oppgraderer, vil de forbli en del av Bitcoin-nettverket, men kan få blokkene foreldreløse av andre gruvearbeidere hvis de inkluderer nå ugyldige transaksjoner.)

Hvorvidt og hvor raskt gruvearbeidere som representerer minst 95 prosent av hashkraften vil støtte Segregated Witness, er vanskelig å forutsi. I henhold til Hong Kong Bitcoin Roundtable Consensus letter, et stort flertall av gruvearbeidere med hasjkraft lovet å adoptere segregerte vitner. 

Men selv det brevet representerte ikke 95 prosent av hashkraften. Og litt mer enn 5 prosent av hashkraften er for tiden gruvedrift til fordel for Bitcoin Classic; det er ikke klart om den konkurrerende Bitcoin Core-gaffelen også vil slå sammen Segregated Witness. (Det er heller ikke klart om disse gruvearbeiderne vil holde seg til Bitcoin Classic hvis den ikke slår sammen Segregated Witness.)

Minimum tid: 4 uker

Trinn seks: Adopsjonen

Etter at Segregated Witness er aktivert i Bitcoin-nettverket, kreves det et siste trinn for at brukerne skal få fordelene: Wallet-programvaren må inneholde muligheten til å faktisk opprette og motta Segregated Witness-transaksjoner.

Hvor lang tid det vil ta for lommebøker å adoptere, avhenger av utviklerne – og av Bitcoin-bibliotekutviklere. Da Bitcoin spurte lommebok- og bibliotekutviklere om dette tidligere i år, virket det som om de fleste planlegger å integrere Segregated Witness i programvaren. Hastigheten dette vil skje på kan imidlertid variere; noen utviklere er mer villige, bedre finansierte eller rett og slett mer dyktige enn andre. Noen gjorde allerede de nødvendige endringene og vil støtte Segregated Witness fra dag 1 av aktivering; andre kan ta litt lengre tid.

Men så lenge det er minst en lommebok som tilbyr alternativet, kan brukerne alltid bytte og nyte fordelene med en gang.

Anslått tid: varierer

 

Takk til Bitcoin Core-utviklere Eric Lombrozo og BTCDrak for tilbakemelding og teknisk veiledning.