Segregated Witness har gått in i sitt slutliga testfas innan de lanseras i Bitcoin-nätverket. Det är goda nyheter, viktigast av allt eftersom innovationen introducerar en kapacitetsökning för att möjliggöra fler transaktioner i nätverket, samtidigt som den också löser transaktionens smidighet.

Och det introducerar skriptversionering – en förlängning av Bitcoin-protokollet som möjliggör en helt ny kategori av innovation.

En av dessa förestående innovationer har varit på toppen av flera Bitcoin-utvecklares önskelistor under en tid: Schnorr-signaturer.

Med den förestående utgåvan av Segregated Witness kan implementeringen av Schnorrs kryptografiska signaturalgoritm följa strax efter, vilket potentiellt förbättrar Bitcoins skalbarhet, effektivitet och integritet, allt på en gång.

Här är hur.

Underskrifter

Först en kort omslutning: vad är signaturer??

Kärnan i Bitcoin ligger det matematiska tricket som kallas “offentlig nyckelkryptografi”, ett kryptografiskt system som använder två typer av “nycklar” (riktiga siffror): privata nycklar och offentliga nycklar.

En privat nyckel och en offentlig nyckel är matematiskt länkade. Men även om det är väldigt enkelt att producera en offentlig nyckel från en privat nyckel är det praktiskt taget omöjligt att producera den privata nyckeln från en offentlig nyckel. Det är en “enkelriktad gata.”

För att spendera bitcoins från en viss Bitcoin-adress måste man bevisa “ägande” (eller: kunskap) om den privata nyckeln som hänvisar till den offentliga nyckeln som är associerad med den adressen. Och för att bevisa ägande av en privat nyckel, utan att behöva avslöja den privata nyckeln, används en kryptografisk signatur.

En signatur skapas genom att utföra en beräkning med transaktionsdata och den privata nyckeln. Och här kommer magin med kryptografi med offentlig nyckel in: Att känna till den offentliga nyckeln kan vem som helst se om rätt privatnyckel användes för att skapa signaturen. Utan att behöva känna till den privata nyckeln själv.

“Ägaren” av den privata nyckeln kan därför underteckna en transaktion och spendera bitcoins utan att oroa sig för att någon annan kan ta den privata nyckeln och stjäla bitcoinsna; den privata nyckeln exponeras aldrig och signaturen är endast giltig för den specifika transaktionen.

(För en mer detaljerad förklaring av kryptografi för offentlig nyckel i Bitcoin, se den här artikeln. Eller fortsätt bara läsa. Medan det grundläggande signaturkonceptet är viktigt är detaljerna inte avgörande för syftet med denna artikel.)

Schnorr

Så vad är då Schnorr-signaturer?

Schnorr, uppkallad efter uppfinnaren Claus-Peter Schnorr, är ett signaturschema: serien av matematiska regler som länkar den privata nyckeln, den offentliga nyckeln och signaturen. Många kryptografer anser att Schnorr-signaturer är de bästa i fältet, eftersom de erbjuder en stark nivå av korrekthet, inte lider av smidbarhet, är relativt snabba att verifiera och – viktigare – stödjer multisignatur: flera signaturer kan sammanställas till en enda, ny signatur.

Men hittills har det inte varit möjligt att använda Schnorr i Bitcoin. En annan typ av signaturschema, Elliptic Curve Digital Signature Algorithm (ECDSA), bakas in i Bitcoin-protokollet och att ändra det skulle kräva en hård gaffel.

Det är där Segregated Witness kommer in.

Med Segregated Witness flyttas all signaturinformation till en separat del av transaktionen: vittnet, som inte är inbäddat i det “gamla” Bitcoin-protokollet. Och tack vare skriptversionering kan nästan alla regler som tillämpas i vittnet ändras med en mjuk gaffel. Inklusive typen av signatur som används.

Detta öppnar dörren för Schnorr.

Kapacitet

Schnorr-egenskapen som gynnar Bitcoin mest är multisignaturaggregering.

Många Bitcoin-transaktioner inkluderar flera ingångar, med hänvisning till adresserna som bitcoins skickas från. (Detta kan jämföras med hur kontantbetalningar ofta består av flera mindre räkningar och mynt för att betala en större summa pengar.) Just nu kräver alla dessa ingångar sin egen signatur, vilket innebär att alla dessa signaturer måste inkluderas i en transaktion, alla måste överföras via nätverket och alla måste ingå i ett block.

Med Schnorr kräver dock alla ingångar istället bara en kombinerad signatur för att representera alla dessa olika signaturer. Detta ger en uppenbar datafördel, eftersom endast en signatur måste ingå i en transaktion, endast en måste sändas över nätverket och endast en måste ingå i ett block. Det betyder att det finns mer utrymme för transaktioner.

Till exempel:

