Lightning: verschil tussen versies
k (→Node) |
|||
Regel 54: | Regel 54: | ||
== Node == | == Node == | ||
Zelf een node draaien is leuk om te doen. Met een Raspberry Pi | Zelf een node draaien is leuk om te doen en je draagt bij aan de Bitcoin [[blockchain]]. Met een Raspberry Pi computer, opslag voor de [[Blockchain]] en Node-software (zoals [[Umbrel]], [https://mynodebtc.com/ MyNode], [https://raspiblitz.org/ RaspiBlitz]) kan je zelf een node draaien. | ||
=== Umbrel === | === Umbrel === | ||
[[Umbrel lightning node|Umbrel]] is één van de gemakkelijkste en gebruiksvriendelijkste manier om een node te draaien op een Raspberry Pi. | |||
=== Hardware === | === Hardware === |
Versie van 8 mrt 2021 13:38
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. Zie BlueWallet voor een simpel beginnetje.
- Geavanceerde gebruikers kunnen zelf een node opzetten. Een node is altijd online, routeert betalingen en heeft wat werk nodig om op te zetten. Umbrel is een makkelijker manier om een node op te zetten.
Wallet
Het makkelijkst is om BlueWallet op je telefoon te installeren, als je Lightning wil gebruiken.
Node
Zelf een node draaien is leuk om te doen en je draagt bij aan de Bitcoin blockchain. Met een Raspberry Pi computer, opslag voor de Blockchain en Node-software (zoals Umbrel, MyNode, RaspiBlitz) kan je zelf een node draaien.
Umbrel
Umbrel is één van de gemakkelijkste en gebruiksvriendelijkste manier om een node te draaien 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. |
Foutmeldingen
No Route-probleem
Er zit een aantal voorwaarden voor betalingen:
- Kent je node alle routes van het netwerk? Je node krijgt via gossip (roddelen) binnen een paar uur/dagen de netwerkinformatie door. Als je node de netwerkinformatie nog niet heeft, kan hij nog geen route berekenen. Op Umbrel kan je op deze manier controleren hoeveel kanalen je node kent.
- Heb je uitgaande liquiditeit?
- Je hebt kanalen nodig met lokale balans. Als jij een kanaal hebt geopend staat het balans aan jouw kant (goed).
- Kanaalreserve: Er moet altijd ongeveer 1% van de balans aan iedere kant van het kanaal blijven. Ook wordt er een reservering gemaakt voor het geval het kanaal gesloten wordt. Dit betekent dat er altijd een percentage <5% niet-verzendbaar is. Het zorgt dat mensen beide partijen "iets te verliezen" hebben als ze valsspelen. Behalve on-chain fees ben je nog WEL eigenaar van deze sats en krijg je ze gewoon terug bij sluiten.
- De uitgaande route is mogelijk te duur. Als degenen met wie je kanalen hebt te hoge uitgaande fees hebben, zal jouw wallet niet willen betalen.
- Zijn je peers online?
Als/zodra je 2 dagen een publiek kanaal hebt, dan moeten de meeste problemen verdwijnen. Als je meerdere kanalen hebt krijg je sneller netwerkingormatie door en gaat dat sneller.
<comments />