Skip links

#62 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 lightning netwerk, 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.

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 lightning netwerk 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 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.

Dit is een premium artikel. Wil je verder lezen? Betaal €1,95 met bitcoin (lightning) of neem een abonnement.