Skip links

#241 Bitcoin opschalen, sats versturen via statechains

In een eerdere editie van Bitcoin Focus kon je lezen over spacechains, een idee van de Nederlandse ontwikkelaar Ruben Somsen. Vandaag een ander stukje technisch vernuft: bitcoin opschalen met statechains. 

Ruben omschrijft zichzelf als developer die zich bezighoudt met ‘bitcoin laag 2’ en sidechain-gerelateerde protocolontwikkelingen. Het idee van statechains is: het versturen van bitcoin zónder dat er ook maar iets op de blockchain verandert.

Het is een extra optie naast het lightningnetwerk, maar dan zónder betaalkanalen die geopend en gesloten moeten zijn. Met het idee van statechains kun je op een hele andere manier bitcoin opschalen.

Focus is een value4value nieuwsbrief. Ben je fan? Steun ons met een vrijblijvende donatie!

Blockchain trilemma

Het is praktisch gezien onmogelijk om een blockchain te maken die:

  • én decentraal is,
  • én veilig is,
  • én miljoenen betalingen op een dag kan verwerken.

Dit staat bekend als het blockchain trilemma: je moet óf de beveiliging, óf de decentralisatie, óf de schaalbaarheid opgeven. Bij bitcoin zoekt men de schaalbaarheid in tweedelaags oplossingen. Zo hoef je niet de veiligheid en decentralisatie van het protocol op te offeren om bitcoin toch voor de hele wereld bruikbaar te maken.

Het lightningnetwerk is de meest bekende schaalbaarheidsoplossing. Daarnaast kun je federated sidechains en ook centrale cryptobeurzen die interne transacties doen als een oplossing zien. Het idee van statechains is relatief nieuw. We spreken met de Nederlander Ruben Somsen, de bedenker van dit idee.

“Statechains was eigenlijk het eerste waarvan ik dacht ‘oh, ik heb iets bedacht dat werkt en nieuw is’. Ik zat te denken aan het idee van key-overdracht. Vervolgens las ik een paper over eltoo en dat loste de problemen op die ik had. Toen viel het allemaal samen.”

Vervolgens deelde Somsen het idee in 2018 op een conferentie en zo is alles gaan rollen. Maar wat zijn statechains eigenlijk?

Coins en UTXO’s

Bitcoin bestaat – in tegenstelling tot wat veel mensen denken – niet uit één balans per persoon. Bitcoin is in feite een samenvoeging van allerlei Unspent Transaction Outputs (UTXO’s). Het is te vergelijken met klompjes goud.

De één is 0,0042 BTC waard, de ander is 0,1 BTC en weer een andere UTXO is 14,2 BTC waard. In totaal bezit je dan 14,3042 bitcoin.

Evenzo werkt dit bij goud: je kunt goudklompjes in allerlei vormen en maten maken: 50 gram, 102 gram of 123 gram. Het bedrag dat je in je wallet uitleest, is de som van deze UTXO’s. Net als het geld in je fysieke portemonnee de som is van munten en briefjes (of dus: goudklompjes).

Als je de goudklompjes wilt gebruiken om mee te betalen, moet je óf deze smelten in de juiste eenheden óf het juiste wisselgeld terugkrijgen. Het omsmelten is te vergelijken met bitcoin mining: het kost veel energie en je maakt nieuwe UTXO’s, gebaseerd op de inputs en outputs.

Je kunt echter fysieke goudklompjes ook doorgeven zonder dat je ze moet smelten. Dit is precies het idee van statechains! Het doorgeven van UTXO’s zonder dat de miners en de blockchain er aan te pas komen.

Statechains

Normaal onderteken je een betaling met een private key door aan te tonen dat jij de eigenaar bent van een UTXO. Maar wat je ook kunt doen: de private key van de UTXO zélf doorgeven. Normaal gesproken moet je dit nooit (!) doen, maar het hele idee van statechains is hier wel op gebaseerd.

Het mechanisme is dat de UTXO in een 2-uit-2 multi-sig zit. Eén van de keys behoort toe aan de statechain-entiteit en de andere key is van de gebruiker. De private key die aan de gebruiker toebehoort, wordt telkens doorgegeven aan de nieuwe eigenaar. Dit wordt ook wel de transitory key genoemd; ofwel een geheime key die slechts tijdelijk geldig is.

