Vrijwel gratis en supersnel: Lightning, de snelle laag bovenop bitcoin

Dit artikel verscheen eerder op Tweakers

Het Lightning Network, of LN, boven op het bitcoinnetwerk is al jaren de grote belofte om transacties supersnel en praktisch gratis te maken. Inmiddels werkt het systeem al ruim twee jaar naar behoren. Voor de eindgebruiker moet het allemaal heel simpel zijn, maar achter de schermen is het zeer complex om een decentraal, trustless systeem te bouwen. We doken in de techniek achter Lightning. Wat is dat toch met dat decentrale netwerk van nodes dat door echte bitcoins wordt gebruikt boven op de robuuste, maar relatief trage bitcoinblockchain?

Vrijwel direct en bijna gratis

Het LN is een oplossing voor problemen waarmee het bitcoinnetwerk al vanaf het begin te maken heeft: traagheid, een laag maximaal transactievolume en de mogelijkheid van hoge transactiekosten. Dat laatste is afhankelijk van de drukte op het netwerk. Die traagheid van de bitcoinblockchain is er niet voor niets; het is een belangrijk onderdeel van de veiligheid van het systeem. Wil je een snellere blockchain? Kan, maar dan lever je in op veiligheid en foutmarges. Wil je grote blokken van een blockchain? Kan, maar dan lever je onder andere in op de mogelijkheid overal goedkoop en makkelijk nodes te draaien om het netwerk decentraal te houden. We willen hier geen discussie over blokgrootten beginnen, maar in 2017 waren velen het erover eens dat er iets moest gebeuren om snellere, goedkopere en tegelijk kleinere transacties beter te faciliteren. Dit werd later dat jaar mogelijk door de toevoeging van segregated witness, of segwit, aan het bitcoinprotocol.

Transactiefees van ethereum en bitcoin op txstreet.com, visualisatie waarbij transacties als figuurtjes worden voorgesteld en de blokken als bussen die volgeladen worden. Screenshot d.d 4 januari 2022

Segwit kwam niet uit het niets en was al jaren in ontwikkeling. Parallel daaraan werd het LN ontwikkeld naar aanleiding van een whitepaper die in februari 2015 uitkwam. Inmiddels zijn twee Lightning-implementaties leidend: Lightning Labs’ LND-implementatie en Blockstreams c-Lightning-implementatie, maar er zijn meer communityprojecten. Ons verhaal gaat over de basis van Lightning en hoe het werkt.

In de basis werkt Lightning door een peer-to-peernetwerk van betaalkanalen op te zetten in de vorm van smart contracts op de bitcoinblockchain, samen met een communicatieprotocol dat bepaalt hoe deelnemers deze smart contracts moeten opzetten en uitvoeren, schrijft Andreas Antonopoulos in Mastering the Lightning Network. Eigenlijk zet je een tijdelijk transactieboekje op, gekoppeld aan een ander tijdelijk transactieboekje. Dit doe je door een 2-uit-2-multisignaturetransactie uit te voeren vanaf een Lightning-node en daarmee bitcoins of een stukje daarvan in een kanaal vast te zetten met een andere node. Dit betekent simpelweg dat jij de ene sleutel hebt en de kanaalpartner de andere.

Laten we voor het gemak met 1 miljoen satoshi rekenen. 1 satoshi of sat is een honderd miljoenste bitcoin, de kleinste hoeveelheid bitcoin die er is. Je hebt je 1 miljoen sats vastgezet in je kanaal. Om dat te doen, heb je in feite een gewone bitcointransactie uitgevoerd van bitcoinadres A naar een nieuw bitcoinadres B van je multisignaturetransactie. Het verschil is dat die 1 miljoen satoshi niet meer direct op de bitcoinblockchain ‘vaststaat’, maar net zo lang heen en weer geschoven kan worden met behulp van een hash time locked contract, of htlc, in een kanaal totdat het kanaal gesloten wordt. Ofwel: totdat de transactie wordt teruggehaald naar de basis van het netwerk: de bitcoinblockchain.

