Segregated Witness er gået ind i sin sidste testfase inden udrulning på Bitcoin-netværket. Det er gode nyheder, vigtigst af alt, fordi innovationen introducerer en kapacitetsforøgelse, der giver mulighed for flere transaktioner på netværket, mens det også løser transaktionsmulighed.
Og det introducerer scriptversionering – en udvidelse af Bitcoin-protokollen, der giver mulighed for en helt ny kategori af innovation.
En af disse forestående innovationer har været på toppen af flere Bitcoin-udvikleres ønskelister i nogen tid: Schnorr signaturer.
Med den forestående frigivelse af Segregated Witness kan implementeringen af Schnorr-kryptografiske signaturalgoritme følge kort efter, hvilket potentielt forbedrer Bitcoins skalerbarhed, effektivitet og privatliv alt sammen på én gang.
Sådan gør du.
Underskrifter
For det første en kort gentagelse: hvad er underskrifter?
Kernen i Bitcoin ligger det matematiske trick kaldet “offentlig nøglekryptografi”, et kryptografisk system, der bruger to slags “nøgler” (virkelig strenge af tal): private nøgler og offentlige nøgler.
En privat nøgle og en offentlig nøgle er matematisk knyttet. Men mens det er meget nemt at fremstille en offentlig nøgle fra en privat nøgle, er det praktisk taget umuligt at fremstille den private nøgle fra en offentlig nøgle. Det er en “envejsgade.”
For at bruge bitcoins fra en bestemt Bitcoin-adresse skal man bevise “ejerskab” (eller: viden) om den private nøgle, der henviser til den offentlige nøgle, der er knyttet til den adresse. Og for at bevise ejerskab af en privat nøgle uden at afsløre den private nøgle bruges en kryptografisk signatur.
En signatur oprettes ved at udføre en beregning ved hjælp af transaktionsdataene og den private nøgle. Og her er hvor magien ved offentlig nøglekryptografi kommer ind: Når man kender den offentlige nøgle, kan enhver se, om den korrekte private nøgle blev brugt til at oprette signaturen. Uden nogensinde at skulle kende selve den private nøgle.
”Ejeren” af den private nøgle kan derfor underskrive en transaktion og bruge bitcoins uden at bekymre sig om, at en anden kan tage den private nøgle og stjæle bitcoins; den private nøgle eksponeres aldrig, og signaturen er kun gyldig for den specifikke transaktion.
(For en mere detaljeret forklaring af kryptografi med offentlig nøgle i Bitcoin, se denne artikel. Eller bare læs videre. Mens det grundlæggende underskriftskoncept betyder noget, er detaljerne ikke afgørende for formålet med denne artikel.)
Schnorr
Så hvad er så Schnorr-underskrifter?
Schnorr, opkaldt efter opfinderen Claus-Peter Schnorr, er en signaturordning: serien af matematiske regler, der forbinder den private nøgle, den offentlige nøgle og signaturen sammen. Mange kryptografer betragter Schnorr-signaturer som de bedste i marken, da de tilbyder et stærkt niveau af korrekthed, ikke lider af formbarhed, er relativt hurtige at kontrollere og – vigtigst af alt – understøtter multisignatur: flere signaturer kan samles i en enkelt, ny signatur.
Indtil nu har det imidlertid ikke været muligt at bruge Schnorr i Bitcoin. En anden type signaturordning, Elliptic Curve Digital Signature Algorithm (ECDSA), er bagt ind i Bitcoin-protokollen, og ændring deraf kræver en hård gaffel.
Det er her Segregated Witness kommer ind.
Med Segregated Witness flyttes alle signaturdata til en separat del af transaktionen: vidnet, som ikke er indlejret i den “gamle” Bitcoin-protokol. Og takket være scriptversionering kan næsten enhver regel, der anvendes i vidnet, ændres gennem en blød gaffel. Herunder den anvendte type signaturordning.
Dette åbner døren for Schnorr.
Kapacitet
Schnorr-ejendommen, der er til fordel for Bitcoin mest, er multisignaturaggregering.
Mange Bitcoin-transaktioner inkluderer flere input, der henviser til adresserne, som bitcoins sendes fra. (Dette kan sammenlignes med, hvordan kontantbetalinger ofte består af flere mindre regninger og mønter for at betale en større sum penge.) Lige nu kræver alle disse input deres egen underskrift, hvilket betyder, at alle disse underskrifter skal inkluderes i en transaktion, alle skal sendes over netværket, og alle skal inkluderes i en blok.
Med Schnorr kræver alle input imidlertid i stedet kun en kombineret signatur for at repræsentere alle disse forskellige signaturer. Dette giver en åbenbar datafordel, da kun en signatur skal medtages i en transaktion, kun en skal transmitteres over netværket, og kun en skal inkluderes i en blok. Dette betyder, at der er mere plads til transaktioner.
For eksempel:
Segregated Witness, som foreslået af Bitcoin Core, tilbyder en (ca.) 75 procent rabat på alle data inkluderet i vidnet snarere end den oprindelige blok. En megabyte vidne-data “vejes” derfor som 25 megabyte, hvilket giver plads til 75 megabyte transaktionsdata i den oprindelige blok, i alt 1 megabyte.
Hvis aggregerede Schnorr-signaturer reducerer den samlede størrelse af vidnedata, f.eks. Fra 1 megabyte til 5 megabyte, vil denne 5 megabyte derefter blive diskonteret til 0,125 megabyte, hvilket giver plads til op til 0,875 megabyte i den oprindelige blok. (En kapacitetsforøgelse på ca. 17 procent.)
Den nøjagtige mængde ekstra plads afhænger af, hvilke typer transaktioner der er inkluderet i blokke. Men grove skøn fra Bitcoin Core-udvikleren Eric Lombrozo antyder, at Schnorr-signaturer i sidste ende kan øge den samlede kapacitet med 40 procent eller mere – det er oven på de tilføjede 60 til 100 procent, der allerede tilbydes af Segregated Witness.
Multisig
Kapacitetsforøgelsen som beskrevet ovenfor gælder for almindelige transaktioner, da mange transaktioner inkluderer mere end et input. Men fordelen kan være endnu større i tilfælde af multisig-transaktioner – transaktioner, hvor et enkelt input i sig selv kræver flere underskrifter (typisk fra forskellige personer).
Som med normale transaktioner skal der ikke inkluderes mere end en enkelt signatur i enhver multisig-transaktion. Uanset hvor mange underskrifter der kræves, uanset hvor mange involverede personer.
Dette åbner døren til langt mere komplekse smarte kontraktkonstruktioner for en brøkdel af de data, der normalt kræves. Uanset om det er to-af-tre, tre af femten eller hundrede hundrede typer multisig-transaktioner, vil alle bære den samme mængde signaturdata som en typisk transaktion med en enkelt signatur.
Privatliv
Og for det tredje kan Schnorr-underskrifter tilbyde en anden interessant fordel: incitamenteret privatliv.
Som nævnt kan en transaktion omfatte flere input. Disse input refererer oftest til adresser, der alle styres af den samme person. (I henhold til eksemplet med flere sedler og mønter.)
Men et privatlivsforbedrende trick opfundet af Bitcoin Core-udvikleren Gregory Maxwell, CoinTilmeld dig, giver forskellige brugere mulighed for at kombinere alle deres transaktioner i en enkelt transaktion. Den ene transaktion vil omfatte flere input, der kommer fra forskellige betalere, der sender penge til flere output, der tilhører forskellige betalingsmodtagere.
(Dette kan sammenlignes med en gruppe mennesker, der smider deres regninger og mønter sammen i en kurv, som de bruger til at shoppe i forskellige butikker for at købe de produkter, de alle ønsker. Hver person får de varer, som den enkelte har betalt for, men det er usandsynligt, at nogen persons “egen” regning er betalt for det produkt, som den enkelte købte.)
Hvis det gøres rigtigt, er CoinJoin en fantastisk måde at forbedre privatlivets fred på Bitcoin-protokollen, da det bliver uklart, hvilke input der er betalt hvilke output nøjagtigt, endsige hvilken person der har betalt hvilken person.
CoinJoin er ikke et nyt koncept. Men indtil nu var CoinJoin typisk lidt besvær. Som sådan gider de fleste ikke. Og da de fleste ikke gider, kunne de, der gider, automatisk blive markeret som mistænkelige; potentielt at besejre formålet med at bruge CoinJoin i første omgang.
Men Schnorr-signaturer kan tilføje CoinJoin en ny fordel. Det gør det muligt for alle deltagere i en CoinJoin-transaktion ikke kun at kombinere deres transaktioner, men også at kombinere deres underskrifter. Og det betyder, at transaktionens størrelse faktisk ville være mindre end alle individuelle transaktioner tilsammen. Hvilket igen betyder, at minearbejdere typisk opkræver et mindre gebyr for at behandle transaktionen.
Med Schnorr ville CoinJoin derfor ikke kun øge privatlivets fred, men også – vigtigst af alt – sænke omkostningerne for alle involverede. Faktisk ville der være en omkostningsfordel ved at bruge den mest private mulighed, hvilket måske bare gør det til go-to-indstillingen for alle – kraftigt øget Bitcoin-privatliv for alle.
Bemærk: Processen med at implementere Schnorr-signaturer i Bitcoin er stadig i konceptfasen. Mens de fleste Bitcoin Core-udviklere synes at tro, at Schnorr-signaturer sikkert kan implementeres i Bitcoin, er det for tidligt at sige med sikkerhed.
Tak til Bitcoin Core-udvikler og Blockstream medstifter Dr. Pieter Wuille for at give information, og Bitcoin Core-udvikler og Ciphrex CEO Eric Lombrozo til korrekturlæsning og yderligere forslag.