Bitcoin Lightning #28: On-chain betalingen naar LN met Submarine Swaps

In de Hup Lightning serie kijken we al bijna een maand lang naar betalingen vanaf en met een Lightning wallet. Maar wat als je geld op jouw on-chain wallet hebt staan, en je wilt betalen naar iemand die een Lightning wallet heeft? Dan wordt het al snel problematisch.

Toch is er iets ontwikkeld dat dit oplost. Het heet Submarine Swaps en in dit artikel gaan we wat dieper in op deze materie.

Koop gemakkelijk en snel Bitcoin bij Bitvavo. Ga aan de slag en betaal geen handelskosten voor je eerste aankoop tot €1.000 !

Bitcoin on-chain

Want nog eventjes kort: als je een betaling doet via het Lightning Network, gebeurt dit door satoshi’s in een betaalkanaal heen en weer te schuiven. Deze satoshi’s staan gelocked op de mainchain van Bitcoin door een speciale constructie.

Doordat ze gelocked staan, kun je deze bitcoin dus eigenlijk niet zomaar naar een on-chain adres sturen. En als je dit wél zou willen doen, moet je eerst het kanaal sluiten (waardoor de settlement transactie jou de outbound capaciteit in jouw on-chain wallet terug geeft) om vervolgens pas deze BTC te kunnen versturen naar de ontvanger.

Dat is niet heel gebruiksvriendelijk en ook niet optimaal. Je betaalt dan immers twee keer transactiekosten. Eentje om het betaalkanaal te sluiten en een keer om de betaling daadwerkelijk te versturen.

Atomic swaps

Maar het kan dus makkelijker. Er bestaan bijvoorbeeld ook al constructies waarbij je een Bitcoin met iemand kunt ruilen tegen een aantal Litecoin. Dit kan gebeuren met atomic swaps. Dit is een type smart contract waarbij de funds pas vrij komen zodra beide partijen respectievelijk hun Bitcoin en Litecoin hebben ‘ingeleverd’.

Zo kun je dus tussen verschillende blockchains cryptovaluta uitwisselen, zónder derde partij nodig te hebben.

Maar dit kan ook met Bitcoin en ‘Bitcoin dat op Lightning staat’. Dan noemen we het echter geen atomic swaps (het zijn immers allebei Bitcoin), maar submarine swaps.

Submarine swaps

Een submarine swap is een atomic on-chain naar off-chain swap. Het idee komt vandaan bij Olaoluwa Osuntokun en Alex Bosworth, beide werkzaam voor Lightning Labs.

Het wordt ook wel eens de “on-chain ramps naar LN” genoemd. Bij atomic swaps heb je twee partijen nodig die mee doen in de ruil. Met submarine swaps heb je maar een iemand nodig (die gelinkt zit aan het Lightning Network) die iets verstuurt.

Zoals je misschien weet, heb je in Lightning geen adressen. Het is gebaseerd op invoices die werken op basis van pre-images en pubkeys. Je kunt dus niet zomaar vanuit een on-chain wallet wat BTC naar een Lighnting adres overmaken. Die bestaan immers niet.

Met submarine swaps kun je Lightning channels als het ware ‘bijvullen’ met een on-chain transactie op het Bitcoin netwerk.

Trustless Bitcoin swappen

De tussen’persoon’ die dit regelt is een hash-time lock contract (HTLC). De ontvanger van de transactie kan deze BTC pas claimen als hij voor een bepaalde tijd het cryptografisch bewijs voor de betaling aanlevert. En als dit niet gebeurt, keert de BTC gewoon terug in de wallet van de verzender.

Submarine swaps maken gebruik van een “swap provider” als de betrouwbare en trustless tussenpersoon.

De pre-image in het swapcontract wordt door de swap provider gebruikt als betalingsbewijs om de on-chain BTC te claimen.

De swapprovider kent de echter pre-image pas nadat de LN invoice is betaald. Als dit succesvol is gebeurd, wordt het betaalkanaal dus ‘vol gemaakt’ met het bedrag dat overeenkomt met de verzonden BTC aan de mainchain.

En pas daarna kan deze partij de on-chain Bitcoin uit het HTLC contract claimen. Op deze manier is er dus Bitcoin aangekomen op Lightning, terwijl er Bitcoin is verstuurd on-chain.

Submarine swaps zijn dus een slim en innovatief mechanisme om betrouwbaar Bitcoin uit te wisselen. Het is een brug tussen on-chain transacties en off-chain LN-kanalen. Voor de toekomstige schaalbaarheid van de blockchain en ook van decentrale exchanges is dit enorm belangrijk.