Het idee is dat er bij iedere overdracht een nieuwe off-chain transactie wordt gemaakt, die ervoor zorgt dat je na een bepaalde periode je geld kunt terugkrijgen. Zie het als volgt:

In een hypothetische situatie behoort het geld door de 2-uit-2 constructie toe aan (1) ‘de ‘statechain-entiteit’ en (2) de persoon Alice. Vervolgens zijn er twee mogelijkheden:

  1. Alice heeft een off-chain transactie in handen die ze naar de miners kan sturen om volledig eigenaar te worden.
  2. Alice wil de coins naar Bob sturen. Dit kan ze doen door de key aan hem te geven. Vervolgens moet Alice aan de statechain entity vragen om een nieuwe off-chain transactie te maken. Hierin staat dat het geld naar Bob zal gaan. Daarbij geef je ook aan dat de statechain-entiteit als het ware alleen nog maar naar Bob moet luisteren.

Na deze stap behoort het geld toe aan “de statechain-entiteit + Bob”. Vervolgens gaat precies hetzelfde proces in gang, zoals hierboven uitgelegd in a) en b).

Daarbij is er ook een default-instelling: als je niets met de statecoin doet, komt deze na verloop van tijd automatisch on-chain bij de eigenaar terecht. Deze default verandert er iedere keer als een statechain-transactie wordt gedaan (waarbij de eigenaar verandert van Alice naar Bob).

“Momenteel verlopen statecoins nog, maar dat is een keus in de huidige implementatie”, zo vertelt Ruben.

Mercury Wallet

Voordat we dieper in de technologie duiken, kan een visuele uitleg het wellicht duidelijker maken. Er is momenteel één wallet waarmee je statechain-betalingen kunt doen en dat is de Mercury Wallet. De applicatie is ontwikkeld door CommerceBlock, wat ook precies de reden is waarom Somsen zich momenteel meer focust op spacechains, Ark en Silent Payments dan op de statechains. 

Om statecoin-geld te kunnen ontvangen, genereer je een adres beginnend met sc1. Deze kun je delen met de personen van wie je de statecoin wilt ontvangen.

Vervolgens deelt de persoon die het geld wil overmaken een lange string (code) met je. Via de knop ‘receive by key’ kun jij dit beetje geld claimen.

In dit geval gaat het om een UTXO van 0,001 BTC. Vervolgens zie je dit in je wallet staan, net als het feit dat de statecoin die nog 44 dagen geldig is voordat deze verloopt.

Als je vervolgens de statecoin in z’n geheel (!) wilt doorsturen (en het adres van de ontvanger invult), krijg je weer een ‘transfer key’ te zien. Deze deel je met de ontvangende partij en zo kan deze persoon de UTXO claimen.

Op deze manier kun je dus UTXO’s overdragen zónder dat je de blockchain gebruikt. Je bent daarbij wél afhankelijk van een statechain-entiteit en de 2-uit-2 multi-sig constructie.

Vertrouwen

In dit mechanisme moet je daarom wel vertrouwen op de statechain-entiteit. 

  • Je moet vertrouwen dat deze partij (of federatie) daadwerkelijk doet wat gedaan moet worden.
  • Ook moet je zeker weten dat de transitory key niet bij deze entity terecht komt. Dan heeft deze partij de volledige toegang tot de UTXO.

Een belangrijk punt hierbij is dat achter élke statecoin een andere statechain-entiteit kan zitten. Achter statecoin-UTXO-A zit een andere partij dan achter statecoin-UTXO-B. Om een transactie te maken, moet de ontvanger wel dezelfde entiteit vertrouwen als jou.

Het feit dat er vertrouwen voor nodig is, schrikt menig bitcoiner af. Bitcoin zelf is immers trustless. Toch zijn statecoins in feite non-custodial. Deze combinatie is nieuw in bitcoin en kan voor verwarring zorgen, zo vertelt Somsen:

“Er is terecht wel kritiek op geweest. Want als je non-custodial zegt, dan denken mensen aan trustless. Wat men verwarrend vindt is dat een statechain wel non-custodial is, maar niet trustless. Het is moeilijk om dit te begrijpen.”

Trustless versus non-custodial

Het vereist enige denkstappen om dit te snappen:

“Hoe ik daar nu mee om ga is door het proactively non-custodial te noemen, wat zoiets is als ‘zolang iedereen zich gedraagt is het non-custodial’. In zo’n situatie waarop iedereen zich gedraagt zoals ze zich moeten gedragen, dan is er géén moment dat de statechain-entiteit de controle heeft over het geld.”

