Lightning: The Ring of Fire

ringoffire

De Ring of Fire; een cirkel van betaalkanalen, waarbij je met één druk op de knop een balanceringsact uit kan voeren. Wat klinkt als een show uit het circus, is de nieuwe trend onder participanten in het Lightning netwerk. Wat is het precies, en wat kan je ermee?

Wat is een Ring of Fire?

Om te begrijpen waarom een ??Ring of Fire nuttig is, moeten we enige basiskennis van het Lightning Network hebben. Het Lightning Network is een tweedelaags betalingsprotocol, ontworpen om het aantal mogelijke bitcoinbetalingen op te kunnen schalen. Betalingen tussen nodes op het Lightning Network worden mogelijk gemaakt door zogenaamde Âpayment channelsÂ. Deze betaalkanalen zijn in feite multi-sig wallets waarin de deelnemende nodes een bepaald bedrag aan bitcoin storten. Alleen de transacties die gedaan dienen te worden voor het openen en het sluiten van zo'n betaalkanaal worden opgenomen in de bitcoinblockchain. Alle betalingen daartussen (state-changes) worden alleen geregistreerd door de twee verbonden nodes onderling.

Hoewel dit in theorie goed klinkt, leidde het in de praktijk tot een probleem. Kanalen worden over het algemeen vanaf één kant gefinancierd wanneer ze worden geopend (de kant van de node die het kanaal initieert). Dit betekent dat deze node bij het openen van een kanaal alleen lokale capaciteit heeft. Hierdoor kan een node in eerste instantie slechts betalingen versturen, en niet ontvangen. Om transacties te kunnen ontvangen, heb je nodes nodig die dus een kanaal naar jou openen. Dat is makkelijker gezegd dan gedaan. Hoe zorg je ervoor dat andere nodes een kanaal voor je openen? Dit is nog moeilijker voor nieuwe nodes die nog niet goed verbonden zijn met de rest van het netwerk, of überhaupt net komen kijken in de wondere wereld van Lightning.

Goed verbonden nodes, met een hoge uptime en goed gefinancierde kanalen, fungeren als een magneet voor andere nodes. Nodebeheerders zullen deze high-end nodes eenvoudig vinden op sites zoals 1ML om vervolgens een kanaal te openen. Hierdoor krijgen de tot dan toe ook al goed verbonden nodes er weer extra liquiditeit bij. Waar het logisch is dat men graag verbonden is met een knooppunt met veel connecties, is het ook logisch dat niemand een connectie opzoekt met een doodlopende weg. Dit is dus een zelfversterkend effect, waarbij er steeds grotere knooppunten ontstaan.

"Als de berg niet naar Mohammed wil, dan moet Mohammed naar de berg komen".

Als nieuwe node die op zoek is naar de inkomende capaciteit om betalingen te kunnen ontvangen, moet je dus actief zoeken naar andere nodes die een kanaal naar jou willen openen. Een tijdlang gebeurde dit vooral door de juiste mensen te kennen. Actief zijn in Lightning Telegramgroepen resulteerde vaak in onderlinge afspraken om beiden een kanaal naar elkaar te openen. Hoewel deze aanpak werkt, heeft deze ook enkele nadelen. Het proces (als je het al zo mag noemen) is nogal ad-hoc, hangt af van een hoge mate van vertrouwen en heeft de neiging om te centraliseren rond de grote, goed verbonden nodes. Het netwerk begon eruit te zien als een gecentraliseerd netwerk, waar we in theorie liever een gedecentraliseerd of zelfs een gedistribueerd netwerk zouden willen creëren.

rofnetwork

Om dit probleem aan te pakken documenteerden twee ontwikkelaars, SoulExporter en Czino, een gestructureerd proces om: Âde samenwerking te versterken en te verbeteren, door middel van een concept met een ring van nodes. Het dient als een sjabloon om nodebeheerders bij elkaar te brengen en elkaar te verbinden. Ze noemden deze ring van nodes "The Ring of Fire".

Hoe werkt het?

De voordelen zouden duidelijk moeten zijn: het opzetten van zulke Rings of Fire zorgt voor een verbroederende community, een uitdijend netwerk en meer liquiditeit. Maar hoe werkt het? Eenieder die een node wil opzetten, en opzoek is naar meer liquiditeit, en dus betaalkanalen, verenigde zich in Telegramgroepen of op websites waar de coördinatie van de te vormen ringen plaats vindt.