Stel, je hebt 500.000 sats overgemaakt naar iemand met wie je een kanaal opende. Dan heb je nu 500.000 sats minder. Als het kanaal gesloten wordt, worden de off-chaintransacties gesloten en gesetteld op 500.000 voor jou op een nieuw bitcoinadres en, ervan uitgaande dat de ander ook 1 miljoen had vastgezet, 1,5 miljoen voor de ander.

Dat klinkt leuk, maar je had toch ook gewoon die 500.000 sats on-chain kunnen overmaken naar die ander? Klopt. Alleen dan had de transactie tenminste tien minuten geduurd voordat er één bevestiging binnen was. Omdat iemand in de tussentijd nog kan zorgen voor het terughalen van het geld, moet je daar eigenlijk op wachten, al is dat voor kleine bedragen erg omslachtig. Daarnaast kan het druk zijn op het netwerk en betaal je ineens 10.000 sats om de transactie snel te laten doorgaan. Of je betaalt te weinig en dan moet je misschien wel dagen of weken wachten voordat de transactie rond is.

Daar ben je bij het bijzondere van het LN; zolang je je kanaal met de ander niet sluit, kun je oneindig bedragen heen en weer sturen tegen geen of zeer lage kosten. Het enige dat je steeds doet, is opnieuw een transactie aanmaken en tekenen in zo’n htlc met behulp van je geheime sleutel. Aanmaken en tekenen. Aanmaken en tekenen.

Je kunt een Lightning-kanaal vergelijken met een bar, waar je met de barvrouw een kanaal opent van zeg 50 euro. Bij elke besteding updaten jij en zij de rekening off-chain. Als je vertrekt, gaat de laatste versie van de rekening naar de blockchain. Als je dit in het echt zou doen, zou dit betekenen dat je steeds met iemand een kanaal moet openen en dat openen gaat met die multisig-transactie die… weer on-chain uitgevoerd moet worden, wat dus tenminste tien minuten kan duren en ook nog eens extra transactiekosten met zich meebrengt. Dat wil je dus eigenlijk niet.

Als je niet sluit, ontstaat vanzelf een netwerk van allerlei nodes die met elkaar in contact staan. Het blijkt dus wonderwel te werken als je een groot netwerk hebt waarin iedereen elkaar min of meer kent, of in ieder geval kan vinden, en niemand zijn kanalen met anderen sluit. Dan kun je constant waarde heen en weer schuiven tussen al die kanalen tegen geen of heel lage transactiekosten en vrijwel zonder wachttijd. Iedereen laat zijn kanalen openstaan en leert door gossip op het netwerk welke nodes met wie verbonden zijn. Door de gossip op het netwerk weten nodes routes te verzinnen naar het gekozen eindpunt van de betaling.

De deelnemers in het netwerk houden hun kanalen dus open en het geld wordt via die kanalen heen en weer gestuurd. Als er een transactie langskomt, wordt die met behulp van een htlc eerst vastgezet, totdat de hele cyclus is afgerond. Dan wordt het transactieboekje aan beide kanten van het kanaal geüpdatet met de laatste transactie.

Wat er eigenlijk gebeurt: de gebruiker gaat een rekening, of invoice, betalen. Daarin staat allerlei informatie, bijvoorbeeld over specifieke onderdelen van de route. Na het activeren van de betaling gaat het systeem de kortste en goedkoopste route zoeken naar de tijdelijke invoice. Vervolgens is bekend hoeveel de hele route kost in satoshi’s of zelfs millisatoshi’s. Het hele te betalen bedrag en de transactiekosten worden meegestuurd en op elk onderdeel van de route wordt tijdelijk een htlc vastgezet. Als het hele bedrag aan het eind is, kan die node de betaling claimen doordat hij de juiste sleutel heeft: secret R in het plaatje. Dan gaat er informatie terug, worden de htlc’s afgerond en zijn de waarden in de kanalen verschoven. Bij die verschuivingen blijft de totale waarde van de routingnodes gelijk, alleen de waarde in de kanalen schuift heen en weer. Alleen de eerste en de laatste nodes krijgen daadwerkelijk een andere balans.