Er zijn altijd twee keys bij betrokken, en één van de twee is niet in handen van de entiteit. Zij kunnen dus niets met het geld. Die transitory key verandert daarnaast ook bij elke transactie.

Ruben Somsen legt het als volgt uit:

“Je past zowel bij de statechain-entity als bij Bob de getallen aan, maar het geheel van die twee blijft hetzelfde. Dus het is alsof je eerst 2+5=7 hebt, maar later 3+4=7. Waarbij de 2 en 5 eerst de keys zijn, en het later 3 en 4 zijn. On-chain is de key nog steeds 7, maar de relatieve getallen zijn veranderd. Het is gewoon een lineaire berekening, maar dan met gigantische getallen en elliptic-curve cryptografie waardoor het in het geheim gebeurt.”

Dit is ook precies waar de naam statechain vandaan komt: een keten van statussen van doorgeef-keys.

“Het was eerst 2+5 en Alice weet alleen 5. Nu ga je naar 3+4 en als Alice nu met haar 5 naar de statechain entity gaat, zal het 5+3 worden, wat 8 is en niet 7. Dan klopt het dus niet meer.”

Op deze manier zit er actief een beetje trust bij, maar is een statechain nog steeds non-custodial. Daarbij moet de statechain-entiteit dus wel up-to-date zijn: 

“En dat is precies wat ik bedoel met proactive. De 2 moeten ze vergeten en alleen de 3 onthouden.”

Steun Focus!

Vind je deze open en gratis Focus-editie waardevol? Steun ons met een volledig vrijblijvende donatie, compleet value4value!

Klik op de QR-code met je lightning wallet (lnurl-compatible) of check onze donatiepagina voor standaardopties.

Steun Focus!

Vind je deze open en gratis Focus-editie waardevol? Steun ons met een volledig vrijblijvende donatie, compleet value4value!

Scan de QR-code met je lightning wallet (lnurl-compatible) of check onze donatiepagina met enkele standaardknoppen.

Federated entity

Om nog iets meer van dit vertrouwen weg te halen uit deze schaalbaarheidsoplossing, kun je aan federaties denken. Dit concept is in bitcoin niet nieuw en met Liquid ook al in de praktijk gebracht.

“Het is eigenlijk saai. Je hebt óf één key als statechain entity, of je hebt 3-uit-5 nodig, of whatever. Het kan alles zijn. Het is veiliger. Je kunt het vertrouwen verspreiden onder meerdere partijen en er een drempel in zetten.”

Je kunt ook zelf een statechain-entity zijn. Maar is de vraag: vertrouwen andere mensen je? Daarnaast moet je als entiteit ook altijd online zijn betalingen te ondertekenen, als het moet.

Voordelen

Maar wat kun je met statechains, als je ook al federated sidechains hebt? Ruben legt uit dat er belangrijke verschillen zijn:

“Het geld op een sidechain is divisible: opdeelbaar. Daarbij heb je niet het hele-klompjes-goud-probleem.”

“Het grote voordeel van statechains is de veiligheid: je hebt altijd de kans om een on-chain transactie te doen. Daardoor heb je minder kans dat je je geld kwijtraakt in de federatie.”

Met een federatie zoals Liquid heb je een 11-uit-15 multisig. Het kan gebeuren dat één derde weigert de transactie te ondertekenen. Als 5 van de 15 dit niet doen, dan is je geld bevroren. In het statechain-systeem gebeurt dat alleen maar als ze actief tegen je signen.

Stel je bent de laatste persoon die het geld wil hebben, en ze willen niet dat je het geld krijgt:

  1. Dan hadden ze in de eerste instantie al moeten valsspelen (door geheime informatie achter te houden)
  2. Nu moeten ze met 11 van de 15 tegen jou signen.

Dit is precies het tegenovergestelde. Voor statechains kun je nog altijd ‘on-chain gaan’ als er niet genoeg ondertekenaars zijn. Een extra uitval optie dus.

Voor wie is dit nuttig?

Leuk en aardig, die statecoins; maar wat kun je er mee? 