Deze ontmoetingsplaatsen fungeren als een soort marktpleinen, waar vraag en aanbod aan elkaar gematcht wordt. Hierbij zijn vooral twee variabelen van belang; de grootte van de ring, dus hoeveel participanten samen een kring gaan vormen, en de grootte van de betaalkanalen. Deze variabelen worden vooraf vastgesteld, zodat eenieder kan kiezen in welk soort ring zij graag mee zouden willen doen.

Wanneer de plaatsen gevuld zijn, en iedereen dus dezelfde variabelen zal gaan hanteren, kan het proces van het vormen van de ring starten. Vaak worden bij grotere ringen de verschillende delen van de kring in stukjes opgeknipt, waarbij een teamcaptain er eerst voor zorgt dat het voor iedereen duidelijk is wat er moet gebeuren. Lightning is nog steeds in de experimentele fase, en er zijn een hoop participanten die pas net, of zelfs voor het eerst, met Lightning aan de slag gaan. Het is daarbij voor iedereen van belang dat iedereen goed op de hoogte is van de te nemen stappen. Dat is natuurlijk ook een groot deel van de voldoening, waarbij iedereen elkaar helpt om het grotere doel, een gebalanceerde Ring Of Fire, te kunnen bereiken.

Wanneer de cirkel op papier is uitgetekend, en duidelijk is wie een kanaal naar wie zal moeten gaan openen, kunnen de betaalkanalen geopend worden. Visualiseer hierbij dat elke participant een nummer heeft gekregen. Bij twintig participanten zijn er dus twintig nummers uitgedeeld. Nummer één opent een kanaal met nummer twee, twee met drie, en zo door totdat nummer twintig de ring kan sluiten door een kanaal te openen naar nummer 1. Et voila, de ring is nu een feit! Hij staat echter nog niet in lichterlaaie.

Balanceren

Zoals we eerder hebben aangehaald, was het probleem bij het openen van een kanaal dat je in eerste instantie slechts kan versturen, en niet kan ontvangen. Nu de ring is gevormd kun je zowel versturen als ontvangen. Het is echter op dit moment nog slechts een rotonde, waarop de betalingen maar één richting op kunnen. Als nummer twee in de ring een betaling wil ontvangen van nummer drie, dan dienen alle andere nodes gebruikt te worden. De betaling dient namelijk, door die eenrichtingsweg, via node vier, vijf, zes en zo voorts door te worden gestuurd, totdat het bij node twee uitkomt. Dat is verre van ideaal, doordat hierdoor ook alle nodes bereikbaar en beschikbaar dienen te zijn op het moment van betalen.

Om een single-point-of-failure uit te sluiten, kan ervoor gezorgd worden dat de kanalen allemaal gebalanceerd worden. In theorie zouden alle nodes, op goed vertrouwen, de helft van hun geopende kanaal kunnen doorsturen naar de volgende node. Dit met de goede hoop dat ze het uiteindelijk terugontvangen van node vóór hen.

Dit wringt natuurlijk met het streven om vertrouwensloos betalingen te kunnen doen. Daarom is er nog een andere oplossing om de ring in balans te krijgen; de circular balance. Met de circular balance kan je een betaling naar jezelf sturen. Hiervoor gebruik je andere nodes in het netwerk, waardoor de local en remote balansen van kanalen dus veranderen. Voor de circular balance dien je aan te geven hoeveel satoshi's er verstuurd dienen te worden, en vanuit welk kanaal deze uiteindelijk weer terug moeten worden ontvangen. Hiervoor is van belang dat de juiste weg gekozen wordt, met alle nodes uit de ring als tussenstations. Doordat de betaling, vaak de helft van de capaciteit van het kanaal, door de hele ring vliegt, hebben alle deelnemers vertrouwensloos de kanalen gebalanceerd zien worden. Een soort ontbranding van de Olympische vlam, al zeg ik het zelf! Het gevolg is nu dat alle nodes betalingen kunnen sturen, én ontvangen, via de nodes aan allebei de kanten van de kring.

Meer weten? Het hele proces en de ervaringen, over hoe een community een ring vormde van 65 nodes, staan beschreven op de website van Satoshi Radio.

Satoshi Radio's Ring of Fire