Segregated Witness, som föreslagits av Bitcoin Core, erbjuder (ungefär) 75 procent rabatt på all information som ingår i vittnet snarare än det ursprungliga blocket. En megabyte vittnesdata ”vägs” därför till 25 megabyte, vilket skulle ge utrymme för 75 megabyte transaktionsdata i originalblocket, totalt 1 megabyte.

Om aggregerade Schnorr-signaturer minskar den totala storleken på vittnesdata, säg från 1 megabyte till 5 megabyte, skulle denna 5 megabyte sedan diskonteras till 0,125 megabyte, vilket ger utrymme för upp till 0,875 megabyte i originalblocket. (En kapacitetsökning på cirka 17 procent.)

Den exakta mängden extra rum beror på vilka typer av transaktioner som ingår i block. Men grova uppskattningar av Bitcoin Core-utvecklaren Eric Lombrozo antyder att Schnorr-signaturer så småningom kan öka den totala kapaciteten med 40 procent eller mer – det är utöver de tillagda 60 till 100 procent som Segregated Witness redan erbjuder.

Multisig

Kapacitetsökningen enligt beskrivningen ovan gäller för vanliga transaktioner, eftersom många transaktioner innehåller mer än en ingång. Men fördelen kan vara ännu större när det gäller multisig-transaktioner – transaktioner där en enda ingång i sig kräver flera signaturer (vanligtvis från olika personer).

Som med normala transaktioner behöver inte mer än en enda signatur inkluderas i någon multisig-transaktion. Oavsett hur många underskrifter som krävs, oavsett hur många personer som är inblandade.

Detta öppnar dörren för mycket mer komplexa smarta kontraktkonstruktioner för en bråkdel av den data som normalt krävs. Oavsett om det är två av tre, tre av femton eller hundra hundra typer av multisig-transaktioner, kommer alla att ha samma mängd signaturdata som en typisk transaktion med en enda signatur.

Integritet

Och för det tredje kan Schnorr-signaturer erbjuda en annan intressant fördel: incitament för integritet.

Som nämnts kan en transaktion innehålla flera ingångar. Vanligtvis hänvisar dessa ingångar till adresser som alla styrs av samma person. (Enligt exemplet med flera sedlar och mynt.)

Men ett integritetshöjande trick som uppfanns av Bitcoin Core-utvecklaren Gregory Maxwell,  CoinJoin, låter olika användare kombinera alla sina transaktioner i en enda transaktion. Den ena transaktionen kommer att inkludera flera ingångar från olika betalare, som skickar pengar till flera utgångar, som tillhör olika betalningsmottagare.

(Detta kan jämföras med att en grupp människor kastar sina sedlar och mynt i en korg, som de använder för att shoppa i olika butiker för att köpa de produkter de alla vill ha. Varje individ får de varor som individen betalade för, men det är osannolikt att någon individs ”egen” räkning har betalats för den produkt som personen köpte.)

Om det görs rätt är CoinJoin ett utmärkt sätt att förbättra integriteten i Bitcoin-protokollet, eftersom det blir oklart vilka ingångar som betalade vilka utgångar exakt, än mindre vilken person som betalade vilken person.

CoinJoin är inte ett nytt koncept. Men hittills var CoinJoin vanligtvis lite besvärligt. Som sådan stör de flesta inte. Och eftersom de flesta inte bryr sig kan de som bryr sig automatiskt markeras som misstänkta. potentiellt besegra syftet med att använda CoinJoin i första hand.

Men Schnorr-signaturer kan lägga till en ny fördel för CoinJoin. Det gör det möjligt för alla deltagare i en CoinJoin-transaktion att inte bara kombinera sina transaktioner utan också att kombinera sina signaturer. Och detta innebär att transaktionens storlek faktiskt skulle vara mindre än alla enskilda transaktioner tillsammans. Vilket i sin tur innebär att gruvarbetare normalt tar ut en mindre avgift för att behandla transaktionen.

Med Schnorr skulle CoinJoin därför inte bara öka integriteten utan också – viktigare – sänka kostnaderna för alla inblandade. Det skulle faktiskt finnas en kostnadsfördel att använda det mest privata alternativet, vilket bara kan göra det till alternativet för alla – kraftigt ökar Bitcoin-integriteten för alla.

Obs! Processen att implementera Schnorr-signaturer i Bitcoin är fortfarande i konceptfasen. Medan de flesta Bitcoin Core-utvecklare verkar tro att Schnorr-signaturer säkert kan distribueras i Bitcoin, är det för tidigt att säga med säkerhet.

Tack till Bitcoin Core-utvecklare och  Blockstream medgrundare Dr. Pieter Wuille för att tillhandahålla information, och Bitcoin Core-utvecklare och  Ciphrex VD Eric Lombrozo för korrekturläsning och ytterligare förslag.