Het systeem zorgt ervoor dat niemand elkaar hoeft te kennen om toch betalingen uit te kunnen voeren op een veilige manier binnen een decentraal meshnetwerk.

Voorbeeld van een betalingsroute door een LN waarbij Alice 1,003 btc verstuurt naar Eric en elke node 0,001 btc inhoudt als kosten. Bron: Mastering Bitcoin, Andreas Antonopoulos, CC BY-SA 4.0

Toch blijven er nog heel wat vragen staan bij zo’n simplistische voorstelling van het LN. Om daar meer over te weten, spraken we met Joost Jager, onafhankelijk Lightning-ontwikkelaar. “Dat barvoorbeeld met die 50 euro is mooi, elke partij kan de laatste transactie pakken, naar de blockchain gaan en dan het geld eruit halen waar ze recht op heeft.”

Dat kan ook als een van beide partijen verdwijnt, legt hij uit. “Iedereen kan op de blockchain settelen wanneer hij wil. Je kunt wel zonder te betalen weglopen uit de bar, maar dan kan de barman alsnog met de laatste versie van de transactie het tegoed opeisen.” Maar wat als iemand dan met een oudere versie van het transactieboekje naar de blockchain gaat waarin hij meer geld aan zijn kant van het kanaal heeft staan? Jager. “Dan, en dat is het geniale van Lightning, verliest de partij die valsspeelt zijn hele tegoed in dat kanaal. Ze eindigen op nul. Deze penalty zorgt ervoor dat beide partijen eerlijk blijven handelen. Dit geeft het vertrouwen om niet steeds naar de blockchain terug te moeten gaan.” Door deze eigenschappen hoeven mensen hun kanalen dus niet te sluiten en ontstaat er echt een netwerk, waardoor je geen directe kanalen hoeft te hebben met de uiteindelijke ontvanger.

Het hele systeem werkt op simpele hardware, zoals een Raspberry Pi. Dat maakt het aan de ene kant heel bereikbaar, maar vraagt op dit moment nog best een aardige investering aan kennis en wellicht ook geld dat de gebruiker in de node wil vastzetten. Jager: “Er zijn groepen mensen die hobbymatig zelf thuis Lightning-nodes draaien. Dat is natuurlijk fantastisch, maar je moet niet onderschatten wat erbij komt kijken om een routingnode succesvol te maken. Dat is echt een vak apart. De kanalen moeten bijvoorbeeld actief onderhouden worden en ook is het belangrijk om verbindingen te hebben met strategische nodes op het netwerk. Routingnodes beginnen professioneler en groter te worden. Achter sommige van deze nodes zitten bekende bedrijven uit de bitcoinspace, met een goede reputatie. Dit is voor sommige partijen belangrijk. Bijvoorbeeld om in het geval van problemen de mogelijkheid te hebben om contact op te nemen. Ook zou het kunnen dat er op een dag regels komen voor routingnodes. Ik hoop het niet, maar wellicht wordt het ooit verplicht voor bedrijven die op Lightning aangesloten zijn, om enkel gebruik te maken van routingnodes die logfiles bijhouden van het betalingsverkeer.”

Jager wil dat Lightning een succes wordt en zou daar wel wat concessies in willen doen. “Bitcoin heeft een eindige supply. Afrekenen met bitcoin is daarom op zichzelf al revolutionair. Lightning is hierbij essentieel voor schaalvergroting. Tegelijk voegt Lightning privacyeigenschappen toe waarmee overheden het moeilijk kunnen hebben. Ik ben een voorstander van privacy, maar als het uiteindelijk aankomt op adoptie versus privacy, dan kan het lonen om wat water bij de wijn te doen. Eindigen met een betaalnetwerk waar geen enkel bedrijf aan mee mag doen, is ook moeilijk een winnende uitkomst te noemen.”

