Det kan være en udfordring at prøve at navigere i forskellige Lightning-implementeringer. Selvom der oprindeligt var tre implementeringer: c-lyn, eclair og lnd, fortsætter flere med at komme ud af træværket hele tiden med rype, rust-lyn og Electrum, den seneste til at komme ind i kampen.
Ofte ser det ud til, at udviklere og håbefulde udviklere vælger at bruge eller bidrage til en bestemt implementering baseret på det sprog, det er skrevet på. Kender du Scala? Vælg eclair. Spændt af Rust potentiale? Vælg rust-lyn. Der er dog andre vigtige overvejelser såsom målene, designfilosofierne, brugssager og kompromiser for de forskellige implementeringer. Derudover, bare fordi en implementering er skrevet på et bestemt sprog, betyder det ikke nødvendigvis, at du er forpligtet til at kode på dette sprog for at bidrage til økosystemet omkring den implementering..
De nye kontraster mellem lnd og rust-lyn implementeringer blev udforsket på et panel på Breaking Bitcoin 2019 og i denne Bitcoin Magazine artikel. Mens lnd forsøger at fjerne belastningen fra udviklere og levere ultimativ funktionalitet ud af kassen, søger rust-lyn at tilbyde ultimativ fleksibilitet med udviklere, der opfordres til at medbringe deres egne komponenter og placere dem i.
I modsætning hertil tilbyder c-lyn en tredje vej. Det opretholder en robust og sikker kerne, der er designet til ikke at blive tweaked eller erstattet af udvikleren. Fleksibilitet og yderligere funktionalitet er tilgængelig ved brug af plugins, der kan skrives af udvikleren på forskellige sprog såsom Python eller Go. Målet er, at c-lightning økosystemet skal fremstå som et testbed til at eksperimentere med nye banebrydende funktioner, tidligere terrænet for andre implementeringer som f.eks. Lnd og eclair uden at ofre kernens ydeevne og robusthed.
Plugins er underprocesser, der startes af den vigtigste lightningd-dæmon. De arbejder i samarbejde med lightningd. Eventuelle plugins, der er overskydende til kravene, behøver ikke køres. Nogle plugins har brug for visse kroge, der skal introduceres i lightningd, der giver plugins besked om interne begivenheder og / eller ændrer lightningd’s opførsel..
De første C-Lightning-plugins
Blockstream har en serie af mellemstore blogindlæg for at fremvise nogle af de første plugins skrevet af c-lightning-teamet. Disse inkluderer “Sammendrag” -plugin, som giver et resumé af nodestatus inklusive satoshis onchain, hvad det svarer til i fiat-termer, antal peers, antal kanaler, hvor afbalanceret de er osv..
Pluggen “Probe” bestemmer, om der er en rute til at foretage en betaling til en bestemt knude i netværket, returnerer det krævede gebyrniveau og angiver, hvilke kanaler der forhindrer en vellykket betaling. Dette kan bruges til at forberede grundlaget for en fremtidig betaling eller blot til at udforske netværkets topologi.
Plugin “Prometheus” indsamler data om ydeevnen for din node for at give visualiseringer og alarmer. Med alle disse plugins kan du vælge at bidrage til pluginet ved at tilføje en funktion eller opbygge din egen fra bunden.
Community-plugins
I alt er der 16 “community curated” plugins til c-lightning tilgængelige i skrivende stund. Disse inkluderer en plugin til autopilot portet fra et bibliotek bygget af Rene Pickhardt. Autopiloter beslutter, hvilke noder der skal åbnes kanaler med på brugerens vegne. Brugeren skal fortælle autopiloten procentdelen af midler under deres kontrol, antallet af kanaler, der skal åbnes, og den mindste kanalstørrelse. Autopiloten skal også underrettes af lightningd, når kanaler åbnes og lukkes af eksterne parter. At opbygge en effektiv autopilot er udfordrende, da brugerpræferencer, såsom at maksimere sandsynligheden for en vellykket betaling, kan være i konflikt med netværkssundheden, såsom niveauet for decentralisering.
Der er også en plugin til genbalancering, der flytter likviditet mellem brugerens kanaler for at sikre, at der er tilstrækkelig indgående og udgående likviditet og en fakturafri betalings plugin, som giver brugeren mulighed for at foretage en betaling uden først at modtage en faktura. Når du kører c-lightning, kan du vælge at slå enhver kombination af disse plugins til eller fra.
Som Lisa Neigut (@niftyneisagde i hende tweetstorm, c-lightning leverer ikke “en standardiseret HTTP-tilgængelig grænseflade uden for boksen eller en godkendelsesplan” til tredjeparts appudviklere som lnd gør. Men community-bygget plugins giver mulighed for at opbygge ækvivalenter til c-lightning, der findes i andre implementeringer.
Kristaps Kaupe har startet en GitHub repo til plugins, der efterligner nogle lnd-kommandoer. Andre pluginforfattere, der er værd at fremhæve, er Richard Bondi, der har skrevet en samling af plugins i Go, inklusive et plugin til at forbyde jævnaldrende; fiatjaf, der har skrevet et plugin, der implementerer LN URL at hjælpe betaleren med at interagere med betalingsmodtageren og Conor Scott, der har skrevet et antal plugins i Python inklusive et plugin til at oprette kanaler med top kapacitet noder. Langt om længe, Justin Moon har bygget et proof-of-concept-plugin til at finansiere Lightning-kanaler med hardware-tegnebøger.
Udfordringerne ved plugins
Selvom denne plugin-arkitektur ser ud til at tilbyde det bedste fra begge verdener, giver det nogle udfordringer og potentielle ulemper. Det er ikke klart på dette tidspunkt, om den ultimative fleksibilitet ved rust-lyn betyder, at den er bedre egnet til eksisterende Bitcoin-tegnebøger, der søger at integrere Lyn i deres eksisterende kodebase.
Når antallet af community-plugins multipliceres, og værdien af Bitcoin, der er afhængig af disse plugins, øges, vil sikkerhed og kurering være kritisk. Der vil uundgåeligt være dobbeltarbejde og overlapning mellem plugins.
Curation er udfordrende, fordi det effektivt (uofficielt, advarselstom) anbefaler, hvilke plugins der skal bruges, og hvilke der ikke bør. Uden curation bliver det umuligt for brugere og udviklere at komme i gang hurtigt uden at undersøge alle de konkurrerende plugins. Der er et argument for, at nogle sprog (og nogle udviklere!) Er bedre egnet til at skrive sikkerhedskritisk software. De særligt farlige JSON-RPC-metoder kan dog kun installeres med udviklerindstillingen og er kun beregnet til test og fejlretning med hjælp fra c-lightning-teamet. Der er også vejledning til rådighed om de farer, som en plugin-udvikler kan pådrage sig, når de udnytter en bestemt krog, der kan ændre standardadfærden for c-lightning.
Det er ikke tilfældet, at denne tilgang skaber et perfekt tilladelsesløst miljø for udviklere, da nogle fremtidige plugins stadig vil kræve, at yderligere kroge flettes ind i c-lightning-kodebasen af c-lightning-teamet. For eksempel er der en krog til at lette et vagttårns-plugin diskussion i skrivende stund. Det er muligt, at nogle kroge ikke flettes på grund af sikkerhedsproblemer eller detaljer om implementering.
Det er tilbage at se, om forekomster af c-lynnoder, der kører forskellige sæt plugins, forårsager kompatibilitetsproblemer mellem c-lynnoder eller med andre implementeringer. Det er allerede udfordrende at sikre kompatibilitet mellem forskellige implementeringer, forudsat at c-lyn-noder alle kører den samme frigivelse. Eksperimentering er dog vigtig, og erfaringer fra dette eksperiment vil vise sig at være uvurderlige, når vi færdiggør BOLT-specifikationerne til Lightning-protokollen.
London Bitcoin Devs
Muligheden for at opbygge og lege med nye plugins på et bredt udvalg af forskellige sprog trækker udviklere til at bygge oven på c-lightning. Antoine Poinsot (@darosior) kom til London for at præsentere ved London Bitcoin Devs møde i marts 2020. Poinsot udvikler en plugin manager kaldes Reckless, som vil tilbyde et udvalg af plugins til brugeren og starte de valgte plugins dynamisk. Han har også bygget en RPC-kommandokrog, der gør det muligt for et plugin at overtage enhver RPC-kommando og ændre den. Dette er potentielt hensynsløst og eksperimentelt, da RPC-kommandoer er, hvordan brugere interagerer med lightningd. Hvis RPC-kommandoer kan accepteres, afvises eller ændres, åbner det et antal brugssager men også muligheder for brugere at miste deres midler.
Denne RPC kommandokrog dannede grundlaget for Rusty Russells seneste præsentation på online Boltathon 2. Der er stadig en hel række plugins, der kan bygges ud fra trampolin routing til HODL-fakturaer, og Christian Decker forventer “Der er allerede et plugin, der gør det” for at blive et meme. I så fald kan Decker og c-lightning-samfundet måske bare få deres arbejde skåret ud for at kurere denne nye jungle af plugins.
Tak til Antoine Poinsot og Christian Decker for deres bidrag til denne artikel.