Atomic Swaps

Laten we naar het begrip atomic swaps gaan kijken. Het is bekend dat het aankomende lightning network van Bitcoin directe bevestigingen en lage transactiekosten belooft. Wat minder bekend is, is dat deze langverwachte technologie niet beperkt is tot Bitcoin. Hetzelfde peer-to-peer-protocol kan mogelijk worden uitgebreid naar altcoins. Dit zou kunnen zorgen voor betrouwbare altcoin-betalingsprocessors, gedecentraliseerde altcoin-uitwisselingen en misschien zelfs goedkopere bitcoin-naar-bitcoinbetalingen.

Atomic Swaps

Interoperabiliteit tussen Bitcoin en altcoins is niet nieuw. Zogenaamde atomic swaps (of atomaire cross-chain trading) werden voor het eerst beschreven door Tier Nolan in 2013.

Laten we zeggen dat Alice 200 litecoins heeft, maar liever 1 bitcoin wil. En Bob heeft 1 bitcoin, maar geeft de voorkeur aan 200 litecoins. Dus stemmen Alice en Bob overeen handel te drijven. Maar Alice en Bob vertrouwen elkaar niet, dus geen van beiden wil de eerste zijn die de munten stuurt.

Daarom hebben Alice en Bob een atomic swap opgezet.

Atomic swaps gebruiken een slimme truc die bekend staat als een hash time-locked contract, dat op zijn beurt gebruik maakt van het potentieel van multisignature adressen en time-locks. Dit alles wordt mogelijk gemaakt door de standaard scripttaal in Bitcoin en de meeste altcoins, waaronder Litecoin.

Kortom, Alice en Bob leggen transacties voor aan beide blockchains: één op Bitcoin en één op Litecoin. De Bitcoin-transactie verzendt 1 bitcoin van Bob naar Alice, maar Alice kan deze bitcoin alleen claimen als ze een geheim nummer openbaart dat alleen zij kent. De Litecoin-transactie verzendt 200 litecoins van Alice naar Bob, maar vereist hetzelfde geheime nummer op beide ketens.

Wanneer Alice haar bitcoin claimt, onthult ze haar geheime nummer op de Bitcoin blockchain. En met datzelfde geheime nummer kan Bob op zijn beurt zijn 200 litecoins claimen.

Hoewel de transacties op volledig verschillende blockchains zijn, zijn ze effectief gekoppeld. Bob hoeft alleen maar de Bitcoin blockchain te controleren om te zien of Alice haar bitcoin heeft geclaimd zodat hij zijn litecoins kan claimen.

Dit alles werkt vandaag. Maar het is een beetje gedoe. Alice en Bob moeten elkaar vinden om de atomic swap in te stellen, waarvoor vervolgens meerdere transacties op meerdere blockchains nodig zijn.

Dit kan worden verbeterd.

Lightning Network

Het lightning network is specifiek ontworpen voor Bitcoin. Maar altcoins die gebruik maken van de Bitcoin codebase- zoals Litecoin, Dogecoin of Zcash – zijn doorgaans ook in staat om lightning network te hosten. Andere altcoins, voor zover ze vergelijkbare of meer uitgebreide scripting-mogelijkheden bevatten (zoals Ethereum of Ethereum Classic), maken vergelijkbare oplossingen mogelijk.

Net als bij atomic swaps maakt het lightning network gebruik van hash-time-locked-contracten. Waar atomic swaps effectief blockchains met elkaar verbinden, koppelt het lightning network betalingskanalen aan elkaar. Op deze manier kunnen zowel Alice als Bob een betaalkanaal openen met Carol, ze kunnen transacties uitvoeren via Carol, zonder Carol te hoeven vertrouwen.

En juist omdat de onderliggende mechanica hetzelfde zijn, is het niet moeilijk om het lightning network samen te voegen met atomic swaps. Dit proces zorgt ervoor dat verschillende lightning networks interoperabel zijn voor blockchains.

Dit betekent dat een peer die kanalen op beide blockchains opent, kan dienen als een betalingsprocessor, een altcoin exchange en zelfs meer.

Laten we bijvoorbeeld zeggen dat Alice een computer van Bob wil kopen, waarvoor Bob 1 bitcoin in rekening brengt, maar Alice is alleen eigenaar van litecoins. Gelukkig heeft Carol een Litecoin-channel geopend met Alice en een Bitcoin-channel geopend met Bob. Dus Alice kan nu 200 litecoins naar Carol sturen, voor Carol om 1 bitcoin naar Bob te sturen. Omdat dit allemaal gekoppeld is aan hash time-locked contracten, fungeert Carol effectief als een betrouwbare betalingsprocessor.

En als Alice en Bob allebei een Bitcoin-betaalkanaal hebben, evenals een Litecoin-channel met Carol, kunnen ze ook geld wisselen. Alice kan 200 litecoins sturen naar Carol, die Carol doorstuurt naar Bob. Bob stuurt vervolgens in ruil een bitcoin naar Carol, die Carol nu doorstuurt naar Alice. En nogmaals, dit alles is nog steeds verbonden met hash-time-locked contracten, dus nu fungeert Carol effectief als een vertrouwde altcoin exchange.

Ten slotte kunnen alternatieve lightning networks het lightning network van Bitcoin op sommige manieren zelfs verbeteren. Een bitcoin-naar-bitcoin betaling kan bijvoorbeeld via Litecoin-peers worden gerouteerd, als dat de goedkoopste route is. Of gebruikers die op meerdere munten werken, kunnen hun route opnieuw in balans brengen. Als Alice 400 litecoins heeft maar geen bitcoins in haar channel met Bob, wil ze mogelijk 200 litecoins ruilen om haar Bitcoin-channel te financieren.

Uitdagingen

Er resteren nog enkele uitdagingen om het grootste deel van dit scenario te realiseren.

Een daarvan is DoS-beveiliging (denial of service). Hoewel de mechanica van het lightning network ervoor zorgt dat geen enkele peers geld kan stelen, kunnen tussenpersonen het betalingsproces blokkeren of tijdelijk stil zetten. Om dit op te lossen, moeten kanalen met niet-meewerkende peers gesloten zijn. Deze vorm van bestraffing moet DoS-aanvallen duur maken, omdat niet-meewerkende peers kanalen moeten blijven openen.

Maar om te verifiëren dat het channel is gesloten en de aanvaller is “gestraft”, moet elke peer in een betalingsketen alle deelnemers kunnen volgen. Zelfs als slechts twee collega’s in een keten van zes Litecoin gebruiken, moeten alle zes peers in staat zijn om een Litecoin-transactie te herkennen voor het geval het channel gesloten is.

Natuurlijk moeten lightning networks eerst worden uitgerold. Dit vereist in de meeste gevallen een malleability fix, ten minste voor optimale prestaties. Dit is met de activatie van Segregated Witness (SegWit) al voltooid. Bitcoinwallet.nl blijft de ontwikkeling rondom atom swaps en lightning networks volgen. Lees ook onze pagina over: Merklized Abstract Syntax Tree.