Sinds de activatie van SegWit is het mogelijk om cross-chain atomic swaps uit te voeren op het Lightning Network. Inmiddels is de eerste Lightning swap uitgevoerd op de testnets van Bitcoin en Litecoin. Doordat we in werkelijkheid nog niet zo ver zijn voor deze swaps op het mainnet, leek de atomic swap vooralsnog een toekomstdroom. Echter hebben ontwikkelaars nu een andere manier gepresenteerd om on-chain atomic swaps uit te voeren.
Een atomic swap is een digitale ruil die in vertrouwen, zonder vertrouwen in een wederpartij, uitgevoerd kan worden. Dit is, wanneer andere cryptocurrencies SegWit hebben geactiveerd, ook mogelijk tussen verschillende soorten blockchains (cross-chain). Dit wordt mogelijk zonder dat er vertrouwen nodig is in de wederpartij. Daarnaast is het gebruik van een exchange of wisseldienst hierbij niet meer noodzakelijk.
Probleem met vertrouwen
Om te begrijpen wat een atomic swap is, moeten we eerst het probleem behandelen dat, bestaat bij het handelen in bitcoins. Dit doen we aan de hand van een ruil tussen Alice en Bob.
Stel je voor dat Alice iets wilt kopen van Bob, bijvoorbeeld een didgeridoo. Alice en Bob wonen erg ver uit elkaar, het is dus lastig om deze ruil in persoon uit te voeren. Daarnaast kennen de twee elkaar niet, dus enig fundament voor vertrouwen is er niet. Hoe kunnen Alice en Bob dan toch zaken met elkaar doen, zonder dat één van beide partijen de ander met een kat in de zak achterlaat?
Wanneer Alice als eerst geld naar Bob stuurt, zou Bob vervolgens kunnen nalaten de didgeridoo te sturen, waardoor Bob het geld heeft en Alice met lege handen achterblijft. Ook andersom kan dit een probleem zijn, wanneer Bob de didgeridoo verzendt, deze bij Alice aan komt en Alice het vervolgens vertikt om het afgesproken bedrag naar Bob over te maken.
Bij zo’n overeenkomst wil je idealiter dat beide partijen de overdracht gelijktijdig nakomen, waardoor de wederpartij niet achteraf de overeenkomst niet na zou kunnen komen.
Mogelijke oplossingen
Er zijn meerdere mogelijke oplossingen voorhanden. Als eerste zouden Alice en Bob daadwerkelijk in persoon met elkaar af kunnen spreken om vervolgens de overdracht te doen. Dit is echter vaak niet te doen doordat men vandaag de dag, met het gemak van het internet, producten van over de hele wereld bestelt. Een retourtje Amsterdam – Sydney boeken om er zeker van te zijn dat de 50 euro kostende didgeridoo daadwerkelijk in de woonkamer zal staan is natuurlijk niet wenselijk.
Een andere mogelijkheid is om een vertrouwde tussenpersoon te zoeken. De betreffende tussenpersoon kan vervolgens eerst het geld en de didgeridoo van Alice en Bob in bezit nemen, om deze vervolgens door te sturen. Hier komt ook weer het gevaar van vertrouwen om de hoek kijken; hoe weet men zeker dat de tussenpersoon niet met zowel het geld als de didgeridoo weg rent? En overschrijden de kosten van een gerenommeerd tussenpersoon de hele overeenkomst niet?
Voor bitcoins gebeurt dit ook op deze manieren. Men doet direct met elkaar zaken op marktplaatsen als LocalBitcoins; de ander dient dus vertrouwd te worden. Of men koopt de bitcoins op een exchange of bij een tussenpartij; deze bedrijven dienen vertrouwd te worden.
Virtuele ruilen
Bij virtuele ruilen ligt het net iets anders. Doordat alles via de computer gaat, zijn er ook meer mogelijkheden. Zo kunnen de beide delen van een ruil van elkaar afhankelijk worden gemaakt. Hierbij kunnen bijvoorbeeld voorwaarden worden gesteld voor de overdracht; het geld dient pas verzonden te worden als de didgeridoo op het postkantoor ligt en het pakketje dient pas verzonden te worden als het geld in goede orde is binnen gekomen. Zo garandeer je dat óf de overeenkomst helemaal wordt nagekomen, óf dat allebei de partijen van de overeenkomst af kunnen zien als de ander deze niet nakomt; er zal dus niemand met lege handen blijven staan.
Dit kan gezien worden als de atomic swap; het is één overdracht die wordt uitgevoerd wanneer door beide partijen aan de voorwaarden is voldaan.
On-chain Atomic Swaps
Ontwikkelaars van Decred, een fork van Bitcoin, zijn bezig geweest met een SCRIPT-smartcontract die het nu ook mogelijk maakt om on-chain atomic swaps te verrichten. SCRIPT is een taal die onder meer Bitcoin, Litecoin, Viacoin en Decred gebruiken voor de smartcontracts. Door dit nieuwe soort smartcontract is het mogelijk om tussen deze munten vertrouwensloos een on-chain ruil, dat wil zeggen op de blockchain zelf, plaats te laten vinden.
Hoe werkt het?
Stel je voor dat Alice en Bob een overeenkomst willen sluiten voor de ruil van Alphacoin en Betacoin. Deze coins maken beide gebruik van een andere blockchain. Er dient een constructie opgezet te worden waarmee deze ruil plaats kan vinden tussen beide blockchains, zónder dat de mogelijkheid bestaat dat Alice of Bob de afspraak maar half nakomt. Daar komt de virtuele kluis om de hoek kijken.
Alice maakt een virtuele kluis op de blockchain en geeft de specificaties voor het slot, zoals welk soort (nu nog onbekende) sleutel er nodig zal zijn om deze te openen, aan Bob. Zij stopt vervolgens haar Alphacoin in de kluis die alleen opengemaakt kan worden met de sleutel van Alice en de (digitale) handtekening van Bob.
Bob maakt vervolgens op zijn beurt een vergelijkbare kluis aan met daarin zijn Betacoin. Hierbij gebruikt hij hetzelfde soort sleutel als die hij van Alice zal krijgen. Voor beide partijen is het soort sleutel dus bekend, waardoor ook door beide partijen de kluis van de ander geopend zou kunnen worden, mits de goede handtekening wordt aangeleverd.
Wanneer Alice de kluis van Bob opent, wordt de gebruikte sleutel openbaar gemaakt op de Betacoin blockchain. Bob kan vervolgens deze openbaar gemaakte sleutel gebruiken om de kluis van Alice te openen en zo de Alphacoin bemachtigen.
Dit sleutelsysteem maakt het dus mogelijk dat, wanneer één partij de kluis van de ander opent, die ander direct de juiste informatie bemachtigd om de voor hem bestemde kluis te openen. Doordat er ook een handtekening nodig is voor het openen van de kluis kan geen willekeurige partij die de blockchain af speurt voor kluissleutels een van de kluizen openen; de benodigde handtekeningen van Alice en Bob zijn immers alleen in het bezit van henzelf. De handtekening wordt gemaakt op basis van de privésleutels van het Alphacoinadres van Alice of Betacoinadres van Bob.
Wanneer er iets fout gaat, of één van de partijen weigert de overeenkomst na te komen, zijn de kluizen zo ingericht dat de inhoud na een bepaalde tijd, bijvoorbeeld 24 of 48 uur, weer teruggestuurd wordt naar de betreffende eigenaar.
Off-chain Atomic Swaps
Cross-chain atomic swaps via het Lightning Network, ook wel off-chain atomic swaps genoemd, hebben zowel voor- als nadelen in vergelijking met deze on-chain swaps.
On-chain swaps hebben bevestiging nodig van de gedane transacties. Een bevestiging duurt gemiddeld 10 minuten, maar kan in het ongunstigste geval zo een uur duren. Bij “Lightning swaps” zijn deze transacties direct; deze hoeven niet op de blockchain bevestigd te worden.
Voor Lightning swaps dienen (bit)coins eerst verankerd te worden in het Lightning Network alvorens deze over het netwerk verstuurd kunnen worden middels “channels”. Pas wanneer deze “channels” gesloten zijn, en het Lightning Network niet meer gebruikt kan worden, worden de (bit)coins teruggestuurd naar de blockchain.
Lightning transacties zijn over het algemeen goedkoper en sneller; ideaal voor kleine transacties en mogelijk beter voor de privacy, doordat niet alle transacties bevestigd worden op de blockchain. Voor grotere transacties, die mogelijk gebruik maken van offline handtekeningen, is de on-chain atomic swap weer gunstiger. Hierbij is snelheid vaak niet van belang en heeft het direct bevestigen op de blockchain prioriteit.
Toepassing in praktijk
Voor OTC-ruilen (Over The Counter, waarbij grote transacties direct tussen partijen worden gefaciliteerd) is dit ideaal. Er is geen tussenpartij meer nodig om de handel tussen Alphacoin en Betacoin te regelen; men kan direct en vertrouwensloos coins uitwisselen.
Ook biedt dit kansen voor vertrouwensloze handelsbeurzen, waarbij elke partij bezit over tegoeden behoudt en deze niet toevertrouwd aan een derde partij. De ruilen gebeuren dan middels atomic swaps, zonder enige risico te hebben op falende derden. Denk hierbij aan een kwaadwillende services die weg rennen met alle tegoeden, of hackers die het gemunt hebben op de servers van de gebruikte service.
Privacy
Er dient wel opgemerkt te worden dat on-chain atomic swaps eventuele privacy niet ten goede kunnen komen. Aangezien de transacties op de blockchain bevestigd dienen te worden, en de kluissleutels op deze blockchains openbaar gemaakt worden, kunnen de uitwisselingen op beide blockchains aan elkaar gekoppeld worden. Zo is dus te zien met welke coin, en het bijbehorend adres, de uitwisseling plaats heeft gevonden.
Concluderend
Atomic swaps maken de verwisselbaarheid van coins een stuk gemakkelijker. Zo kan er direct gewisseld worden tussen coins met verschillende use cases. Denk hierbij aan bijvoorbeeld coins die gefocust zijn op privacy. Er kunnen bitcoins omgeruild worden voor die betreffende munt, om hier vervolgens een transactie mee te doen, om deze privacycoin later weer zonder tussenkomst van een derde partij om te wisselen voor bitcoins. Ook al heeft Bitcoin deze en andere functies zelf (nog) niet, het gebruik maken van de toepassingen van andere blockchains wordt door atomic swaps een stuk makkelijker gemaakt.
Inmiddels heeft Charlie Lee, de bedenker van Litecoin, al een atomic swap uitgevoerd tussen Litecoin en Bitcoin.
Dit artikel is geschreven op basis van artikelen gepubliceerd door Jimmy Song.
Jimmy Song is een Bitcoin developer, ondernemer en voormalig ontwikkelaar voor bitcoinwallet Armory. In zijn serie Bitcoin Tech Talk laat hij de lezer meekijken met de ontwikkelingen rondom de technische aspecten van Bitcoin.
Lees het originele artikel op Bitcoin.nl