Lightning

Uit BitcoinWiki.nl

Met Lightning kan je razendsnel goedkope microbetalingen in bitcoin doen. Aflevering 14-18 van de Beginnen met Bitcoin-podcast leggen de basis uit. Zie #Lightning gebruiken als je meteen wilt beginnen.

Bitcoin transacties zijn relatief kostbaar. Dat komt omdat er maar een beperkte ruimte is op de blockchain: zo'n 1500 transacties per blok (per 10 minuten). Oftewel zo'n 9000 transacties per uur. (Credit card firmart Visa kan 10-duizenden transacties per seconde aan.) Kortom, Bitcoin is geen snelheidsmonster. Alle mensen die een Bitcoin-transactie aanbieden, concurreren om een plaatsje in een blok op de blockchain. Dit drijft de prijs voor een 'toegangskaartje' ('fee') naar de blockchain op. (Tot wel enige tientallen euro's per transactie in hectische perioden). Om toch meer transacties mogelijk te maken, is een systeem ontwikkeld dat de transacties (tijdelijk) niet via Bitcoin's blockchain laat lopen. Een analogie ter verduidelijking:

Iemand zit aan de bar en bestelt een biertje. De barman (m/v) turft dit af op een kaart. De avond verstrijkt, en er worden nog wat drankjes verorbert. Halverwege de avond blijkt 1 biertje bedorven: de barman streept de bijbehorende 'turf' door op de kaart. Als de klant naar huis gaat, vraagt de barman de klant de rekening te betalen. Er zijn misschien wel 10 drankjes besteld, en er was 1 restitutie, maar er vindt maar 1 geld-transactie plaats. We kunnen de kaart van de barman met een Lightning 'kanaal' vergelijken en de bank-transactie met een on-chain Bitcoin transactie. Ziehier een analogie ter verduidelijking van het Lightning Netwerk.

Wat als onze bierdrinkende klant weggaat zonder te betalen? Een remedie zou kunnen zijn dat klanten die op de pof bestellen eerst een borg betalen, bijv 50 euro op de bar leggen. Maar wat als de barman zich niet netjes gedraagt en de 50 euro pakt en de zaak sluit voordat ie ook maar één biertje heeft geschonken? Met al dat soort grens-gevallen moet het Lightning Protocol rekening houden en oplossen, wil het een serieus betalingsnetwerk worden.

Er is een grote community van Nederlanders met een Lightning node. Je vindt de groep op Telegram.

Concepten

Aflevering 14-18 van de Beginnen met Bitcoin-podcast leggen de basis uit.

Peers (nodes)
De deelnemers aan het Lightning-netwerk. Als je zelf een node hebt dan ben je ook een peer. Als je verbindt met een andere node, dan heb je een peer-to-peer-connectie gemaakt. Als je enkel een wallet hebt dan wordt dat meestal niet als peer/node gezien; jouw telefoon is niet 24x7 online en helpt niet met het routeren van betalingen.
Kanalen
De basis van Lightning zijn kanalen. Simpel gezegd zijn dit afspraken tussen twee peers, bijvoorbeeld Alies en Bob. Alies heeft 0.1 bitcoin (10 miljoen sats) op haar node gezet, en gaat een kanaal openen van deze 10 miljoen sat. Ze geeft aan een kanaal met Bob te willen openen, en de nodes maken een on-chain Opentransactie transactie met een capaciteit van 10 miljoen sat. Hiermee zetten ze 10 miljoen "vast".
Capaciteit
Het aantal satoshi dat wordt vastgezet voor een kanaal is de capaciteit. De capaciteit kan niet veranderen. In het begin staat de capaciteit in principe aan de "kant" van de opener: als het kanaal gesloten wordt dan komen die sats terug naar de opener.
Opentransactie
Bij het openen van een kanaal spreken de twee nodes een transactie af. In de basis staat in deze transactie: "Alies krijgt 10 miljoen sats terug bij het sluiten van dit kanaal, Bob krijgt niks". Alies heeft namelijk recht op haar 10 miljoen sats, het waren per slot van rekening haar sats (bitcoin) die ze gebruikte voor het openen. We noemen dit de kanaalstatus.
Balans
De capaciteit van het kanaal is altijd verdeeld tussen de peers. In het voorbeeld staat na openen 10 miljoen sats aan de kant van Alies, en 0 sats aan de kant van Bob. Dit kanaal is overigens "uit balans", en door transacties te doen van Alies naar Bob, zullen de balansen veranderen.
Lightningtransacties
Zodra het kanaal open is (3 bevestigingen van de Opentransactie), kunnen er betalingen worden gedaan. Alies kan met dit open kanaal een betaling doen naar Bob, omdat zij sats aan haar kant van het kanaal heeft staan. Bob kan (in dit kanaal) geen betalingen doen naar Alies, er staan namelijk geen sats aan zijn kant om naar Alies te verschuiven. Als Alies een betaling doet, van bijvoorbeeld 100 000 sat, dan zullen de balansen verschuiven. Waar Alies eerst 10 miljoen, en Bob 0 sats had, zijn de balansen na de betaling van 100 000 sat anders: Alies heeft nu nog 9 900 000 sat en Bob heeft nu 100 000 sat. Deze nieuwe kanaalstatus wordt tussen de peers afgesproken. Ook maken Alies en Bob een sluit-transactie. De sluittransactie zegt: "Van de vastgezette 10 miljoen sats uit de Openingstransactie, krijgt Alies 9 900 000 sats en Bob 100 000 sats". De sluit-transactie wordt door beiden getekend. Deze sluit-transactie publiceren ze NIET op de blockchain. Ze bewaren hem voor als er wat misgaat.
Valsspelen
Peers kunnen proberen vals te spelen. Alies zou bijvoorbeeld kunnen proberen 10 miljoen sats (in plaats van haar werkelijke 9 900 000 sats) te claimen door de oude kanaalstatus te publiceren (de transactie van haar schijf op deblockchain publiceren). Gelukkig houdt de node van Bob houdt continu de transacties bij. Als hij ziet dat Alies een oneerlijke claim doet, kan hij dit bewijzen aan het netwerk door de nieuwere status te laten zien, Bob heeft namelijk een sluittransactie met nieuwere status, en die transactie is zelfs getekend door Alies (toen ze de vorige Lightningtransactie deden)! Bob mag nu de gehele capaciteit claimen. Zo blijft Lightning eerlijk.
Inkomende liquiditeit
Toen Alies haar kanaal van 10 miljoen sats opende, stonden al die sats "aan haar kant" (zie Balans). Ze kon 10 miljoen sats overmaken. Ze had hier uitgaande liquiditeit. Het voorbeeldkanaal gaf haar echter geen inkomende liquiditeit. Er stonden geen sats aan de andere kant van dit kanaal, om te kunnen ontvangen. Dat is de basis van inkomende liquiditeit: dat je (als node) kanalen hebt met sats aan de andere kant van het kanaal. Als mensen kanalen naar jou openen krijg je inkomende liquiditeit. En als je betalingen doet, verschuiven sats naar de andere kant van het kanaal, en dat wordt dan ook inkomende liquiditeit.
Netwerk
Alle nodes samen maken het netwerk. Het mooie van Lightning is dat Alies in bovenstaand scenario ook naar Charles kan sturen, als Bob een kanaal met Charles heeft. De betaling neemt dan de route Alies -> Bob -> Charles.
Invoice
Een betaalverzoek. Zowel nodes als wallets kunnen deze betaalverzoeken maken. Het is een lang stuk tekst dat begint met lnbc1, en meestal wordt het ook een QR-code. De betaler scant de invoice, zijn wallet of node berekent een route en betaalt.
Routes
Betalingen over het Lightningnetwerk nemen routes. In het voorbeeld hierboven hebben Alies en Bob een kanaal, net als Bob en Charles. Alies kan Charles betalen met de route Alies -> Bob -> Charles. Het is hierbij nodig dat: (1) Alle kanalen voldoende capaciteit hebben, (2) De routes niet te duur zijn, en (3) Alle kanalen actief zijn (geen offline peers).
Als aan deze voorwaarden is voldaan, kan de betaling gebeuren. Als één van deze dingen mist, of Alies weet bijvoorbeeld niet van het kanaal van Bob naar Charles (zie roddelen), dan zal ze een NO ROUTE-fout krijgen: er is geen route waar de betaling overheen kan.
Roddelen
Nodes geven elkaar continu kanaalinformatie door met een proces dat Gossipping (roddelen) heet. Elke node moet alle kanalen (gaan) kennen. Zeker als je net een node bent begonnen, zal je merken dat het 1 of 2 dagen kan duren na het openen van je kanaal, voordat jouw node hoogte krijgt van het hele netwerk. Hoe meer kanalen (peers) je hebt, hoe meer/sneller je kan roddelen, en hoe sneller je kanaalinfo doorkrijgt.
Sluittransactie
Als de peers klaar zijn met het kanaal, kunnen ze de sluittransactie publiceren en zo onchain hun "echte bitcoin" terugkrijgen. Ze krijgen de bitcoin terug volgens de laatste status. Als de twee nodes het eens zijn over de status (en (dus) allebei online zijn), dan zal dit een cooperatieve close zijn. Als er één van de twee offline is, zal het een force close zijn, waar de meest recente status wordt gepubliceerd. Deze force closes zijn duurder dan cooperative closes.

Lightning gebruiken

Er zijn grofweg twee manieren om Lightning te gebruiken. Een wallet is het makkelijkst. Je zet er bitcoin op, zet die bitcoin om naar Lightning-bitcoin en kan Lightning gebruiken.

Geavanceerde gebruikers kunnen zelf een node opzetten. Een node is altijd online, routeert betalingen en heeft wat werk nodig om op te zetten.

Wallet

Het makkelijkst is om Blue Wallet op je telefoon te installeren, als je Lightning wil gebruiken. Het Lightning-gedeelte is custodial, wat betekent dat zij alles regelen. Dat maakt het makkelijker in gebruik.

Node

Zelf een node draaien is leuk om te doen. Met een Raspberry Pi-computer, wat opslag voor de Blockchain en Node-software (zoals Umbrel) kan je zelf een node draaien.

Umbrel

Het makkelijkst is om Umbrel te gebruiken op een Raspberry Pi.

Hardware

Langzaam

(Ongeveer 150 euro)

Snel

(Ongeveer 250 euro)

Computer Raspberry Pi 4B (4GB)

(60 euro)

Raspberry Pi 4B (8GB)

(90 euro)

SD-kaart 64GB SD-kaart

(12 euro) Om besturingssysteem op te zetten

Voeding 15W USB-C voeding

(10 euro) Tip: koop geen andere

Blockchain opslag Harde Schijf

(50 euro) Blockchain syncen duurt een paar weken

SSD

(125 euro) Blockchain syncen duurt een paar dagen

Heatsink Alu heatsink of deze

(15 euro)

Netwerk (Optioneel) 1.5m UTP cable

(1 euro)

HDMI (Optioneel) HDMI cable

(5 euro)

(Kanalen) Reserveer ook wat geld voor kanalen, dat raak je niet kwijt, maar is nodig om betalingen mee te doen. Bijvoorbeeld 100 euro.

<comments />