“Het komt er op neer dat zo veel mogelijk mensen bitcoin moeten kunnen gebruiken met zo weinig mogelijk custodial-risico. Het liefst wil je dat dit risico 0 is en dat iedereen on-chain betalingen kan doen. Maar dit is praktisch gezien niet haalbaar. De volgende stap is: wat kan dan wél?”

Een van de oplossingen zijn dus federaties. Somsen geeft aan dat het een spectrum is:

“Je kunt je coins ook op Coinbase zetten en vragen of zij de betaling willen doen. Maar misschien wil je iets veiligers én een oplossing die niet zo duur is als on-chain; en dan kom je bij tussenoplossingen terecht.”

“Dit zijn dan dus de federaties. Vervolgens heb je de afweging of je het fractionable (opdeelbaar) wilt maken (met federated sidechain), of iets dat nog iets veiliger is: een statechain.”

Daarbij zou je dus een kopje koffie met statecoins kunnen betalen. Ruben heeft daar zo z’n eigen kijk op:

“Hoe ik het zie is dat daar lightning netwerk echt perfect voor is. Je wilt grote bedragen als een statecoin overzetten en het restbedrag via lightning overmaken.”

“Dat is perfect. Want lightning is niet goed voor grote bedragen, maar perfect voor kleine bedragen. De combinatie van statecoins en lightning is erg mooi.”

Als je helemaal naar de toekomst kijkt, zou je zelfs nog een lightning-betaalkanaal kunnen maken bovenop een statecoin. “Daarmee zou je het helemaal opdeelbaar maken”.

Samengevat, je kunt in één wallet onder de motorkap meerdere soorten bitcoin bezitten: 

  • on-chain UTXO’s
  • een lightning-balans
  • een statecoin-balans
  • een Ark-balans (mogelijkerwijs)

Wallets zoals Muun doen dit al met één balans voor bitcoin die on-chain op lightning staan.

“Momenteel is er nog geen incentive om dit te doen, want transactiekosten zijn erg laag. Maar op termijn zijn dit dingen die gaan uitmaken. De toekomst gaat zijn dat er een trade-off is tussen trustless en goedkope betalingen.”

“Statecoins zijn een mooie tussenstap die nog niet bestond.”

Swaps

Je kunt ook statecoins met elkaar swappen, om zo extra privacy te krijgen. Dit is waar de Mercury Wallet ook vooral op focust: CoinSwaps.

Ruben vertelt: 

“Als je allebei dezelfde statechain-entiteit hebt en je wilt een CoinSwap doen en we hebben allebei 1 BTC, dan kunnen we een swap doen dat ik jouw coin krijg en jij de mijne.”

“Maar stel dat jij een andere entiteit gebruikt dan ik, dan moet je een atomic swap doen die cross-chain is. Het nadeel is dat als iemand halverwege het contract verdwijnt, dat je on-chain moet gaan om de swap te voltooien.”

Een nadeel is dus wel dat je – in het geval van de Mercury Wallet – de statechain-entiteit moet vertrouwen dat hij meegaat in dit ‘omwisselen’ of ‘swappen’ van het geld. Dat geeft statecoins een nadeel tegenover on-chain coinswaps of coinjoins.

Het bijzondere is dat deze swaps volledig gratis zijn, zodra je statecoin al ín het systeem zit. Dit kun je zogezegd dus al in de Mercury Wallet testen.

Conclusie

Statecoins is een nieuwe manier om je bitcoin naar iemand over te maken. Het geeft mogelijkheden qua privacy, qua schaalbaarheid en ook qua risico ten opzichte van bijvoorbeeld lightning. 

Een kanttekening: er is nog maar één wallet om met statecoins te betalen. Het staat nog in de kinderschoenen en de noodzaak lijkt er nog (!) niet te zijn. Wel is Mercury Wallet nu bezig met Statechain Lightning Channels, een compleet nieuw concept.

Maar wellicht zijn statecoins wel op het punt waar lightning in 2016 was: het idee bestond, de eerste test implementatie ook en bijna niemand kende het nog. Maar zo’n zes jaar later is het op allerlei plekken geïmplementeerd, van El Salvador tot Twitter en van beurzen tot wallets.

Focus is een value4value nieuwsbrief. Ben je fan? Steun ons met een vrijblijvende donatie!

Steun Focus met een donatie!

Laat een berichtje achter en kom in ons donatie-dashboard.

BITCOIN FOCUS

Word abonnee van dé bitcoin nieuwsbrief van Nederland.