Lightning: verschil tussen versies
k (→Node) |
|||
(21 tussenliggende versies door 6 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
Met Lightning | Met Lightning kun je razendsnel goedkope microbetalingen in [[Bitcoin|bitcoin]] doen. Aflevering 14-18 van de [[Beginnen met Bitcoin]]-podcast leggen de basis uit. | ||
'''''Zie [[#Lightning gebruiken]] als je meteen wilt beginnen.''''' | '''''Zie [[#Lightning gebruiken]] als je meteen wilt beginnen.''''' | ||
Bitcointransacties 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 firmant 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). | 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: | 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 | :Iemand zit aan de bar en bestelt een biertje. De barman turft dit af op een kaart. De avond verstrijkt, en er worden nog wat drankjes verorbert. Halverwege de avond blijkt een 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 tien drankjes besteld, en er was een restitutie, maar er vindt maar één geldtransactie plaats. We kunnen de kaart van de barman met een Lightning 'kanaal' vergelijken en de banktransactie met een on-chain Bitcoin transactie. Zie hier een analogie ter verduidelijking van het Lightning Netwerk. | ||
Wat als onze bierdrinkende klant weggaat zonder te betalen? | 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, bijvoorbeeld 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 grensgevallen 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 [https://t.me/lightningnl op Telegram].'' | ''Er is een grote community van Nederlanders met een Lightning node. Je vindt de groep [https://t.me/lightningnl op Telegram].'' | ||
= Concepten = | = Concepten = | ||
''Aflevering 14-18 van de [[Beginnen met Bitcoin]]-podcast | ''Aflevering 14-18 van de [[Beginnen met Bitcoin]]-podcast legt de basis uit.'' | ||
; Peers (nodes) | ; 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 | :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 alleen een wallet hebt dan wordt dat meestal niet als peer/node gezien; jouw telefoon is niet 24/7 online en helpt niet met het routeren van betalingen. | ||
; Kanalen | ; 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 [[Satoshi|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". | :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 [[Satoshi|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". | ||
Regel 23: | Regel 24: | ||
: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. | :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. | ||
; Capaciteit | ; Capaciteit | ||
:Het aantal | :Het aantal [[Satoshi|sats]] 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. | ||
; Commit Fee | ; Commit Fee | ||
:Bij het openen van een kanaal zal niet de volledige capaciteit te gebruiken zijn voor transacties. Een deel van de satoshi is gereserveerd voor wanneer er een éénzijdige sluittransactie (force close) voordoet. De hoogte van de reservering is dynamisch en afhankelijk van de actuele hoogte van de kosten om de sluittransactie te publiceren. | :Bij het openen van een kanaal zal niet de volledige capaciteit te gebruiken zijn voor transacties. Een deel van de satoshi's is gereserveerd voor wanneer er een éénzijdige sluittransactie (force close) voordoet. De hoogte van de reservering is dynamisch en afhankelijk van de actuele hoogte van de kosten om de sluittransactie te publiceren. | ||
; Force close | ; Force close | ||
:Als het niet lukt om | :Als het niet lukt om gezamenlijk tot een sluitingstransactie te komen, dan is een force close nodig. Dat kan bijvoorbeeld zijn als een node fraudeert, of als één van de nodes offline is. Bij een force close worden de balansen verdeeld volgens de laatste staat van het kanaal. Als Alies dus 100.000 sats had, en Bob 200.000 sats, toen ze de laatste transactie deden, dan zal de force close 100.000 sats aan Alies, en 200.000 sats aan Bob terugbetalen. Na de force close heeft de tegenpartij even de tijd om te "protesteren" tegen de force close. Als hij een verkeerde force close ziet (valsspeler met een oude state), dan mag hij een binnen een bepaalde tijd een overschijf-transactie publiceren en alle sats claimen. | ||
;[[Liquiditeit|Inkomende liquiditeit]] | ;[[Liquiditeit|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. | :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. | ||
Regel 33: | Regel 34: | ||
: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. | :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. | ||
; Lightningtransacties | ; Lightningtransacties | ||
:Zodra het kanaal open is ( | :Zodra het kanaal open is (drie 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 sats, dan zullen de balansen verschuiven. Waar Alies eerst 10 miljoen, en Bob 0 sats had, zijn de balansen na de betaling van 100.000 sats anders: Alies heeft nu nog 9.900.000 sats 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. | ||
; Netwerk | ; 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. | :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. | ||
Regel 39: | Regel 40: | ||
: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'''. | :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'''. | ||
; Roddelen | ; Roddelen | ||
:Nodes geven elkaar continu kanaalinformatie door met een proces dat | :Nodes geven elkaar continu kanaalinformatie door met een proces dat Gossiping (roddelen) heet. Elke node moet alle kanalen (gaan) kennen. Zeker als je net een node bent begonnen, zul je merken dat het één of twee dagen kan duren, voordat jouw node hoogte krijgt van het hele netwerk. Hoe meer kanalen (peers) je hebt, hoe meer en sneller je kunt roddelen, en hoe sneller je kanaalinfo doorkrijgt. | ||
; Routes | ; 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). | :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). | ||
Regel 46: | Regel 47: | ||
:Wanneer Alies Charles betaalt via Bob, zoals in het voorbeeld hierboven (Alies -> Bob -> Charles), is er sprake van een Hop (sprongetje) via Bob. Bob kan voor deze Hop een provisie rekenen, de Routing Fee. Door zijn node beschikbaar te stellen als tussenstap en daar een vergoeding tegenover te zetten, kan hij verdienen aan het routeren van transacties. Deze fees kunnen algemeen ingesteld worden voor de gehele node of per kanaal verschillen. Zo kan er aangemoedigd dan wel ontmoedigd worden om een specifiek kanaal te gebruiken, bijvoorbeeld op basis van de balans van het kanaal. | :Wanneer Alies Charles betaalt via Bob, zoals in het voorbeeld hierboven (Alies -> Bob -> Charles), is er sprake van een Hop (sprongetje) via Bob. Bob kan voor deze Hop een provisie rekenen, de Routing Fee. Door zijn node beschikbaar te stellen als tussenstap en daar een vergoeding tegenover te zetten, kan hij verdienen aan het routeren van transacties. Deze fees kunnen algemeen ingesteld worden voor de gehele node of per kanaal verschillen. Zo kan er aangemoedigd dan wel ontmoedigd worden om een specifiek kanaal te gebruiken, bijvoorbeeld op basis van de balans van het kanaal. | ||
; Sluittransactie | ; 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 | :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 coöperatieve 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 coöperative closes. | ||
; Valsspelen | ; 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 de blockchain 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. | :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 de blockchain 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. | ||
:Echter, wanneer de node van Bob offline is kan deze niet de laatste, meest actuele status verzenden. Dit is een risico waardoor Alies alsnog de oneerlijke claim kan doen. Eén van de oplossingen voor dit probleem zijn Watchtowers (uitkijktorens). Dit zijn nodes beheerd door een derde partij die voor jou de laatste status van de kanalen bijhoudt en een bericht stuurt wanneer er een 'breach'/ongeldige publicatie wordt gedaan. | :Echter, wanneer de node van Bob offline is kan deze niet de laatste, meest actuele status verzenden. Dit is een risico waardoor Alies alsnog de oneerlijke claim kan doen. Eén van de oplossingen voor dit probleem zijn Watchtowers (uitkijktorens). Dit zijn nodes beheerd door een derde partij die voor jou de laatste status van de kanalen bijhoudt en een bericht stuurt wanneer er een 'breach'/ongeldige publicatie wordt gedaan. | ||
Regel 63: | Regel 64: | ||
== Node == | == Node == | ||
[[Bestand:Nederlandse Nodes.png|miniatuur|Nodes in Nederland (archiefplaatje)]] | [[Bestand:Nederlandse Nodes.png|miniatuur|Nodes in Nederland (archiefplaatje)]] | ||
Zelf een node draaien is leuk om te doen en je draagt bij aan | Zelf een [[Bitcoin node|node]] draaien is leuk om te doen en je draagt bij aan het [[Bitcoin node|Bitcoinnetwerk]]. Met een Raspberry Pi computer, opslag voor de [[Blockchain]] en Node-software (zoals [[Umbrel]], [[MyNode]], [[RaspiBlitz]]) kun je zelf een node draaien. Er is ook een Nederlandstalige instructie op [https://docs.theroadtonode.com/ theroadtonode.com], voor zelfbouwers. | ||
Vrij veel Nederlanders draaien zelf een node, zie [https://lightningwiki.net/g/?g=-1001254160094&t=LightningNL%20%F0%9F%87%B3%F0%9F%87%B1%F0%9F%87%A7%F0%9F%87%AA deze graaf]. Als je in het Telegramkanaal [https://t.me/lightningnl LightningNL] komt kijken | Vrij veel Nederlanders draaien zelf een node, zie [https://lightningwiki.net/g/?g=-1001254160094&t=LightningNL%20%F0%9F%87%B3%F0%9F%87%B1%F0%9F%87%A7%F0%9F%87%AA deze graaf]. Als je in het Telegramkanaal [https://t.me/lightningnl LightningNL] komt kijken kun je jouw node toevoegen. | ||
Vrijwel alle node-pakketten gebruiken [[Tor]] voor anonieme verbindingen. | |||
=== Hardware === | === Hardware === | ||
Regel 75: | Regel 78: | ||
! Snel | ! Snel | ||
(~€250) | (~€250) | ||
!Snel en betrouwbaar | |||
(~€350) **** | |||
|- | |- | ||
| Computer | | Computer | ||
| [https://tweakers.net/pricewatch/1414470/raspberry-pi-4-model-b-4gb-ram.html Raspberry Pi 4B (4GB)] (€60) | | [https://tweakers.net/pricewatch/1414470/raspberry-pi-4-model-b-4gb-ram.html Raspberry Pi 4B (4GB)] (€60) | ||
| [https://tweakers.net/pricewatch/1562568/raspberry-pi-4-model-b-8gb-ram.html Raspberry Pi 4B (8GB)] (€90) | | [https://tweakers.net/pricewatch/1562568/raspberry-pi-4-model-b-8gb-ram.html Raspberry Pi 4B (8GB)] (€90) | ||
| [https://tweakers.net/pricewatch/1210221/intel-nuc-kit-nuc7cjyh-met-eu-stekker Intel NUC NUC7CJYH] (€180) | |||
|- | |- | ||
| SD-kaart | | SD-kaart | ||
| colspan="2" style="text-align:center;"| [https://tweakers.net/pricewatch/986595/sandisk-ultra-microsdxc-class-10-uhs-i-a1-uhs-class-1-64gb-+-sd-adapter.html 64GB SD-kaart] (€12) | | colspan="2" style="text-align:center;"| [https://tweakers.net/pricewatch/986595/sandisk-ultra-microsdxc-class-10-uhs-i-a1-uhs-class-1-64gb-+-sd-adapter.html 64GB SD-kaart] (€12) | ||
| - | |||
|- | |- | ||
| Voeding | | Voeding | ||
| colspan="2" style="text-align:center;"| [https://tweakers.net/pricewatch/1415202/raspberry-pi-153w-usb-c-power-supply.html 15W USB-C voeding] (€10) * | | colspan="2" style="text-align:center;"| [https://tweakers.net/pricewatch/1415202/raspberry-pi-153w-usb-c-power-supply.html 15W USB-C voeding] (€10) * | ||
| - | |||
|- | |||
|Memory | |||
| colspan="2" | - | |||
| [https://tweakers.net/pricewatch/548379/g-punt-skill-ripjaws-f4-2400c16d-8grs.html 2x4GB DDR4 2666MHz SO-DIMM] (€40) | |||
|- | |- | ||
| Blockchain opslag | | Blockchain opslag | ||
| [https://tweakers.net/pricewatch/339768/wd-elements-portable-usb-30-1tb-zwart.html Harde Schijf] (€50) ** | | [https://tweakers.net/pricewatch/339768/wd-elements-portable-usb-30-1tb-zwart.html Harde Schijf] (€50) ** | ||
| [https://tweakers.net/pricewatch/942129/samsung-portable-ssd-t5-1tb-zwart.html SSD] (€110) *** | | [https://tweakers.net/pricewatch/942129/samsung-portable-ssd-t5-1tb-zwart.html SSD] (€110) *** | ||
| [https://tweakers.net/pricewatch/1645080/samsung-870-evo-1tb.html SSD] (€110) *** | |||
|- | |- | ||
| Heatsink | | Heatsink | ||
| colspan="2" style="text-align:center;"| [https://www.kiwi-electronics.nl/com-3101?search=Raspberry%20pi&description=true Alu heatsink] of [https://www.sossolutions.nl/raspberry-pi-4-aluminium-koeling-heatsink deze] (€15) | | colspan="2" style="text-align:center;" | [https://www.kiwi-electronics.nl/com-3101?search=Raspberry%20pi&description=true Alu heatsink] of [https://www.sossolutions.nl/raspberry-pi-4-aluminium-koeling-heatsink deze] (€15) | ||
| - | |||
|- | |- | ||
| Netwerk (Optioneel) | | Netwerk (Optioneel) | ||
| colspan=" | | colspan="3" style="text-align:center;" | [https://tweakers.net/pricewatch/305850/gembird-pp6-15m-cat6-15m-grijs-wit.html 1.5m UTP cable] (€5) | ||
|- | |- | ||
| HDMI (Optioneel) | | HDMI (Optioneel) | ||
| colspan=" | | colspan="3" style="text-align:center;" |[https://tweakers.net/pricewatch/389208/startech-punt-com-hdmiadmm3-zwart.html HDMI cable] (€5) | ||
|- | |- | ||
| (Kanalen) | | (Kanalen) | ||
| colspan=" | | colspan="3" style="text-align:center;" | Reserveer ook wat geld voor lightning kanalen, dat raak je niet kwijt, maar is nodig om betalingen mee te doen. Bijvoorbeeld 100 euro. | ||
|} | |} | ||
<nowiki>*</nowiki> Koop specifiek deze voeding, andere geven vaak problemen. Mocht je toch een andere willen gebruiken, zorg dat hij in ieder geval 3 ampère kan leveren op 5 volt. | <nowiki>*</nowiki> Koop specifiek deze voeding, andere geven vaak problemen. Mocht je toch een andere willen gebruiken, zorg dat hij in ieder geval 3 ampère kan leveren op 5 volt. | ||
<nowiki>**</nowiki> Initiële synchronisatie van de blockchain duurt zo'n | <nowiki>**</nowiki> Initiële synchronisatie van de blockchain duurt zo'n drie tot vier weken | ||
<nowiki>***</nowiki> Initiële synchronisatie van de blockchain duurt zo'n | <nowiki>***</nowiki> Initiële synchronisatie van de blockchain duurt zo'n twee dagen | ||
<nowiki>****</nowiki> Voor sommigen werkt een RPi betrouwbaar, maar er zijn een significant aantal gebruikers met stabiliteitsproblemen. | |||
=== Node-software === | === Node-software === | ||
==== "Kale installatie" ==== | |||
Er zijn meerdere implementaties van de Lightning-standaarden. De meest gebruikte is [[LND]]. Verder zijn er [[C-Lightning]] en [[Eclair]]. Die software kan je zelf instellen, of je gebruikt een node-pakket als [[Umbrel lightning node|Umbrel]], zie hieronder. | |||
==== Umbrel ==== | ==== Umbrel ==== | ||
[[Umbrel lightning node|Umbrel]] is één van de gemakkelijkste en | [[Umbrel lightning node|Umbrel]] is één van de gemakkelijkste en gebruiksvriendelijke manieren om een node te draaien op een Raspberry Pi. Hiermee kun je binnen een aantal stappen zowel een bitcoin node als een lightning network node opzetten. | ||
==== Alternatieven ==== | ==== Alternatieven ==== | ||
Momenteel is Umbrel één van de meest gebruikte node softwares in Nederland. Er zijn echter meer aanbieders van dit soort installatiepakketten, bijvoorbeeld: [ | Momenteel is Umbrel één van de meest gebruikte node softwares in Nederland. Er zijn echter meer aanbieders van dit soort installatiepakketten, bijvoorbeeld: [[MyNode]] en [[RaspiBlitz]]. Wil jij jouw node geheel zelfstandig installeren, dan zou je kunnen kijken naar de gebruikshandleiding van [https://docs.theroadtonode.com/ The Road to Node]. | ||
==== Applicaties/Interfaces ==== | ==== Applicaties/Interfaces ==== | ||
Middels CLI | Middels CLI kun je [[commando's]] geven om kanalen te openen, fees aan te passen of betalingen te doen. Voor iemand die niet thuis is in de command line zijn er alternatieven die het makkelijker maken om eerdergenoemde acties uit te voeren. [[RTL|Ride The Lightning]] (RTL) en [[ThunderHub]] (TH) zijn interfaces die eenvoudig te installeren zijn in bijvoorbeeld Umbrel of MyNode. Elke interface heeft zijn eigen voordelen maar de meeste, en sowieso de belangrijkste, functionaliteiten kunnen uitgevoerd worden. | ||
== Lightning gebruiken == | == Lightning gebruiken == | ||
Je node is geïnstalleerd, de [[Blockchain|Initial Block Download]] is afgerond en je hebt de seed van de wallet van je Lightning Node veilig [[Geheime sleutel|opgeslagen]]. Wat nu? Een logische vervolgstap zou zijn om een kanaal te openen naar een goed verbonden node/peer. Hiermee wordt jouw node ook onderdeel van het netwerk en | Je node is geïnstalleerd, de [[Blockchain|Initial Block Download]] is afgerond en je hebt de seed van de wallet van je Lightning Node veilig [[Geheime sleutel|opgeslagen]]. Wat nu? Een logische vervolgstap zou zijn om een kanaal te openen naar een goed verbonden node/peer. Hiermee wordt jouw node ook onderdeel van het netwerk en kun je routeren of betalingen uitvoeren. | ||
=== Peer uitzoeken === | === Peer uitzoeken === | ||
Regel 125: | Regel 145: | ||
* Een node uit de [https://bitcoinlightning.nl/lightningnl_superhub/ SuperHub] kiezen of vragen in de Telegram groep [https://t.me/lightningNL @LightningNL]. | * Een node uit de [https://bitcoinlightning.nl/lightningnl_superhub/ SuperHub] kiezen of vragen in de Telegram groep [https://t.me/lightningNL @LightningNL]. | ||
* Een hoog gekwalificeerde node uitzoeken op [https://1ml.com/ 1ML]. | * Een hoog gekwalificeerde node uitzoeken op [https://1ml.com/ 1ML] of [https://amboss.space Amboss]. | ||
* Een node uit de BOS-lijst kiezen. Deze lijst staat in [[ThunderHub]] maar is ook [https://lightningwiki.net/bos/ hier] te vinden. | * Een node uit de BOS-lijst kiezen. Deze lijst staat in [[ThunderHub]] maar is ook [https://lightningwiki.net/bos/ hier] te vinden. | ||
* De tool van [https://moneni.com/mcb/nodematch Moneni] te gebruiken. (Hier heb je al wel een bestaand kanaal voor nodig.) | * De tool van [https://moneni.com/mcb/nodematch Moneni] te gebruiken. (Hier heb je al wel een bestaand kanaal voor nodig.) | ||
== Foutmeldingen == | == Foutmeldingen en veelgestelde vragen == | ||
=== No Route-probleem === | === No Route-probleem === | ||
Er zit een aantal voorwaarden voor betalingen: | 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 | # Kent je node alle routes van het netwerk? Je node krijgt via gossip (roddelen) binnen een paar uur of dagen na het openen van je eerste kanaal de netwerkinformatie door. Als je node de netwerkinformatie nog niet heeft, kan hij nog geen route berekenen. Op Umbrel kun je op [[Umbrel lightning node#Bekijken hoe veel routes je node kent|deze manier]] controleren hoeveel kanalen je node kent. | ||
# Heb je [[Liquiditeit|uitgaande liquiditeit]]? | # Heb je [[Liquiditeit|uitgaande liquiditeit]]? | ||
#* Je hebt kanalen nodig met lokale balans. Als jij een kanaal hebt geopend staat | #* Je hebt kanalen nodig met lokale balans. Als jij een kanaal hebt geopend staat de 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 | #* '''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 '''wél''' 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. | #* 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? | #* Zijn je peers online? | ||
'''Als | '''Als je 2 dagen een publiek kanaal hebt, dan moeten de meeste problemen verdwijnen'''. Als je meerdere kanalen hebt krijg je sneller netwerkinformatie door en gaat dat sneller. | ||
=== Reserved wallet balance invalidated === | |||
Dit betekent dat je Anchor Channels hebt, en dat (door de betaling te sturen), er niet genoeg geld in je wallet overblijft om een (eventuele) anchor close te betalen. | |||
Anchor Channels zijn een nieuwe type kanalen. Ze zorgen dat je minder betaalt bij force closes, maar het is ook nodig dat je wat geld onchain houdt om eventuele force closes te kunnen doen. Dit is de <u>Reserved wallet balance</u>. Reken op 10k sat per kanaal, tot een maximum van 100k sats. | |||
Deze gereserveerde 10k sat kan je niet uitgeven, als je dat onchain probeert te doen. Dan krijg je de melding '''Reserved wallet balance invalidated.''' | |||
'''Let op:''' je krijgt deze melding ook als de gereserveerde sats in de <u>enige UTXO</u> zitten die je hebt. In RTL kan je zien hoeveel UTXOs je hebt. Door deze ene UTXO uit te geven, zijn er geen sats meer om een anchor-channelclose te doen. Als dit het geval is, stuur dan nog wat sats naar je node (onchain). Zo heb je 2 UTXOs, en blijft er altijd eentje over voor de Reserved balance voor deze sluit-acties. | |||
=== Veranderende balansen terwijl ik niks routeer / Ik kan niet mijn hele kanaal gebruiken === | |||
Als je een kanaal opent van (bijvoorbeeld) 10 miljoen satoshi, dan staan die 10 miljoen ''in theorie'' aan jouw kant, en kan je ''in theorie'' 10 miljoen versturen. | |||
De praktijk ziet er net wat anders uit. Zo moet er een deel van het kanaal aan ieders kan blijven staan, vaak 1%. Dat betekent dus dat je nog "maar" 99% van je 10 miljoen kan sturen. | |||
Ook wordt er een "reserve balance" aangehouden. Het zijn gereserveerde satoshi voor als het kanaal gesloten moet worden. Deze reserve balance varieert, omdat de kosten van het sluiten van een kanaal ook veranderen. Als het drukker wordt in de [[Mempool]], dan worden transacties duurder, dus ook sluit-transactie, en wordt daar meer geld voor gereserveerd. | |||
[[Categorie:Lightning]] |
Versie van 6 mrt 2024 14:05
Met Lightning kun 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.
Bitcointransacties 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 firmant 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 turft dit af op een kaart. De avond verstrijkt, en er worden nog wat drankjes verorbert. Halverwege de avond blijkt een 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 tien drankjes besteld, en er was een restitutie, maar er vindt maar één geldtransactie plaats. We kunnen de kaart van de barman met een Lightning 'kanaal' vergelijken en de banktransactie met een on-chain Bitcoin transactie. Zie hier 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, bijvoorbeeld 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 grensgevallen 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 legt 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 alleen een wallet hebt dan wordt dat meestal niet als peer/node gezien; jouw telefoon is niet 24/7 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".
- 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.
- Capaciteit
- Het aantal sats 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.
- Commit Fee
- Bij het openen van een kanaal zal niet de volledige capaciteit te gebruiken zijn voor transacties. Een deel van de satoshi's is gereserveerd voor wanneer er een éénzijdige sluittransactie (force close) voordoet. De hoogte van de reservering is dynamisch en afhankelijk van de actuele hoogte van de kosten om de sluittransactie te publiceren.
- Force close
- Als het niet lukt om gezamenlijk tot een sluitingstransactie te komen, dan is een force close nodig. Dat kan bijvoorbeeld zijn als een node fraudeert, of als één van de nodes offline is. Bij een force close worden de balansen verdeeld volgens de laatste staat van het kanaal. Als Alies dus 100.000 sats had, en Bob 200.000 sats, toen ze de laatste transactie deden, dan zal de force close 100.000 sats aan Alies, en 200.000 sats aan Bob terugbetalen. Na de force close heeft de tegenpartij even de tijd om te "protesteren" tegen de force close. Als hij een verkeerde force close ziet (valsspeler met een oude state), dan mag hij een binnen een bepaalde tijd een overschijf-transactie publiceren en alle sats claimen.
- 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.
- 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.
- Lightningtransacties
- Zodra het kanaal open is (drie 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 sats, dan zullen de balansen verschuiven. Waar Alies eerst 10 miljoen, en Bob 0 sats had, zijn de balansen na de betaling van 100.000 sats anders: Alies heeft nu nog 9.900.000 sats 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.
- 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.
- 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.
- Roddelen
- Nodes geven elkaar continu kanaalinformatie door met een proces dat Gossiping (roddelen) heet. Elke node moet alle kanalen (gaan) kennen. Zeker als je net een node bent begonnen, zul je merken dat het één of twee dagen kan duren, voordat jouw node hoogte krijgt van het hele netwerk. Hoe meer kanalen (peers) je hebt, hoe meer en sneller je kunt roddelen, en hoe sneller je kanaalinfo doorkrijgt.
- 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.
- Routing Fee en Hops
- Wanneer Alies Charles betaalt via Bob, zoals in het voorbeeld hierboven (Alies -> Bob -> Charles), is er sprake van een Hop (sprongetje) via Bob. Bob kan voor deze Hop een provisie rekenen, de Routing Fee. Door zijn node beschikbaar te stellen als tussenstap en daar een vergoeding tegenover te zetten, kan hij verdienen aan het routeren van transacties. Deze fees kunnen algemeen ingesteld worden voor de gehele node of per kanaal verschillen. Zo kan er aangemoedigd dan wel ontmoedigd worden om een specifiek kanaal te gebruiken, bijvoorbeeld op basis van de balans van het kanaal.
- 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 coöperatieve 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 coöperative closes.
- 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 de blockchain 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.
- Echter, wanneer de node van Bob offline is kan deze niet de laatste, meest actuele status verzenden. Dit is een risico waardoor Alies alsnog de oneerlijke claim kan doen. Eén van de oplossingen voor dit probleem zijn Watchtowers (uitkijktorens). Dit zijn nodes beheerd door een derde partij die voor jou de laatste status van de kanalen bijhoudt en een bericht stuurt wanneer er een 'breach'/ongeldige publicatie wordt gedaan.
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. Er zijn ook wallets met extra functies als chat en podcast-speler en er zijn games. Zie voor een overzicht > Lighting Apps.
Node
Zelf een node draaien is leuk om te doen en je draagt bij aan het Bitcoinnetwerk. Met een Raspberry Pi computer, opslag voor de Blockchain en Node-software (zoals Umbrel, MyNode, RaspiBlitz) kun je zelf een node draaien. Er is ook een Nederlandstalige instructie op theroadtonode.com, voor zelfbouwers.
Vrij veel Nederlanders draaien zelf een node, zie deze graaf. Als je in het Telegramkanaal LightningNL komt kijken kun je jouw node toevoegen.
Vrijwel alle node-pakketten gebruiken Tor voor anonieme verbindingen.
Hardware
Langzaam
(~€150) |
Snel
(~€250) |
Snel en betrouwbaar
(~€350) **** | |
---|---|---|---|
Computer | Raspberry Pi 4B (4GB) (€60) | Raspberry Pi 4B (8GB) (€90) | Intel NUC NUC7CJYH (€180) |
SD-kaart | 64GB SD-kaart (€12) | - | |
Voeding | 15W USB-C voeding (€10) * | - | |
Memory | - | 2x4GB DDR4 2666MHz SO-DIMM (€40) | |
Blockchain opslag | Harde Schijf (€50) ** | SSD (€110) *** | SSD (€110) *** |
Heatsink | Alu heatsink of deze (€15) | - | |
Netwerk (Optioneel) | 1.5m UTP cable (€5) | ||
HDMI (Optioneel) | HDMI cable (€5) | ||
(Kanalen) | Reserveer ook wat geld voor lightning kanalen, dat raak je niet kwijt, maar is nodig om betalingen mee te doen. Bijvoorbeeld 100 euro. |
* Koop specifiek deze voeding, andere geven vaak problemen. Mocht je toch een andere willen gebruiken, zorg dat hij in ieder geval 3 ampère kan leveren op 5 volt.
** Initiële synchronisatie van de blockchain duurt zo'n drie tot vier weken
*** Initiële synchronisatie van de blockchain duurt zo'n twee dagen
**** Voor sommigen werkt een RPi betrouwbaar, maar er zijn een significant aantal gebruikers met stabiliteitsproblemen.
Node-software
"Kale installatie"
Er zijn meerdere implementaties van de Lightning-standaarden. De meest gebruikte is LND. Verder zijn er C-Lightning en Eclair. Die software kan je zelf instellen, of je gebruikt een node-pakket als Umbrel, zie hieronder.
Umbrel
Umbrel is één van de gemakkelijkste en gebruiksvriendelijke manieren om een node te draaien op een Raspberry Pi. Hiermee kun je binnen een aantal stappen zowel een bitcoin node als een lightning network node opzetten.
Alternatieven
Momenteel is Umbrel één van de meest gebruikte node softwares in Nederland. Er zijn echter meer aanbieders van dit soort installatiepakketten, bijvoorbeeld: MyNode en RaspiBlitz. Wil jij jouw node geheel zelfstandig installeren, dan zou je kunnen kijken naar de gebruikshandleiding van The Road to Node.
Applicaties/Interfaces
Middels CLI kun je commando's geven om kanalen te openen, fees aan te passen of betalingen te doen. Voor iemand die niet thuis is in de command line zijn er alternatieven die het makkelijker maken om eerdergenoemde acties uit te voeren. Ride The Lightning (RTL) en ThunderHub (TH) zijn interfaces die eenvoudig te installeren zijn in bijvoorbeeld Umbrel of MyNode. Elke interface heeft zijn eigen voordelen maar de meeste, en sowieso de belangrijkste, functionaliteiten kunnen uitgevoerd worden.
Lightning gebruiken
Je node is geïnstalleerd, de Initial Block Download is afgerond en je hebt de seed van de wallet van je Lightning Node veilig opgeslagen. Wat nu? Een logische vervolgstap zou zijn om een kanaal te openen naar een goed verbonden node/peer. Hiermee wordt jouw node ook onderdeel van het netwerk en kun je routeren of betalingen uitvoeren.
Peer uitzoeken
Het is aan te raden om een kanaal te maken met een goed verbonden peer. In de Nederlandstalige community is er de SuperHub, dit zijn een aantal grote nodes die onderling hebben afgesproken om de routing fees onderling laag te houden. Door met één of meer van deze nodes te verbinden ben je direct al goed verbonden met de rest van de wereld. Methoden om een geschikte peer uit te zoeken zijn:
- Een node uit de SuperHub kiezen of vragen in de Telegram groep @LightningNL.
- Een hoog gekwalificeerde node uitzoeken op 1ML of Amboss.
- Een node uit de BOS-lijst kiezen. Deze lijst staat in ThunderHub maar is ook hier te vinden.
- De tool van Moneni te gebruiken. (Hier heb je al wel een bestaand kanaal voor nodig.)
Foutmeldingen en veelgestelde vragen
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 of dagen na het openen van je eerste kanaal de netwerkinformatie door. Als je node de netwerkinformatie nog niet heeft, kan hij nog geen route berekenen. Op Umbrel kun 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 de 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 wél 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 je 2 dagen een publiek kanaal hebt, dan moeten de meeste problemen verdwijnen. Als je meerdere kanalen hebt krijg je sneller netwerkinformatie door en gaat dat sneller.
Reserved wallet balance invalidated
Dit betekent dat je Anchor Channels hebt, en dat (door de betaling te sturen), er niet genoeg geld in je wallet overblijft om een (eventuele) anchor close te betalen.
Anchor Channels zijn een nieuwe type kanalen. Ze zorgen dat je minder betaalt bij force closes, maar het is ook nodig dat je wat geld onchain houdt om eventuele force closes te kunnen doen. Dit is de Reserved wallet balance. Reken op 10k sat per kanaal, tot een maximum van 100k sats.
Deze gereserveerde 10k sat kan je niet uitgeven, als je dat onchain probeert te doen. Dan krijg je de melding Reserved wallet balance invalidated.
Let op: je krijgt deze melding ook als de gereserveerde sats in de enige UTXO zitten die je hebt. In RTL kan je zien hoeveel UTXOs je hebt. Door deze ene UTXO uit te geven, zijn er geen sats meer om een anchor-channelclose te doen. Als dit het geval is, stuur dan nog wat sats naar je node (onchain). Zo heb je 2 UTXOs, en blijft er altijd eentje over voor de Reserved balance voor deze sluit-acties.
Veranderende balansen terwijl ik niks routeer / Ik kan niet mijn hele kanaal gebruiken
Als je een kanaal opent van (bijvoorbeeld) 10 miljoen satoshi, dan staan die 10 miljoen in theorie aan jouw kant, en kan je in theorie 10 miljoen versturen.
De praktijk ziet er net wat anders uit. Zo moet er een deel van het kanaal aan ieders kan blijven staan, vaak 1%. Dat betekent dus dat je nog "maar" 99% van je 10 miljoen kan sturen.
Ook wordt er een "reserve balance" aangehouden. Het zijn gereserveerde satoshi voor als het kanaal gesloten moet worden. Deze reserve balance varieert, omdat de kosten van het sluiten van een kanaal ook veranderen. Als het drukker wordt in de Mempool, dan worden transacties duurder, dus ook sluit-transactie, en wordt daar meer geld voor gereserveerd.