Het concept van covenants, dat recent weer onder de aandacht kwam, belicht een fascinerend aspect van de Bitcoin-ontwikkeling. Covenants kunnen een breed scala aan toepassingen mogelijk maken, zoals nieuwe, vertrouwenloze en schaalbare layer-2 oplossingen, volledig niet-custodiale kluizen met complexe uitgavenlogica, en efficiëntere betalingskanalen. Een voorwaarde voor de implementatie van deze functionaliteiten is echter een zachte fork van de consensusregels van Bitcoin, wat waarschijnlijk tot een heftige discussie binnen de gemeenschap zal leiden.
Met de recente diversificatie van consensus-clients naar Core en Knots nodes, is overeenstemming over zulke veranderingen steeds onwaarschijnlijker geworden. Hoewel Knots recentelijk een zachte fork heeft voorgesteld — namelijk BIP-110 — lijkt deze groep de voorkeur te geven aan protocolossificatie en toont het minder steun voor oplossingen die opschaling op de basislaag mogelijk maken. De controverse rondom Bitcoin Core, die zowel technische als governance-aspecten omvat, beperkt de kansen op covenant-implementaties op korte termijn aanzienlijk.
Gezaghebbende figuren zoals Michael Saylor hebben publiekelijk gepleit voor protocolossificatie en beschouwen goed gefinancierde ontwikkelaars als een van de grootste bedreigingen voor het protocol. Desondanks kan zelfs een minimale implementatie van covenants een conservatief pad bieden naar vertrouwen-minimaliserende layer-2 oplossingen, wat self-custody toegankelijk kan maken voor de volgende miljard gebruikers. Indien de kosten voor transacties op de mainnet weer stijgen en een oplossing voor de spamoorlogen wordt gevonden, is het waarschijnlijk dat discussies over deze voorstellen opnieuw zullen opbloeien. In deze tekst leggen we enkele fundamenten bloot om onze lezers inzicht te geven in covenants. In latere artikelen zullen we dieper ingaan op individuele voorstellen.
Om de voorstellen voor covenants te begrijpen, is het essentieel om de basisvalidatiestroom voor Bitcoin-transacties te doorgronden. De vergrendelingsvoorwaarden van Bitcoin worden uitgedrukt in een stapel-gebaseerde, niet-Turing-complete taal, bekend als Bitcoin Script. De verzender van een Bitcoin-transactie specificeert de uitgavevoorwaarden in deze taal door het creëren van een zogenaamde locking script (ook wel scriptPubKey genoemd). Wanneer de ontvanger van de fondsen later de outputs wil besteden, moet hij het overeenkomstige unlocking script (ook bekend als scriptSig) aanleveren dat aan deze voorwaarden voldoet. De scripttaal van Bitcoin kan een verscheidenheid aan validatievoorwaarden uitdrukken, zoals het verifiëren van openbare sleutelsignaturen, het afdwingen van tijdslimieten, het verifiëren van hash-voorbeelden en het combineren van uitgavevoorwaarden met propositional logic. Een entiteit met het juiste unlocking script kan de Bitcoin naar elke willekeurige locatie verplaatsen, oftewel ze belasten met een willekeurig scriptPubKey. Echter, er kunnen geen beperkingen worden opgelegd aan de bestemming van de fondsen zodra het juiste scriptSig is geleverd.
Het is deze eigenschap die covenants beogen te faciliteren. Covenants zouden gebruikers in staat stellen om beperkingen op te leggen aan hoe munten in de toekomst kunnen worden uitgegeven. Dit concept werd voor het eerst geïntroduceerd door Gregory Maxwell in 2013, met als doel de schaalbaarheid en flexibiliteit van Bitcoin te verbeteren. Het werd later in 2016 populair gemaakt door Möser, Eyal en Sirer. Maxwell stelde aanvankelijk voor om zk-SNARKs te gebruiken om uitgavesrestricties op te leggen. Sindsdien heeft de discussie geleid tot een explosie van verschillende voorstellen, waarvan sommige mogelijk de vereiste voor een zachte fork kunnen omzeilen.
Een belangrijke onderscheid in covenantvoorstellen ligt tussen basis (of vooraf berekende) covenants en algemene (of recursieve) covenants. In principe leggen basis covenants alleen beperkingen op de eerstvolgende transactie in de rij. Door echter vergrendelde adressen aan elkaar te koppelen, kunnen basis covenants ook worden gebruikt om een eindige reeks transacties van tevoren te definiëren. Hoewel deze reeks toegestane transacties willekeurig lang of complex kan zijn, moet ze vooraf worden gespecificeerd.
Algemene covenants daarentegen kunnen recursieve uitgavevoorwaarden direct binnen Bitcoin Script uitdrukken. Dit maakt het mogelijk om een uitgavevoorwaarde oneindig opnieuw toe te passen. Stel je voor dat Alice 1 BTC naar Bob stuurt: een basis covenant zou ervoor kunnen zorgen dat Bob de fondsen alleen naar een specifiek adres kan sturen of deze voor een vast aantal stappen kan vergrendelen. Onder een algemene covenant zou de UTXO ter waarde van 1 BTC echter zijn uitgavebeperkingen behouden wanneer Bob deze naar Steve stuurt, en opnieuw wanneer Steve deze verder overdraagt, zonder een vooraf gedefinieerd eindpunt. Hoewel algemene covenants meer veelzijdigheid bieden, stuiten ze op aanzienlijke technische uitdagingen en worden ze kritisch bekeken door de gemeenschap. Hun implementatie zou bovendien aanzienlijke protocolupdates vereisen.
Wat zijn covenants precies?
Covenants zijn regels die gebruikers in staat stellen beperkingen op te leggen aan hoe Bitcoin in de toekomst kan worden uitgegeven, met als doel de functionaliteit en flexibiliteit van het netwerk te verbeteren.
Waarom zijn covenants relevant voor investeerders?
Covenants kunnen de ontwikkeling van schaalbare en vertrouwen-minimaliserende layer-2 oplossingen bevorderen, wat de toegankelijkheid voor nieuwe gebruikers vergroot en de waarde van Bitcoin kan verhogen.
Wat zijn de grootste uitdagingen voor de implementatie van covenants?
De belangrijkste uitdagingen zijn de noodzaak van een zachte fork van de consensusregels, technische complicaties en de weerstand van verschillende actoren binnen de Bitcoin-gemeenschap.