Andere dingen settelen kan ook. Zo kun je heel snel van Lightning-bitcoins, of LN-btc, naar andere valuta via een wisselkantoor of atomic swaps. Het netwerk blijkt veel meer te zijn dan alleen een systeem om LN-btc’s van A naar B te schuiven. Het blijkt een systeem om alles waarbij zekerheid van de transactie nodig is, te kunnen ondersteunen, dus ook een wisseldienst van LN-btc naar dollar of wisseldiensten tussen welke valuta dan ook. Het bekendste voorbeeld van het gebruik van dit systeem vinden we in El Salvador, waar bitcoin wettig betaalmiddel is geworden, niet in de laatste plaats om het overmaken van geld naar het land makkelijker te maken. Hoe dat er achter de schermen precies uitziet, is niet helemaal duidelijk. Wat wel helder is, is dat er een custodian tussen moet zitten waar, in het geval van een dollartransactie, heel snel dollars in LN-btc worden omgezet en vise versa.

Jager geeft nog een aantal voorbeelden waarbij het praktisch is om Lightning te gebruiken om valutastromen te coördineren, zoals bij bedrijven die verschillende vestigingen in verschillende landen hebben. Die kunnen zo makkelijk binnen het bedrijf geld heen en weer sturen, en de traagheid en kosten van traditionele internationale betalingen omzeilen.

Implementaties

Jager werkte zelf aan Lightning Labs’ implementatie, LND genaamd, maar er zijn meer implementaties. “Wat de basisfunctionaliteit betreft zitten de verschillen vooral in de api, zoals welke informatie je uit een node kunt halen. Dat is dus vooral voor ontwikkelaars van belang. Implementaties onderscheiden zich door de extra functionaliteit die ze bieden. In c-Lightning zijn bijvoorbeeld dualfunded channels toegevoegd. Dan open je een kanaal waarin beide partijen de helft kunnen financieren bijvoorbeeld. Voorheen begon een kanaal altijd met de balans volledig aan één kant en het balanceren van het kanaal was een aparte operatie. LND is met atomic multipath payments gekomen, ofwel amp. Multipath-payments waarbij de betaling uit verschillende kanalen gecombineerd kan worden, bestonden al, maar bij amp kan de ontvanger pas het geld claimen als alle delen zijn binnengekomen: atomic.”

Het belang van de tweede laag boven op het bitcoinnetwerk, die overigens ook op andere systemen toe te passen is, lijkt nu al groter dan iemand zich ooit had kunnen voorstellen. En het begon allemaal met een bètanetwerkje van nodes, ergens begin 2018.

En de toekomst, waar gaat Lightning naar toe? “De complexiteit is groot, het houdt niet op. Er zijn nog veel open einden als je kijkt naar de specrepository, waar protocolwijzigingen worden voorgesteld. Daar zit van alles in dat we nog moeten oplossen. Een eenvoudiger alternatief voor Lightning zou mooi zijn, maar zolang dat er niet is, blijven we verder ontwikkelen op de huidige weg. Mede door El Salvador is Lightning erg in de picture gekomen. Het is nu vooral nodig dat er een andere groep gebruikers wordt aangesproken, niet alleen bitcoinenthousiastelingen”, zegt Jager. “Als meer bedrijven en instellingen Lightning gaan gebruiken, komen daar ook requirements uit die terugvloeien naar de infrastructuurlaag.”

Al met al is Lightning een eerste stap boven on-chain. “Je kunt niet zeven miljard mensen een kanaal op de bitcoinblockchain laten openen. Schaalbaarheid blijft een ding, maar wat we nu hebben met Lightning, is een mooie eerste stap”, zegt Jager.

