Denna artikel är en direkt uppföljning från vår Taproot-förklarare. Om du inte har läst den artikeln bör du förmodligen göra det först.
Om Taproot distribueras på Bitcoin kommer många smarta kontraktskonstruktioner att se ut som vanliga transaktioner på blockchain. Så länge alla deltagare är överens om resultatet av kontraktet – en ”kooperativ stängning” – erbjuder den smarta kombinationen av Schnorr och MAST både dataeffektivitet och integritet.
Men om ett Taproot-smartt kontrakt är tillräckligt komplicerat – det vill säga om det finns många potentiella resultat – skulle Merkle-vägen som måste avslöjas i händelse av en osamarbetsvillig avslutning fortfarande vara datatung.
A uppföljningsförslag av Bitcoin Core-bidragsgivare Gregory Maxwell, “Graftroot”, kan ge liknande fördelar som Taproot men utan denna nackdel, och erbjuder ännu mer smart kontraktsflexibilitet.
Graftroot
Med Taproot kombinerar alla deltagare i ett smart kontrakt sina offentliga nycklar för att skapa en “tröskel offentlig nyckel”, som de kan spendera med sin “tröskelunderskrift.” För Graftroot skapar alla deltagare också en sådan offentlig nyckel. Men den här gången justerar de inte den här offentliga nyckeln.
Deltagarna skapar olika skript: de alternativa förhållandena under vilka pengarna kan spenderas. Men med Graftroot undertecknar de alla olika skript för att skapa tröskelsignaturer som motsvarar dessa skript. Varje deltagare som vill använda ett visst skript som reserv, tar och lagrar skriptet och motsvarande tröskelsignatur. Dessa signaturer kan senare bevisa för världen att manuset var ett giltigt alternativ, en “delegation”, som alla deltagare kom överens om.
Så, låt oss säga att Alice och Bob skapar ett smart avtal där båda kan spendera pengar tillsammans, eller låt Alice ensam spendera det efter en vecka, eller låt Bob ensam spendera det i kombination med ett hemligt nummer. I det här fallet kombinerar Alice och Bob sina offentliga nycklar för att skapa en offentlig nyckel för tröskel från vilken de senare kan spendera pengarna om de tillhandahåller tröskelsignaturen. (De skapar inte denna tröskelsignatur än – bara när de spenderar medlen.)
Sedan skapar de och signerar omedelbart alternativa skript. Alice behåller tröskelsignaturen som motsvarar skriptet som låter henne spendera mynten efter en vecka, och Bob behåller tröskelsignaturen som motsvarar skriptet som låter honom spendera mynten i kombination med ett hemligt nummer. (Observera att tröskelsignaturerna och motsvarande skript inte enbart räcker för att spendera mynt; de bevisar bara att manusen är överens om både Alice och Bob. Villkoren som anges i skripten behöver fortfarande vara uppfyllda för att spendera mynten. )
Nästa dag, när det är dags att lösa avtalet, kommer Alice och Bob sannolikt att komma överens om att underteckna avvecklingstransaktionen. De skapar tillsammans en tröskelsignatur att spendera från den offentliga nyckeln, och ingen annan lär sig om de alternativa utgiftsvillkoren, eller ens att mer än en person var inblandad. Det ser ut som en vanlig transaktion.
Men om samarbetsstängningen misslyckas av någon anledning, kan den som kan uppfylla ett annat villkor spendera mynt ensam. Om Bob har det hemliga numret avslöjar han ”sitt” alternativa manus i kombination med tröskelns signatur som motsvarar manuset. Resten av världen kan kontrollera tröskelsignaturen mot den offentliga nyckeln och kommer att dra slutsatsen att alla deltagare i det smarta avtalet kom överens om det alternativa skriptet. Bob kan därför med rätta spendera mynt med det hemliga numret. Alternativt, om en vecka har gått, kan Alice avslöja ”sitt” alternativa manus i kombination med tröskelsignaturen för manuset och spendera mynt. I båda fallen lär ingen om det alternativa säkerhetskopieringsskriptet.
Den största fördelen med Graftroot är att det inte längre spelar någon roll hur komplext ett smart kontrakt är eller, mer exakt, hur många möjliga resultat det finns. Även om ovanstående exempel bara innehåller två alternativa skript, kan en Graftroot-konstruktion innehålla hundratals, och det skulle inte göra någon skillnad. Alice och Bob kunde till och med lägga till fler villkor efter att det ursprungliga smarta kontraktet byggdes!
En nackdel är dock att Graftroot är interaktiv. Deltagarna måste kommunicera med varandra för att underteckna alternativa manus, även innan de spenderar mynt. Dessutom måste deltagarna lagra tröskelsignaturerna för de alternativa skripten. om de förlorar denna signatur förlorar de sin reserv.
Graftroot’s Development
Så när kommer Bitcoin-användare att kunna använda den här tekniken?
Den goda nyheten är att med Segregated Witness, en funktion som kallas “Script Versioning” möjliggör en relativt enkel utrullning av dessa typer av ändringar – Schnorr-signaturer, Taproot, Graftroot – på ett bakåtkompatibelt sätt.
Fortfarande, helst Bitcoin Core-bidragsgivarna som arbetar med den här typen av uppgraderingar – detta inkluderar Pieter Wuille, Anthony Towns, Johnson Lau, Jonas Nick, Andrew Poelstra, Tim Ruffing, Rusty Russell och Gregory Maxwell – föredrar att rulla ut alla dessa förbättringar på en gång. Medan skriptversionering gör det enkelt att uppgradera kräver det att transaktioner avslöjar vilken protokolluppgradering som används. Så medan Graftroot perfekt kunde dölja att alternativa skript var tillgängliga, kunde manusversionen fortfarande avslöja att transaktionen använder Graftroot. Genom att distribuera flera protokolluppgraderingar samtidigt undviks detta i viss utsträckning, eftersom de alla skulle använda samma skriptversion. Utöver det gynnar mjukvarukompatibilitet att distribuera flera uppgraderingar samtidigt.
Å andra sidan är en “relativt enkel utbyggnad” fortfarande ett stort åtagande när det gäller konsensusändringar på ett säkerhetskritiskt protokoll som körs 24/7, ibland med olika intressen och preferenser när det gäller uppgraderingar. Varje potentiell funktion har sina egna avvägningar, så att kombinera många samtidigt kan också leda till fler invändningar. Och naturligtvis gör inte utvecklingsprocessen lättare att kombinera fler funktioner till en enda uppgradering.
För nu prioriteras därför Schnorrsignaturer och Taproot, som föreslås som ett enda paket. Graftroot kan vara ett steg efter det.
Detta är en allmän beskrivning av Graftroot-konceptet; specifikationer för implementering kan variera. För mer information, läs ursprungliga Graftroot-förslaget av Gregory Maxwell eller klocka denna presentation av Pieter Wuille.