Pokus o navigaci v různých implementacích Lightning může být výzvou. Ačkoli původně existovaly tři implementace: c-lightning, eclair a lnd, další ze dřeva vycházejí stále, ptarmigan, rez-blesk a Electrum nejnovější, které vstoupily do boje.

Často se zdá, že se vývojáři a začínající vývojáři rozhodnou použít nebo přispět ke konkrétní implementaci na základě jazyka, ve kterém je napsán. Znáte Scala? Vyberte si Eclair. Jste nadšení potenciálem Rustu? Vyberte blesk. Existují však další klíčové úvahy, jako jsou cíle, filozofie designu, případy použití a kompromisy různých implementací. Jen proto, že implementace je napsána v určitém jazyce, nemusí nutně znamenat, že musíte kódovat v tomto jazyce, abyste přispěli k ekosystému kolem této implementace..

Vznikající kontrasty mezi implementacemi lnd a rust-lightning byly prozkoumány na panelu na Breaking Bitcoin 2019 a v tomto článku Bitcoin Magazine. Zatímco lnd se snaží zbavit vývojáře zátěže a poskytnout z krabice konečnou funkčnost, rust-lightning se snaží nabídnout maximální flexibilitu s tím, že vývojáři jsou povzbuzováni, aby přinesli své vlastní komponenty a zasunuli je do.

Naproti tomu c-lightning nabízí třetí způsob. Udržuje robustní a bezpečné jádro, které je navrženo tak, aby ho vývojář nevylepšoval ani nenahrazoval. Flexibilita a další funkce jsou k dispozici díky použití pluginů, které může vývojář zapsat v různých jazycích, jako je Python nebo Go. Cílem je, aby se ekosystém c-lightning objevil jako testovací lože pro experimentování s novými špičkovými funkcemi, dříve terénem jiných implementací, jako jsou lnd a eclair, aniž by byla obětována výkonnost a robustnost jádra.

Pluginy jsou podprocesy spouštěné hlavním démonem lightningd. Pracují ve spolupráci s Lightningd. Veškeré doplňky, které splňují požadavky, není nutné spouštět. Některé pluginy potřebují do aplikace lightningd zavést určité háčky, které tyto pluginy upozorní na interní události nebo změní chování aplikace lightningd.

První C-Lightning Pluginy

Blockstream má série středních blogových příspěvků k předvedení některých prvních pluginů napsaných týmem c-lightning. Patří mezi ně plugin „Summary“, který poskytuje souhrn stavu uzlu, včetně satoshi onchain, co to znamená, fiat, počet vrstevníků, počet kanálů, jak jsou vyvážené atd..

Zásuvný modul „Probe“ určuje, zda existuje cesta k provedení platby do určitého uzlu v síti, vrátí požadovanou úroveň poplatku a označuje, které kanály brání úspěšné platbě. To lze použít k přípravě podkladů pro budoucí platbu nebo pouze k prozkoumání topologie sítě.

Plugin „Prometheus“ shromažďuje údaje o výkonu vašeho uzlu za účelem poskytování vizualizací a výstrah. U všech těchto pluginů můžete přispět do pluginu přidáním funkce nebo vytvořením vlastního od nuly.

Pluginy komunity

Celkem je v době psaní k dispozici 16 „komunitou spravovaných“ pluginů pro c-lightning. Patří mezi ně autopilot plugin přeneseno z knihovny postavené Rene Pickhardtem. Autopiloti rozhodují, s kterými uzly budou jménem uživatele otevřeny kanály. Uživatel musí autopilotu sdělit procento finančních prostředků, které má pod kontrolou, počet otevřených kanálů a minimální velikost kanálu. Autopilota je také třeba upozornit bleskem, když kanály otevírají a zavírají vzdálení účastníci. Vytvoření efektivního autopilota je náročné, protože uživatelské preference, jako je maximalizace pravděpodobnosti úspěšné platby, mohou být v rozporu se zdravím sítě, jako je například úroveň decentralizace.

Je tam také rebalance plugin, který přesouvá likviditu mezi kanály uživatele, aby zajistil dostatečnou příchozí a odchozí likviditu; a plugin pro bezhotovostní platby, který umožňuje uživateli provést platbu bez předchozího obdržení faktury. Při běhu c-lightning se můžete rozhodnout zapnout nebo vypnout libovolnou kombinaci těchto pluginů.

Jako Lisa Neigut (@svatebni) řekl v ní tweetstorm, c-lightning neposkytuje „standardizované rozhraní HTTP dostupné z krabice ani schéma ověřování“ pro vývojáře aplikací třetích stran, jako je lnd. Komunitní pluginy však nabízejí příležitost vybudovat ekvivalenty pro c-lightning, které existují v jiných implementacích.

Kristaps Kaupe zahájil GitHub repo pro pluginy emulující některé lnd příkazy. Další autoři pluginů, kteří stojí za to zdůraznit, jsou Richard Bondi, kdo napsal sbírku pluginů v Go, včetně pluginu pro zákaz kolegů; fiatjaf, kdo napsal implementaci pluginu LN URL pomoci plátci komunikovat s příjemcem platby; a Conor Scott, který napsal v Pythonu řadu pluginů, včetně pluginu pro vytváření kanálů s uzly nejvyšší kapacity. Konečně, Justin Moon vytvořila plugin proof-of-concept pro financování Lightning kanálů s hardwarovými peněženkami.

Výzvy pluginů

Ačkoli se zdá, že tato architektura zásuvných modulů nabízí to nejlepší z obou světů, přináší určité výzvy a potenciální nevýhody. V této fázi není jasné, zda konečná flexibilita blesku rez bude znamenat, že je vhodnější pro stávající bitcoinové peněženky, které se snaží integrovat Lightning do své stávající kódové základny.

Kromě toho, jak se počet komunitních pluginů znásobuje a zvyšuje se hodnota bitcoinu spoléhajícího se na tyto pluginy, bude bezpečnost a léčba zásadní. Mezi pluginy nevyhnutelně dojde k duplikaci a překrývání.

Kurátorství je náročné, protože účinně doporučuje (neoficiálně, výhrada emptor), které pluginy by měly být použity a které ne. Bez kurátora je nemožné, aby uživatelé a vývojáři mohli rychle začít, aniž by prozkoumali všechny konkurenční doplňky. Existuje argument, že některé jazyky (a někteří vývojáři!) Jsou vhodnější pro psaní softwaru důležitého pro zabezpečení. Obzvláště nebezpečné metody JSON-RPC lze nainstalovat pouze s možností vývojáře a jsou určeny pouze pro testování a ladění s pomocí týmu c-lightning. K dispozici je také návod na nebezpečí, která může vývojářům pluginů vzniknout, když využijí výhody konkrétního háku, který může změnit výchozí chování c-lightningu.

Není pravda, že tento přístup vytváří pro vývojáře naprosto bez povolení prostředí, protože některé budoucí pluginy budou stále vyžadovat, aby tým c-lightning sloučil další háčky do codebase c-lightning. Například je háček pro usnadnění pluginu strážní věže diskuse v době psaní tohoto článku. Je možné, že některé háčky nebudou sloučeny kvůli bezpečnostním problémům nebo podrobnostem implementace.

Zůstává vidět, zda instance uzlů c-lightningu, na kterých běží různé sady modulů plug-in, způsobují problémy s kompatibilitou mezi uzly c-lightning nebo s jinými implementacemi. Je již náročné zajistit kompatibilitu mezi různými implementacemi, za předpokladu, že všechny uzly c-lightning běží se stejnou verzí. Experimentování je však důležité a ponaučení z tohoto experimentování se ukáží jako neocenitelná při finalizaci specifikací BOLT pro protokol Lightning.

London Bitcoin Devs

Příležitost stavět a hrát si s novými pluginy v širokém výběru různých jazyků přitahuje vývojáře k tomu, aby stavěli na vrcholu c-lightning. Antoine Poinsot (@darosior) přišel do Londýna představit na London Bitcoin Devs setkání v březnu 2020. Poinsot vyvíjí a správce pluginů s názvem Reckless, který uživateli nabídne výběr pluginů a vybrané pluginy spustí dynamicky. Postavil také háček příkazového RPC, který umožňuje pluginu převzít jakýkoli příkaz RPC a změnit jej. To je potenciálně bezohledné a experimentální, protože příkazy RPC jsou způsoby interakce uživatelů s bleskem. Pokud lze příkazy RPC přijmout, odmítnout nebo změnit, otevírá se řada případy užití ale také možnosti pro uživatele přijít o své prostředky.

Tento příkazový háček RPC tvořil základ nejnovější online prezentace Rustyho Russella Boltathon 2. Stále existuje celá řada pluginů, ze kterých by se dalo vytvořit směrování trampolíny na Faktury HODL, a Christian Decker očekává „Již existuje plugin, který to dělá“, aby se stal memem. V takovém případě může být Deckerovi a komunitě c-lightningů právě vyříznuta jejich práce při přípravě této vznikající džungle pluginů.

Děkujeme Antoine Poinsotovi a Christianovi Deckerovi za jejich příspěvky k tomuto článku.