Uiteindelijk moet er gewoon gebouwd worden door ontwikkelaars die het gaan toepassen. Jorijn Schrijvershof, freelance softwareontwikkelaar en binnen de Nederlandse bitcoingemeenschap een bekende naam, is ervan overtuigd dat het nog erg schort aan de kwaliteit van documentatie. “Je moet alles nog zelf uitvinden en daarom ben je al snel een expert op dit gebied. Dat komt ook doordat er nog geen grote georganiseerde partij is die zaken aanbiedt. De documentatie komt van hobbyisten, zoals ik, en dat maakt het een heel gefragmenteerd landschap.”

Complex en veel potentie

“Je bent wel met geld bezig. Een ontwikkelaar kan het zich allemaal wel in een paar weken eigen maken, maar dan? Je wilt niet een node opzetten en dan ineens je bitcoins kwijtraken. Uiteindelijk zal de markt behoefte hebben aan een nieuwe functie; iets als bitcoinnetwerktechnicus.”

Schrijvershof noemt als voorbeeld Jack Mallers, die met het bedrijf Strike Lightning-betalingen en fiat-geldbetalingen faciliteert en ook in El Salvador een belangrijke functie vervulde. “Mallers heeft heel hard geïnvesteerd in een Lightning-structuur die hij zelf heeft opgezet. Over de hele wereld heeft hij LN-nodes opgetuigd. Die staan allemaal met elkaar in verbinding met privéroutes. Dus hij heeft overal liquiditeit beschikbaar en heeft deals met lokale exchanges om lokale valuta te kunnen gebruiken. Hoe dat achter de schermen zit, is mij niet bekend. Met de basis die hij heeft opgebouwd, kun je heel goed schalen en daarbovenop diensten bouwen.”

Een goede manier om veel te leren over het netwerk, is zelf een node opzetten, iets wat hij ooit deed, maar inmiddels is die node offline. “Zelf een node hebben, is vooral praktisch als je een webshop of iets dergelijks hebt.” In zijn ogen is het een vak apart en zelf een node hebben heeft vooral tot gevolg dat je geld vaststaat en ook nog eens in een hot wallet, die met internet verbonden is met de bijbehorende risico’s.

“Bitcoins zijn programmeerbaar geld en daar kun je heel veel mee doen. Je kunt er data in opslaan. Je kunt je voorstellen dat je in de toekomst gaat betalen voor specifieke data, zoals een weersvoorspelling. Door een LN-node neer te zetten voor de website, gekoppeld met een reverse proxy zoals Aperture, en die vervolgens zo te configureren dat het verzoek alleen wordt doorgelaten als ervoor betaald is. Er is een antwoordcode in het Hypertext Transfer Protocol, of HTTP: 402 Payment Required. Die vraagt om betaling. Dan krijg je een LSAT-token, die lokaal op je computer staat, en na betaling wordt je verzoek doorgelaten. Is je token verlopen, dan moet je weer betalen. Je hebt geen database meer nodig om abonnementen en dergelijke op te slaan, dat zit gewoon allemaal het systeem, dus dat is ook goed voor de privacy. Je hebt geen gegevens meer die op straat kunnen komen te liggen en je hebt er zelf honderd procent controle over. Een ander voorbeeld is een spamfilter op je e-mail, waarbij de zender moet betalen om de mail door te laten gaan. Dat kun je doortrekken naar Twitter DM’s, gaming of eigenlijk alles waarbij betaald kan worden. Laagdrempelig en vrijwel geen transactiekosten. Prachtig toch? Zet een node op en probeer het gewoon eens. Experimenteer!”

Dit artikel verscheen 2 november 2021 op Tweakers

Krijn

Krijn Soeteman is a Dutch science and technology journalist. He majored in the history of art and architecture. After his studies he started as a music video producer. This led to producing a Museum Night at the NEMO Science Museum, which eventually led to science journalism. And much more.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *