Blesk vo fľaši

Začíname

V druhej časti našej série bleskových sietí podrobne opíšeme naše skúsenosti s bleskovou sieťou a niektoré z úskalí, ktoré sme počas cesty objavili. V tretej časti našej série začneme s tutoriálom o tom, ako prevádzkovať svoje vlastné miestne uzly, uzol Lightning z telefónu Android a ako uskutočniť platobný kanál medzi mobilným a miestnym uzlom.

Prehľad

Začali sme s úlohou vytvoriť bitcoinový uzol a bleskový uzol v cloude AWS, bleskový uzol bežiaci z telefónu s Androidom a nakoniec vytvoriť platobný kanál medzi týmito dvoma uzlami blesku. Na začiatok sme chceli, aby všetko fungovalo lokálne na testovacej bitcoinovej testovacej stanici predtým, ako sa pokúsime spustiť uzly z cloudu. V prípade systému Android sme použili implementáciu bleskovej siete spoločnosti ACINQ Scala. Chceli by sme sa im veľmi poďakovať za otvorený prístup k ich projektu a tímu LND za poskytnutie nekonečnej podpory na ich uvoľnenom kanáli!

Použitá súprava nástrojov

  • Android Java s implementáciou Scala Lightning Network
  • Implementácia siete Lightning Network spoločnosťou LND
  • Implementácia bitcoinového protokolu spoločnosťou btcsuite
  • Dokovacia stanica pre kontajnerizáciu našich uzlov
  • slúži na odhalenie môjho miestneho bleskového uzla svetu

Zamýšľali sme použiť AWS na cloudové funkcie, ale narazili sme na viac ako spravodlivý podiel problémov, ktoré nám bránia v dosiahnutí tohto bodu vývoja.

Spustenie lokálne

Miestne uzly

Uvedenie bitcoinových a bleskových uzlov do prevádzky nebolo príliš zložité a väčšinou vyžadovalo inštaláciu všetkých správnych závislostí a stiahnutie bitcoinového blockchainu. Keďže sme testet používali, stiahnutie trvalo iba 4 hodiny. Okrem toho bolo tiež dôležité uistiť sa, že máme správne príznaky a konfigurácie pre uzly.

Android

Spustenie siete Lightning Network v telefóne s Androidom vyžadovalo podstatne viac úsilia. Po prvé, museli sme sa pozrieť na ACINQ eclair peňaženku, aby sme pochopili, ako používať ich implementáciu Scala v Lightning Network. Na prvý pohľad to vyzeralo dosť komplikovane, ale kúsok po kúsku sme ho rozobrali a izolovali komponenty, ktoré sme potrebovali pre základný kód dosky kotla.

Dodatočné nastavenie

Posledným krokom nevyhnutným na uľahčenie komunikácie medzi mojimi miestnymi uzlami a vonkajším svetom bolo odhaliť ich prostredníctvom servera SSH na presmerovanie portov. Použili sme na to servo, ale rovnako funguje aj ngrok.

Počiatočné výzvy

Testovanie bolo najnáročnejším aspektom toho, ako uzly uviesť do prevádzky, prevádzkovať a vytvoriť platobný kanál. Pretože sme používali testovacie siete, museli sme čakať 6 potvrdení od baníkov a ich dokončenie môže trvať až 30 minút. Kedykoľvek by sme vytvorili transakciu financovania pre transakcie mimo reťazca alebo zatvorili a zúčtovali platobný kanál, čakali sme pol hodiny a viac.

Ďalšou nepríjemnosťou, ktorú sme sa stretli, bolo to, že po otvorení sme nemohli financovať platobný kanál. Prostriedky, ktoré ste otvorili platobný kanál, sú v podstate všetky prostriedky, ktoré musíte minúť skôr, ako sa štát musí vysielať v hlavnom reťazci. Na rozdiel od platobných kanálov, ktoré sme implementovali v sieti Ethereum, platobné kanály v sieti Lightning Network nemajú adresy alebo aspoň odkryté adresy, na ktoré môžu byť zaslané prostriedky.

Všeobecná nepredvídateľnosť siete bola hlavnou témou celého nášho výskumu siete Lightning Network. Niekoľkokrát by sme sa pokúsili otvoriť platobný kanál s náhodným uzlom, ku ktorému sme sa pripojili, a uvítali by sme nasledujúcu chybu:

Chyba nám hovorí, že nemáme dostatok satoshi v našej peňaženke na financovanie otváracej transakcie .¹ Pokúsili sme sa financovať kanál 20000 satoshi, ak je poplatok 485281 satoshi, ako sa uvádza v chybe, potom je to celkom 505281 satoshi. V našej peňaženke máme 41173093, čo je viac ako dosť na financovanie transakcie.

Nakoniec, keď uskutočňujete transakcie mimo reťazca v sieti Lightning Network, stále platíte poplatok, ak vaša transakcia musí prejsť viac ako jedným uzlom! Tvorcovia siete Lightning Network odhadujú, že poplatok by mal byť 1 satoshi za uzol alebo menší. Poplatok je nominálny, ale napriek tomu musíte zaplatiť poplatok uzlom, cez ktoré prechádzate, na rozdiel od platobných kanálov Ethereum, kde nie je poplatok vôbec.

  1. Satoshi je najnižšia nominálna hodnota bitcoínu. Jeho hodnota je stotisícina bitcoínu. Jednoducho povedané, 1BTC = 10⁸ satoshi.

Uzly v oblakoch

Zakotvenie našich uzlov

Docker je softvér, ktorý vám umožňuje kontajnerizovať vaše servery a vytvárať obrázky, z ktorých je možné vytvoriť veľa vašich serverov. Často sa používa v spojení s AWS, takže vaše servery sú zapuzdrené a ľahko roztočiteľné.

Prechádzajúc githubom LND sme našli obrázky Dockerovcov a začali sme vytvárať skripty, ktoré už zostavil tím LND, a preto sme sa rozhodli skúsiť ich. Pri vytváraní obrázkov sme sa rýchlo stretli s viacerými chybami a tiež sme si všimli, že obrázky boli prepojené pomocou odkazov Docker.¹ Odkazy Docker sú zastarané, takže ďalším krokom bolo zostavenie vlastných obrázkov a ich pripojenie pomocou siete Docker. Vytváranie obrazov bolo dosť jednoduché, teraz sme museli iba zdieľať certifikát rpc pomocou zväzku medzi bitcoinovým uzlom a uzlom Lightning… Alebo sme si mysleli.

Napriek zdieľaniu certifikátu rpc medzi uzlami a overeniu, že sú prítomné v oboch kontajneroch, uzol Lightning nedokázal nadviazať spojenie s bitcoinovým uzlom. Uistili sme sa, že sme skontrolovali, či boli na obidvoch kontajneroch odhalené všetky správne prístavy, ale stále sme s tým nemali šťastie.

  1. Spojenie dokov je spôsob spojenia kontajnerov prostredníctvom zabezpečeného kanála, ktorý umožňuje komunikáciu medzi nimi. Ak namiesto toho použijete sieť Docker, Docker vytvorí virtuálnu sieť, kde kontajnery majú svoje vlastné IP adresy podsiete.

Na záver

Naše skúsenosti so sieťou Lightning Network boli zaujímavé, zábavné a poučné. Dozvedeli sme sa veľa o protokole Lightning a potenciáli technológie. Bohužiaľ, táto technológia sa stále javí príliš nestabilná a nedostatočne vyvinutá na to, aby mohla byť použitá v škálovateľnom riešení na úrovni výroby. Určite budeme mať oči očistené, aby sme videli, kam táto technológia ide.

Ďakujeme, že ste si prečítali náš blog, a dúfame, že ste sa trochu naučili z našej skúsenosti so sieťou Lightning Network. Nezabudnite zostať naladení na časť 3, kde vám ukážeme, ako roztočiť svoje vlastné uzly, uzol na telefóne s Androidom a medzi nimi vykonať platobný kanál!