Bitcoin vytvořil nativní internetovou digitální decentralizovanou vzácnost. Je to protokol, díky kterému můžeme mít něco, co je digitální, ale nedá se zkopírovat kopií bitů, které tvoří danou informaci. A navíc vzniká decentralizovaným způsobem. Je to první projekt, který má všechny zmíněné vlastnosti – absenci centrální autority, vzácnost a je to nativní internetový protokol. Samotný Bitcoin však není moc dobrá platební síť z více pohledů. Každou transakci ověřují všechny uzly sítě. Bitcoinový „timechain“ (resp. „blockchain“) je velmi neefektivní decentralizovaná databáze, která má právě jednu unikátní vlastnost – umožňuje vytvořit decentralizovanou kryptoměnu. Právě k řešení efektivity, rychlosti a ceny transakce vznikla síť Lightning. A jako bonus má lepší soukromí než veřejná databáze Bitcoinu.
Lightning využívá Bitcoin jako účetní jednotku a aktivum přímo a decentralizovaně, ale na rozdíl od klasických „on-chain“ transakcí, jak je známe z původního Bitcoin protokolu, využívá jiný mechanismus pro posílání satoshi (nejmenších jednotek Bitcoinu).
Síť Lightning však Bitcoin protokol využívá k řešení „sporů“. To znamená, že komunikujeme s protistranami, kterým nemusíme důvěřovat, a v případě snahy o podvod tento spor „rozsoudí“ Bitcoinová síť.
Zde se dostáváme k poněkud matoucí terminologii, protože slovem Bitcoin označujeme několik věcí – účetní jednotku, platební síť, peer to peer komunikační síť i software. Lightning nahrazuje peer to peer komunikační síť (jak si uzly mezi sebou povídají) i platební síť (jak probíhají platby), ale jako účetní jednotku používá přímo Bitcoin – dokonce nejen jeho účetní reprezentaci, ale Bitcoin samotný, což si vysvětlíme níže.
Lightning network je tedy platební síť, která jako účetní jednotku používá Bitcoin a je kryta skutečnými Bitcoiny. Do sítě se připojíte vytvořením tzv. platebních kanálů, přes které můžete do sítě posílat Bitcoiny a ze sítě dostávat Bitcoiny. K tomu, abyste někomu poslali Bitcoiny nemusíte mít s ním otevřený platební kanál – podobně jako když máte připojení na internet od poskytovatele připojení, nemáte natažen přímý optický kabel do datacentra, kde má Alza servery, ale přesto můžete číst tento článek. Poskytovatel má připojení do peeringového centra, tam je připojen jiný poskytovatel, který poskytuje konektivitu datacentru, a tedy přes více „kabelů“ se připojíte k serveru, na kterém čtete tento text. Díky digitálním podpisům v rámci protokolu HTTPS umíme dokonce zajistit, aby komunikaci mezi vaším zařízením a serverem Alza nemohl nikdo měnit – tato vlastnost je klíčová i u sítě Lightning.
Platební kanál je speciální Bitcoinová adresa (resp. pro pokročilé uživatele ve skutečnosti UTXO), na které jsou zamčené Bitcoiny. Kanál je vždy mezi dvěma uživateli sítě, nazvěme je Alice a Bob.
Alice prodává skvělé bezlepkové palačinky a Bobovi chutnají a chce je pravidelně nakupovat celé rodině k večeři. Jelikož chce pokaždé platit Bitcoinem a nechce každý den platit Bitcoinový on-chain poplatek, bylo by super, kdyby mohl zaplatit pouze jeden takový poplatek a pak tyto peníze u Alice opakovaně utrácet vždy „do nasycení palačinkami“.
Jednoduchý kanál může vypadat tak, že Bob pošle Alici dopředu peníze, a předplatí si tak deset večeří, ta mu vytvoří u sebe „kredit“. Problém je, že pokud se Bobova rodina přejí palačinek, nebo klesne kvalita, nebo Alice získá nového konkurenta v palačinkách, kterého Bob preferuje před Alicí, dochází k poměrně nepříjemné situaci, kdy Bob musí přijít za Alicí a poprosit ji o vrácení neutracené části kreditu ve formě peněz. Bob nemá k těmto penězům privátní klíč, už je poslal Alici, a tedy Alice musí podepsat transakci na vrácení rozdílu.
Platební kanál pro palačinky od Alice však může vypadat i jinak. Alice si vzpomněla, že Bitcoin umožňuje multisig 2-z-2, ve kterém musí každou transakci podepsat obě strany. Navrhne Bobovi takové řešení: spolu vytvoříme adresu, ze které můžeme utrácet pouze společně. Bob poté, co se dohodnou, které klíče budou ovládat tuto adresu (jeden klíč, a tedy podpis za Alici, jeden za Boba), pošle částku za deset palačinkových večeří. Ještě předtím, než tuto transakci podepíše a odešle do sítě, řekne Alici, že chce podpis na transakci, která všechny dané peníze pošle rovnou zpět Bobovi. Tuto transakci si však Bob pouze odloží a neposílá ji do Bitcoinové sítě – pokud tedy Alice zkrachuje, nebo se Bob přeje palačinek, Bob vezme transakci podepsanou Alicí, přidá k ní svůj podpis a okamžitě dostane zpátky celý svůj „kredit”.
Bob kupuje první večeři a dohodne se s Alicí, že nyní z celé částky za 10 večeří patří cena jedné večeře Alici a Bobovi patří zůstatková částka za devět večeří. Navzájem si vymění podepsanou transakci, která by peníze takto rozdělila – jedna večeře Alici na její Bitcoin adresu, devět večeří Bobovi na jeho Bitcoin adresu. Ani tuto transakci však do Bitcoin sítě neposílají, pouze si ji odloží. Pokud Bob začne chodit ke konkurenci a dlouho se neukáže, Alice může tuto transakci poslat do Bitcoin sítě, těžař ji vytěží a ona dostane své Bitcoiny za jednu večeři (a zbývající peníze automaticky dostane Bob). Totéž může kdykoli udělat Bob – Alice zkrachuje a nedá se s ní komunikovat, Bob vezme poslední podepsanou transakci a pošle ji do sítě, těžař vytěží a Alice dostane peníze za jednu večeři a Bob za svých devět.
Samozřejmě, teď si řeknete – co když Bob je vychytralý a odloží si transakci, kterou mu Alice podepsala na začátku a podle které mu přísluší peníze za všech deset večeří. Za tímto účelem mají platební kanály takzvané revokační klíče. Ty si strany vyměňují při podepisování nové transakce. Pokud by Bob použil tuto starou transakci, Alica vezme svůj revokační klíč a vezme si všechny peníze (za všech deset večeří). Penalizační transakce je pokuta za odeslání staršího než posledního stavu. Tedy nikdo se nemusí bát žádného podvodu (to je ta vlastnost „rozhodování sporů pomocí Bitcoinové sítě”). Poslední podepsaná transakce reflektuje aktuální stav plateb a stačí ji oznámit těžařům. Jakákoli starší transakce odeslaná do sítě znamená, že si podvedená strana může vzít všechny Bitcoiny z kanálu.
(Technický detail: K tomu, aby toto fungovalo, používá síť trik, že transakce, které si jednotlivé strany odloží, nevypadají stejně. Alice si odloží transakci, kde cena devíti večeří přísluší Bobovi hned, ale cena jedné večeře je pro Alici až po určitém době, ve které má Bob možnost použít revokační klíč, tedy pokud transakci do sítě pošle Alice, Bob dostane své peníze hned, ale Alice musí čekat, zda Bob nemá revokační klíč, kterým by si vzal cenu jedné večeře. Bob má od Alice podepsanou přesně opačnou transakci – Alici jdou peníze za jednu večeři hned, ale Bob musí počkat, zda Alice nemá revokační klíč – po vypršení časového zámku si peníze může vzít Bob, Alice si může vzít všechny peníze s revokačním klíčem).
Alice a Bob si za normálních okolností dokážou sami účtovat, kdo je kolik komu dlužný. Mají platební kanál, ve kterém na začátku všechny peníze patří Bobovi a postupně, jak Bob platí za večeře, stále více peněz přísluší Alici. Pokud Alice zjistí, že Bob prodává kokosový olej, který může Alice používat ke smažení palačinek, může i Alice poslat peníze zpět Bobovi. Ne však hned, protože po otevření kanálu všechny peníze patří Bobovi a Alice získává svůj zůstatek až s platbami za večeře. Pokud by Alice chtěla koupit kokosový olej hned po otevření kanálu, musela by otevřít další a „nabít” ho svými Bitcoiny, nebo se dohodnout s Bobem jinak – například může Bobovi poslat peníze pomocí on-chain platby a na oplátku Bob pošle přes kanál Alici peníze, které může Alice utrácet. Operace za účelem, aby obě strany mohly přes kanál stejně posílat a přijímat, se jmenuje vyrovnání kanálu (rebalancing) nebo vycentrování kanálu. Dá se to dělat i různými jinými způsoby. Dokonce se může Alice s Bobem dohodnout, že dají do kanálu Bitcoiny oba. Takové otevírání kanálu se jmenuje „dual funding”.
Podstatné je vědět, že přes kanál lze Bitcoiny posílat oběma směry, pokud dané straně přísluší dostatečný zůstatek. Můžete si to představit jako počítadlo.
Platební kanál je jeden řádek počítadla. Na začátku je celá kapacita na straně Boba. Bob může poslat nějaké kuličky na stranu Alice, a tedy zůstatek deseti kuliček se rozdělí – jedna kulička Alici, devět Bobovi. Alice může poslat jen kuličky, které má na své straně. Pokud chce poslat více, musí otevřít nový platební kanál.
Pointa platebního kanálu je, že po jeho vytvoření Bitcoin on chain transakcí na zmiňovanou 2-z-2 mutlisig adresu již může probíhat nekonečně mnoho transakcí mezi Alicí a Bobem (v rámci kapacity kanálu). Zmíněné kuličky mohou přesouvat nahoru dolů, jak se jim jen zachce. Nikdo v Bitcoinové síti netuší, jaký je zůstatek na které straně a ani Alice, ani Bob neplatí žádné Bitcoinové poplatky minerům. I Alice i Bob v každém momentě mají platnou podepsanou transakci, která jim může poslat aktuální zůstatek Bitcoinů na jejich adresy. To je ekvivalent toho, že „mají klíče“. V Bitcoinu se říká – nemáš klíče, nejsou to tvoje Bitcoiny. Alice a Bob si navzájem nemusí důvěřovat. Pokud nastane spor, vyřeší jej Bitcoin blockchain, protože oba v každém momentě mohou poslat platnou podepsanou transakci, která spravedlivě rozdělí Bitcoiny mezi Alici a Boba tak, jak jim přísluší.
Spor nemusí být jen o tom, že by se Alice s Bobem pohádali nebo se chtěli podvést. Alici může například vypadnout připojení k internetu, Bob je poněkud nervózní, že Alice nekomunikuje, a rozhodne se, že chce raději své bitcoiny u sebe v on-chain peněžence. Kanál s nekomunikující Alicí mu je už tak k ničemu, protože jelikož Alice neodpovídá, nemůže přes tento kanál dělat žádné další platby. Může se rozhodnout poslat poslední stav kanálu do Bitcoinové sítě. Je to jakoby „záloha“ stavu počítadla ve tvaru Bitcoinové transakce. Tato transakce je obyčejná platná transakce podepsaná Alicí i Bobem a právoplatně rozdělí bitcoiny podle posledního stavu.
Bob však může být podvodník, a když si všimne, že Alice neodpovídá, může poslat starou podepsanou transakci. Bitcoin blockchain však dokáže i tento spor vyřešit – Alice bude za pár dní online a vezme Bobovi všechny peníze (i ty, co by za jiných okolností příslušely jemu) jako pokutu za to, že chtěl podvádět. Co však když to Alice nestihne, protože je opravdu offline? K tomu jsou v Lightning network „strážní věže” (watchtower), které sledují staré stavy, a v případě, že ho někdo pošle, pošlou do sítě penalizační transakci za Alici i v její nepřítomnosti. Toto je bezpečné, protože penalizační transakce je také podepsána a nelze jí učinit nic jiného než pokutovat poslání starého stavu. Pokud nikdo nepošle starý stav do sítě, nefunguje – je neplatná, stejně jako kdyby někdo chtěl utratit bitcoiny, které nemá.
Na platbu přes Lightning network nepotřebuji mít s adresátem platby otevřený přímý kanál. To je možné díky platebním cestám. U Alice palačinky nakupuje také masér Charlie. Ten zároveň kupuje od Boba kokosový olej pro olejové masáže. Charlie i Bob mají kanál s Alicí, ale Bob a Charlie nemají mezi sebou přímý kanál. Jak mohou navzájem komunikovat?
Pokud Charlie pošle Alici platbu za jeden kokosový olej a poprosí ji, aby ji přeposlala Bobovi, je to jednoduché. Problém však nastane, pokud si Alice platbu vezme (Charlie jí podepíše nový stav kanálu), ale Bobovi o této platbě neřekne – tedy pokud Alice neaktualizuje stav kanálu, který má s Bobem. Pokud by platební síť fungovala na důvěře, nebyla by až tak užitečná. Naštěstí Alici nemusíme důvěřovat
Bob pošle Charliemu Lightning fakturu (například jako QR kód na skutečné faktuře). Součástí faktury je kromě sumy za olej, popisu či expirace („čas splatnosti”) i tzv. hash platby. To je „klíč“, který odemkne platbu.
Vysvětlíme si to:
Charlie poprosí Alici o přeposlání platby, ale místo toho, aby její platbu poslal, ji poprosí o upravení stavu kanálu takto:
Alice nemá důvod takové rozdělení nepodepsat – buď bude mít tolik peněz jako dosud, nebo pokud nějak dostane „preimage“, bude mít peněz víc.
K tomu, aby Alice získala preimage, musí poprosit o podobné nastavení v jejím kanálu směrem k Bobovi. Bobovi pošle peníze, pokud získá preimage, jinak peníze zůstávají jí. Alice je ochotna tuto transakci podepsat, protože sice bude mít méně peněz v kanálu s Bobem, ale tentýž preimage lze okamžitě použít k získání peněz od Charlieho, takže nic neprodělá ani nevydělá, jen se jí změní stav kanálů – více bude mít v kanálu od Charlieho, méně v kanálu od Boba.
Bob vidí, že může získat peníze za platbu od Charlieho. Stačí, když Alici pošle preimage. Ten automaticky odemkne peníze pro něj. Alice tento preimage pošle Charliemu a získá peníze na svoji stranu. Pokud se stav kanálů ustálil, mohou se preimage z transakcí smazat a kanál se vrátí k původnímu počítadlu – rozdělení prostředků mezi dvěma stranami kanálu.
Alice samozřejmě raději dělá palačinky, než podepisuje transakce, a proto v tomto celém hrají roli i poplatky. Aby si Alice našla čas na podepisování transakcí mezi obracením palačinek, bylo by fajn, kdyby od Charlieho dostala dostala trochu víc, než pošle Bobovi. Toto je poplatek za směřování platby. Tento poplatek vydělá Alice, ne těžař, protože taková platba se vůbec nepošle do Bitcoinového blockchainu.
Bitcoinový blockchain i v případě platby procházející přes více platebních kanálů pouze rozhoduje spory a v každém momentě je možné určit, kolik peněz přísluší které straně. I v případě, že se některý kanál během platby zavře, je vše v pořádku – ostatní kanály, přes které prošla platba, jsou nedotčeny a mezi Bobem a Charliem nikdy nedojde k přímé on-chain transakci.
V celé této jednoduché tržní výměně přijde v ideálním případě jen ke dvěma on-chain transakcím – otevření kanálu mezi Alicí a Bobem a otevření kanálu mezi Alicí a Charliem. Všechny prodeje palačinek, kokosového oleje a masáží v tomto malém ekosystému již probíhají mimo Bitcoin blockchain, jsou vyrovnávány okamžitě (není třeba čekat na potvrzení) a s minimálními poplatky. Kromě toho, tyto transakce probíhají pouze komunikací mezi zúčastněnými stranami – nikdo jiný se o těchto platbách nedozví.
Bitcoinovými on-chain transakcemi „zatěžujeme“ celý svět, ale Lightning platby jsou soukromé a probíhají jako „šeptání“ mezi Alicí, Bobem a Charliem. Spolu se dokáží dohodnout a nastane-li problém, řeší spor jen s problémovou stranou – posláním poslední platné transakce do Bitcoinového blockchainu.
Pokud otevřete kanál, většinou můžete přes tento kanál satoshi pouze posílat. Některé peněženky to však řeší tak, že v případě otevření kanálu přidají „své“ Bitcoiny na svou stranu kapacity, takže vám mají přes daný kanál co poslat. Můžete tedy přijímat i odesílat. Další možností je po otevření kanálu část peněz poslat nazpět on-chain pomocí swap služby jako například Breez. Tedy přes daný kanál zaplatíte lightning fakturu, jejíž zaplacením vám poskytovatel daný zůstatek (mínus poplatky) pošle zpět on-chain. Skončíte tak s větším kanálem, kde je část kapacity na vaší straně.
Jak přemýšlet nad kapacitou kanálu? Analogií je více, zkusme použít tuto:
Suppose that your wallet is a bucket, and your balance is the water in the bucket.
— Phoenix Wallet (@PhoenixWallet) November 27, 2023
Receiving = adding more water
Spending = pouring water out
Any time the bucket needs to be resized to allow for more water, that's an on-chain operation.
Představte si, že vaše peněženka je kbelík a váš zůstatek je voda v kbelíku. Pokud platíte vodou, vyléváte vodu (například do jiné nádoby). Přijímání je přilévání vody do vašeho kbelíku. Vodu, kterou máte v kbelíku, můžete vždy „utratit“ (vylít). Ale pokud chcete přijmout (dolít) více vody, než máte volného místa ve kbelíku, potřebujete nový kbelík.
Kdykoli je třeba změnit velikost kbelíku, aby se do něj mohlo nalít více vody, jde o on-chain operaci. U většiny peněženek to je otevření nového kanálu. Peněženka Phoenix má však stále jen jeden kanál a dokáže ho zvětšit (splice-in).
Jak se ke kapacitě postavit? Pokud zvládnete zaplatit občas on-chain poplatek, tak při běžných non-custodial peněženkách pro koncové uživatele kapacitu nemusíte řešit. Pokud není dostatečná, poskytovatel peněženky vám ji zvýší. To platí například u peněženek jako Breez nebo Phoenix.
Pokud Lightning používáme častěji a jsme citliví na poplatky, je důležité kapacitě rozumět a lze trochu plánovat. Typický příklad, kdy bychom se měli na poplatky podívat, je hlavně v případech, kdy chceme častěji přijímat platby. To může být například pokud chceme přijímat Bitcoiny přes Lightning ve svém podnikání, případně plánujeme-li pomocí Lightningu nakupovat Bitcoiny pomocí strategie DCA (Dollar cost averaging).
Proč nás odesílání až tak nemusí zajímat? Podíváme-li se zpět na analogii s vědrem, vodu, kterou chceme přelít do kbelíku někoho jiného, už ve kbelíku máme, takže k odesílání přes Lightning nepotřebujeme nový kbelík nikdy – voda už v nějakém kbelíku je.
Otázka tedy je, jak získáváme přicházející likviditu – používáme-li peněženku typu Phoenix, dostáváme ji od nějakého poskytovatele likvidity. V případě Phoenixu jsou to přímo autoři peněženky – pokud je kapacita nedostatečná, provozovatel ve spolupráci s vaší peněženkou otevře nový kanál a platba projde. Vy ale zaplatíte on-chain poplatek za příchozí platbu.
Pokud víme, že budeme přijímat více plateb (například od klientů), můžeme si koupit přicházející likviditu nebo si ji jinak vytvořit. Kdysi byla prakticky jediná možnost udělat to, že nám někdo poslal sats přes Lightning (například ve výši 1M satoshi), my jsme mu poslali zpátky o trochu méně a měli jsme kanál s přicházející likviditou. Taková operace stála odesílatele nějaký lightning poplatek (je-li odesílatel Phoenix, tak 0,4 %) a nás 0,4 %, tedy náklad této operace byl cca 0,8 % + on-chain poplatek. Phoenix konkrétně umožňuje koupit přicházející likviditu i bez „kamaráda“, který nám pošle peníze. Poplatek je sice poněkud vyšší (1 %), ale Phoenix se tváří, že přicházející likviditu garantuje alespoň na rok.
Pokud tedy pravidelně nakupujeme Bitcoiny nebo přijímáme platby, můžeme najednou získat likviditu ve výši odhadovaných příjmů na nejbližší měsíce a zaplatit jeden on-chain poplatek za „velký kbelík“. Potom je další přijímání zdarma.
U jiných peněženek může být tato likvidita získána jiným způsobem – pomocí služby poskytovatele likvidity, případně u jiných peněženek dokonce můžeme kanály otevírat manuálně. K tomu nám může pomoci služba Lightning Network+. Je to nekomerční služba, která nám umožňuje vyměňovat si likviditu. Nejčastějším způsobem je zapojení se do tzv. trojúhelníku, kde si tři strany (A, B a C) mezi sebou otevřou kanály. A otevře kanál s B, B otevře kanál s C a C otevře kanál s A. Všichni tři tedy zaplatí po jednom on-chain poplatku a každý získá kanál s odchozí i přicházející likviditou. Jiné poplatky s touto službou spojené nejsou, ale je dobré podívat se na podmínky – jak dlouho máte nechat kanál otevřený, kolik jiných kanálů už musíte mít a v jaké kapacitě. Takto tedy většinou není možné otevřít váš první kanál – ten je ale dobré otevírat s lidmi ve vaší komunitě nebo na služby, se kterými plánujete interagovat. Například Confirmo, Paralelní Polis, Breez, Phoenix apod. Seznam československých nodes naleznete na githube Paralelní Polis, úplně dole (můžete se do seznamu i přidat vytvořením pull requestu).
Při kapacitě ještě zůstaneme – kanály je dobré otevírat tehdy, když jsou nižší poplatky. Maximální poplatek, který jste ochoten zaplatit, si určujete vy, pokud kanál otevíráte přímo, případně jej najdete v nastavení peněženky. Je možné, že díky tomuto nastavení při nedostatečné kapacitě nebudete schopni přijmout platbu, protože kapacita je nedostatečná a peněženka nový kanál kvůli poplatkům neotevře. Proto je dobré plánovat a otevírat kanály v době nižších poplatků – často to bývá například o víkendu. Nebo sledujte Bitcoinery na X nebo na Nostr, často napíšou hlášku „dobrý čas na otevření Lightning kanálů”.
Vaše Lightning peněženka je jen tak bezpečná jako vaše zařízení. Jelikož při každé platbě (odeslané, přijaté nebo jen procházející přes nás) je třeba podepsat transakci, všechny privátní klíče jsou online na zapnutém počítači. Nemůžeme ručně podepisovat transakce potvrzováním na hardwarové peněžence jako v případě běžných Bitcoin plateb. Tedy alespoň v době psaní tohoto článku zatím nikdo nevytvořil hardwarovou peněženku pro Lightning, i když technicky to možné je (podobně jako v Trezor Suite můžete nechat běžet coinjoin bez potřeby potvrzovat každé jedno kolo).
Na Lightningu je třeba mít peníze na běžné utrácení a dávat si pozor na bezpečnost vašeho zařízení.
Kolik je „na běžné utrácení“ závisí na každém jednotlivci, ale například peněženka Breez má omezení na maximální výši zůstatku v peněžence 4 miliony satoshi. Při této částce už doporučují poslat satoshi do hardwarové peněženky.
Jelikož stav kanálu se mění, zálohou Bitcoinové peněženky není pouze mnemonic seed (známých 12 či 24 slov). Ke každému kanálu je třeba mít uloženy poslední zazálohované stavy (zvané commitment transaction), revokační klíče všech předchozích stavů a další informace. Jelikož v případě poslání starého stavu do Bitcoinového blockchainu přichází ten, co to udělá, o všechny peníze, je velmi důležité mít aktuální zálohu – vteřinu stará záloha může znamenat, že přijdete o peníze, neboť přes vás bleskově proběhla platba.
Některé peněženky (například Phoenix) dělají to, že zálohy posílají do cloudu a šifrují je klíčem odvozeným ze seedu. V takovém případě je „zálohou”, kterou vidíte, opravdu jen seed, ale je dobré vědět, že k jejímu obnovení potřebujete i to, aby „cloudová” služba provozovatele na druhé straně fungovala. Je málo pravděpodobné, že budete potřebovat obnovit peněženku a zároveň nebude existovat druhá strana, ale o tomto problému je dobré vědět – čistě se seedem se dostanete pouze k prostředkům z plně zavřených kanálů.
Zálohování kanálů není sjednocené – každá peněženka k tomu má jiný mechanismus. Existuje speciální typ zálohy, který se nazývá statická záloha kanálů (static channel backup), který je použitelný v případě vážnější poruchy a neexistence aktuální zálohy. Tento typ zálohy neobsahuje poslední stavy, pouze to, s kým máme otevřené kanály. Na základě tohoto kanálu máme možnost poprosit druhou stranu o zavření kanálu – nemáme vše potřebné k tomu, abychom to udělali sami, ale alespoň víme, koho můžeme pomocí Lightning protokolu požádat o zavření a o které kanály se jedná. Protistrana nám ovšem nemusí vyhovět, dokonce nemusí být online, takže to není stoprocentní záloha. Na druhé straně ji můžeme použít tehdy, když si nejsme jisti, zda máme aktuální zálohu – nebo víme, že ji nemáme.
Mimochodem, taková žádost o zavření kanálu by mohla protistranu vybízet k tomu, aby zavřela kanál se starým stavem, v němž jí přísluší větší zůstatek. K tomu, aby to neudělala, existují strážní věže (watchtowers), které mají uloženy revokační klíče starých stavů a dokážou protistranu potrestat i v případě, že my nemáme zálohu revokačních klíčů. Těmto watchtowers nemusíme důvěřovat, informaci nemají jak zneužít, umí pouze potrestat protistranu v případě, že by chtěla udělat podvod.
Síť Lightning si nyní představíme na základě mýtů a rozdílů oproti Bitcoinové síti.
Tento mýtus je poměrně častý a přirovnává síť Lightning k technologiím jako sidechains (Liquid, Rootstock) nebo k různým způsobům „wrapování“ (zabalení) Bitcoinů v jiných sítích (WBTC, BTC.b). Zamysleme se teď, co je to Bitcoin hlavně z pohledu vlastnictví. Bitcoiny jsou „uloženy“ ve veřejné databázi zůstatků, kde se síť shodne na tom, na jakých adresách je jaká částka.
Zmiňoval jsem tradiční Bitcoinerskou poučku – „nemáš klíče, nemáš Bitcoiny”. To je částečně pravda, ale ne všechny Bitcoiny jsou skutečně chráněny privátními klíči, a ne vždy je nutné mít všechny privátní klíče. V „klasických“ on-chain peněženkách to však platí – pokud máte privátní klíče, dokážete vytvořit a podepsat platnou transakci, kterou Bitcoiny pošlete na jinou adresu.
V síti Lightning máte vždy platnou transakci, kdy si můžete vzít zůstatek, který vám přísluší. Nepotřebujete při tom spolupráci nikoho jiného – když se rozhodnete peníze poslat, tak to můžete udělat sami, čímž vám Bitcoin nechává suverenitu.
Toto platí i při Lightningu. Jediné omezení je, že své peníze můžete dostat na svoji adresu bez spolupráce se třetí stranou až po vypršení časového zámku, který zajišťuje možnost pokutovat starou transakci. Pokud nechcete s nikým spolupracovat, své coiny dostanete bez jakékoli další strany, stačí vzít poslední commitment transakci (stav kanálu) a poslat ho do Bitcoinové sítě, aby jej vytěžili a poté po vypršení časového zámku si vzít peníze podepsáním transakce klíčem, který máte.
Samozřejmě, toto není nejefektivnější způsob jak získat Bitcoiny – ideální je nezavírat kanál a dělat pouze swap (například pomocí zmiňované služby Boltz nebo funkcionality vaší peněženky). Dokonce i když chcete kanál zavřít, je mnohem lepší to dělat s protistranou, se kterou tento kanál máte otevřený (cooperative close), protože nemusíte čekat a dělat další transakci.
Pokud však řešíme otázku, zda jsou to „vaše bitcoiny“, nebo jen slib někoho dalšího, že je na požádání vyplatí (což je případ například zmíněných sidechains nebo jiných forem bankcoinu, například burzovních zůstatků), při Lightningu nepotřebujete k poslání transakce nikoho dalšího, v nejhorším jen trochu času.
Lightning network nemá adresy. Platbu provádíme vytvořením platební cesty k uzlu a zaplacením Lightning faktury. Lightning faktura jako taková se po platbě ztratí a nemusíme ji nikde ukládat. Lightning má o dost vyšší soukromí než on-chain platby a o jednotlivých platbách neexistuje (na rozdíl od Bitcoin blockchainu) veřejně dostupný permanentní záznam – uskutečněná platba jen změní rozdělení zůstatků platebních kanálů. Vaše peněženka si samozřejmě může pamatovat, co zaplatila a co přijala, ale to je jen pro účetní účely a zobrazení historie.
Jelikož na zaplacení Lightning faktury je nutná spolupráce obou stran (a části Lightning sítě, kterou používáme jako platební cestu), faktura obsahuje informaci, jak nakontaktovat druhou stranu, jaký veřejný klíč můžeme použít, o jakou platbu (jakou částku) se jedná, popis platby a expiraci. Fakturu po expiraci již nelze zaplatit a je třeba vytvořit novou. To je výhodné kvůli změnám kurzu Bitcoinu – částka v Bitcoinu je často platná jen omezenou dobu, ale například Bitcoin platební požadavek lze zaplatit kdykoliv.
Na rozdíl od on-chain plateb nemají Bitcoiny zasílané přes Lightning historii. Platba přijde účetní změnou (vynutitelnou on-chain transakcí) přes platební kanál, který máte otevřený. Bitcoiny, které odesílatel posílá tedy nijak nesouvisí s tím, jaké coiny přijmete. Z tohoto důvodu je dobré při přijímání Bitcoinů používat právě Lightning, neboť nemusíte řešit, zda dané coiny nejsou na nějakém seznamu nepěkných coinů, ať už na tyto seznamy máme jakýkoli názor.
Máme-li otevřený kanál, přes který přijímáme, nemusíme na platbu čekat. Poté, co je platba potvrzena, coiny máme nezávisle na těžařích a zaplnění bloků.
Dokonce i v případě, že je třeba zvětšit kanál kvůli nedostatečné kapacitě pro přijímání, není třeba čekat, protože odesílatel nedokáže udělat double-spend. Riziko nepotvrzení transakce je v tomto případě pouze mezi příjemcem a jeho partnerem, takže pokud věříte, že vás operátor peněženky nechce podvést, nemá cenu mrznout na ulici a čekat na potvrzení.
Lightning poplatky nejsou zdarma. V kanálu je uzamčena likvidita a pro její odemčení je třeba v nejhorším případě provést on-chain transakci. Proto si jednotliví aktéři v bitcoinové síti za přeposílání plateb účtují poplatky. Ty závisí na částce (protože mění vlastnictví kanálu, a tedy jsou závislé na částce).
Poplatky jsou většinou nižší a při malých sumách (jako například zaps na Nostr) se vyplatí více než on-chain poplatky. Zároveň poplatky velmi nezávisí na zaplnění bloků. Proto je dobré otevírat kanály v době nižších poplatků a přes otevřený kanál lze pak posílat levné platby. U větších částek se ale už může vyplatit provést on-chain platbu.
Jak vysoké jsou poplatky? Na konkrétní poplatky jsem se podíval ve Velkém testu Lightning peněženek na mém blogu. Heuristika je, že poplatek je většinou kolem nejvýše 0,4 % z odesílané částky (za přijímání přes existující kanál s dostatečnou kapacitou příjemce nic neplatí). V době psaní tohoto textu je poplatek za zařazení běžné transakce se dvěma vstupy a se dvěma výstupy do dalšího bloku cca 2 240 sats, tedy při částce nad 560 tisíc sats se již může vyplatit více on-chain platba.
Více o poplatcích v Bitcoinu jsme psali v článku Bitcoin v prostředí vysokých poplatků (TIPY A TRIKY)
Síť Lightning network má poměrně bohatý ekosystém projektů a firem. Většinu z nás napadne jako první kategorie peněženky, ale ty jsou jen malou částí celého ekosystému. Jelikož klíčovou je kapacita kanálu, je zde nová kategorie poskytovatelů likvidity, či kapacity kanálů.
Samozřejmě, máme zde poskytovatele různých služeb přes Lightning, sociální síť Nostr, e-cash systémy, směnárny, které umožňují vklady a výběry přes Lightning, platební brány, které vám pomohou s akceptací, aplikace podcastingu 2.0, či služby voucherů.
Služby vznikají takovou rychlostí, že potřebujeme studie k tomu, abychom to byli schopni sledovat, a přesto mnozí nestíháme. Proto jakékoli doporučení na konkrétní peněženky a služby mohou být zastaralé dříve, než zaschne pomyslný inkoust na tomto článku. Proto doporučujeme sledovat dobré Bitcoinery a číst aktuální vydání Bitcoin Alza.
U Lightning ekosystému nás budou zajímat primární peněženky, protože to je první věc, se kterou se uživatelé při používání Lightningu setkají. Ekosystém peněženek je pestrý – od Lightning uzlů, které si zkušený systémový administrátor nainstaluje na svůj server (lnd, core lightning, eclair, …), přes distribuce, které kromě samotného uzlu poskytují i další služby (například btcpayserver, resp. btcpayserver-docker, Cryptoanarchistic Debian Repository, či více pro domácí kutily založený Umbrel, Citadel, RaspiBlitz, myNode, StartOS, Nodl, …).
Peněženku (včetně Lightning uzlu) je samozřejmě možné provozovat i na mobilním zařízení, domácím laptopu nebo na desktopovém počítači. Peněženky se liší podle toho, co poskytují a jakou kontrolu dávají uživateli.
O Custodial peněženkách uvažovat nebudeme – nejsou to Bitcoinové (ani Lightning) peněženky, poskytují přístup k bankovním službám třetích stran, a tudíž jsou proti esenci samotného Bitcoinu.
Jednoduché na používání jsou Lightning peněženky druhé generace, které pomáhají uživatelům s likviditou a případnými swap operacemi. Asi nejznámějšími peněženkami jsou Phoenix a Breez. Obě běží na iOS i Android, ale mají různý přístup. Breez spustí plný lnd uzel, který na mobilním telefonu dělá přímo směřování plateb. Kromě toho se integruje například s přehráváním podcastů a jinými službami. Poskytuje také likviditu a swap-in či swap-out služby pro přijímání a posílání on-chain plateb. Tím, že peněženka zajišťuje směrování, bývá pomalejší a musí se více synchronizovat se sítí – i s Bitcoin blockchainem (aby viděla, zda někdo nezavřel kanál), i s peer to peer Lightning sítí (aby měla přehled o uzlech a mohla bezpečně směřovat platby). Jedná se o poměrně zajímavý koncept, kde se autoři snaží experimentovat s novými možnostmi, které nabízí Lightning. I proto mají omezení na maximální zůstatek 4M satoshi.
Phoenix naproti tomu přináší jednoduchost, menší datovou náročnost a předvídatelnost, na úkor soukromí a množství poskytovaných služeb. Platby směřuje server provozovatele – uživatel má tedy Lightning uzel, ale ten deleguje úkoly jako vytvoření platební cesty na server. Na druhé straně Phoenix na rozdíl od Breez podporuje připojení přes anonymizační síť Tor. Privátní klíče má ovšem stále pod kontrolou aplikace uživatele na telefonu, takže se nejedná o custodial peněženku. Phoenix má jednoduchou strukturu poplatků (0,4 % za odeslanou platbu, on-chain poplatek za přijatou platbu). Nevýhodou je i nízké on-chain soukromí, protože pro přijímání on-chain platby se používá stále stejná adresa a prostředky se připojí ke stávajícímu kanálu pomocí splice-in (k vyřešení tohoto problému ale můžete používat externí službu typu boltz.exchange).
Phoenix i Breez mají jeden Bitcoin zůstatek – na rozdíl od jiných peněženek nemáte „on-chain“ a „Lightning“ zůstatek, ale všechny satoshi máte v Lightning kanálu, ze kterého je ale můžete poslat i na on-chain adresu. Jiné peněženky (Mutiny, Zeus a podobně) zvláště ukazují Lightning a on-chain zůstatky a umožňují vám mezi nimi konvertovat. Máte tak větší kontrolu, ale také více řešení.
Dalším typem peněženky jsou webové (Progressive Web Apps) peněženky. Dobrým reprezentantem takové peněženky je Mutiny Wallet, na kterou jsme na psali recenzi nedávno. Tato peněženka obchází cenzuru obchodu App Store a Google Play, a tudíž si může dovolit experimentovat s jinými nástroji.
Autoři peněženky Breez ve spolupráci se společností Blockstream vytvořili také Breez SDK – nástroj, pomocí kterého můžete integrovat Lightning do vaší aplikace. Jedná se o model poněkud podobný Phoenixu, kdy část funkcionality přebírá Blockstream Greenlight infrastruktura, ale privátní klíče zůstávají u uživatele. Na tomto SDK jsou postaveny aplikace jako například peněženka Blockstream Green (která má experimentální podporu Lightningu), ale také aplikace Satimoto, která umožňuje v západní Evropě nabíjet elektroauta bez potřeby účtů a kreditních karet – čistě pomocí streamovaných plateb. Inovací s integrovanou peněženkou je například i aplikace skupinového šetření na zdravotní péči Crowdhealth.
Některé peněženky vám umožňují získat vyšší kontrolu, například peněženka Blixt Wallet sice umožňuje automatické otevírání kanálů, ale můžete si kanály otevřít také manuálně, případně si koupit likviditu u více poskytovatelů. Na rozdíl od Phoenix a Breez tedy nejste omezeni na kanály s poskytovatelem peněženky, ale můžete si vybrat, s kým chcete mít kanál otevřený. Dávejte si však pozor na to, že kanály s mobilními peněženkami mnohé uzly zavírají, protože kanál je často nepoužitelný ke směrování, a jedná se tedy o zmraženou likviditu, kterou provozovatelé uzlů mohou používat jinde. Nedivte se tedy, pokud vám takový náhodně otevřený kanál po čase protistrana zavře – chcete-li stabilní likviditu, je často třeba si ji koupit, nebo použít vlastní uzel.
Vlastní uzel můžete použít například s peněženkou Zeus. Umožní vám připojit se ke své core lightning, nebo lnd node, nebo na uzel, který podporuje protokol lndhub (například lnbits). Můžete tak na mobilu používat peněženku, která bezpečně komunikuje s vaším domácím uzlem. Zeus však umožňuje spustit uzel i na vašem zařízení. Otevírat kanály může automaticky pomocí integrovaného liquidity providera Olympus, ale můžete interagovat i s jinými poskytovateli likvidity a také si můžete otevírat vlastní kanály.
Existuje ještě jeden typ peněženek, které jsou Lightning tak trochu jen navenek. Za zmínku stojí Muun a Aqua. Peněženka Muun se tváří jako Lightning peněženka, ale ve skutečnosti má sjednocený on-chain zůstatek a každou Lightning platbu (přicházející i odchozí) přemění pomocí technologie swapů na on-chain platbu. Platíte tedy při každé transakci on-chain poplatky. To se v prostředí vysokých poplatků ukazuje jako ne až tak dobrý nápad.
Peněženka Aqua funguje podobně, ale on-chain transakce dělá na síti Liquid, která má nižší poplatky. Nemusíte se tak starat o likviditu, kapacitu kanálů a podobně. Swap však ne vždy funguje spolehlivě, je to ovšem možná tím, že tato peněženka je stále na trhu poměrně nová (hlavně její podpora Lightningu).
Některé peněženky jsem otestoval ve Velkém testu Lightning peněženek. Je však mnoho nových peněženek, které se do testu nedostaly.
Pro přijímání Lightning plateb můžete použít jakoukoli peněženku s dostatečnou kapacitou kanálu nebo vhodnými podmínkami pro přijímání plateb. Je možné používat peněženku Phoenix (ideální při zakoupení likvidity).
Peněženky Breez a Zeus mají dedikovaný režim „Point of Sale”, určený vysloveně k přijímání plateb v provozu. Můžete si tak vytvořit produkty či ochránit posílání Bitcoinů z peněženky dodatečným „administrátorským“ heslem, čímž ochráníte zůstatek v peněžence před krádeží zařízení.
K přijímání plateb můžete samozřejmě použít i PoS modul btcpayserveru, ale na ten už musíte provozovat plný Lightning uzel na serveru. Pro většinu uživatelů (malých podnikatelů, živnostníků) stačí mobilní aplikace.
Další zásadní otázka je – kdo to používá? Signifikantní nárůst počtu uživatelů hlásí všechny platební brány i autoři peněženek.
Je to způsobeno několika faktory. V první řadě je to kvalitou peněženek, které mají v poslední době mnohem méně selhaných plateb, jsou uživatelsky přívětivější a podobně. K tomu je třeba myslet na nárůst počtu uživatelů Bitcoinu a nárůst on-chain poplatků. A také pokles popularity altcoinů, jejichž základní přidaná hodnota byly nižší poplatky.
Na Bitcoinovém blockchainu vidíme pouze otevírání a zavírání kanálů. Tedy počáteční stav a koncový stav (rozdělení) kanálu mezi protistrany. Z pohledu otevření kanálu v současnosti je vidět, že se jedná o multisig adresu 2-z-2, ale když přejdeme v Lightningu na taproot adresy, tak se i tato informace ztratí a transakce bude vypadat jako jakákoli jiná transakce na běžnou taproot adresu.
Zavření kanálu má dvě podoby – kooperativní zavření je takové, kde se obě strany rozhodnou, že kanál zavřou a podepíšou transakci s posledním stavem a pošlou jej do sítě. Kooperativní zavření kanálu vypadá jako transakce s jedním multisig vstupem a dvěma výstupy (částka příslušející Alici a částka příslušející Bobovi), z pohledu sítě je to tedy poměrně standardní transakce (v případě taprootu nebude ani vidět, že jde o multisig).
Nekooperativní uzavření kanálu (například když je protistrana déle off-line) je na tom z pohledu soukromí horší, podíváme-li se na celou sekvenci zavření kanálu, je jasné, že jde o zavření Lightningového kanálu.
Co je ale podstatné – kanál je s konkrétní protistranou a neříká nic o tom, komu jsme posílali peníze, je to jen koncový stav rozdělení. Takže nevidíme, kolik plateb přišlo, odešlo, a už vůbec ne kam.
Při soukromí však musíme dbát i na jiné věci – síťové soukromí (IP adresy), identifikátory v síti (veřejné klíče jednotlivých nodes) a samotnou komunikaci v peer to peer síti Lightningu.
IP adresy dokážeme ochránit pomocí VPN nebo sítě Tor. Komunikace kromě toho nemusí probíhat přímo, ale pomocí jiných nod v síti. Identifikátor v síti je zejména identifikátor příjemce. Ten je momentálně víceméně permanentní, ale pokud vám na něm záleží, můžete používat i dočasné klíče, například pomocí projektu lnproxy.
Otázka tedy je, jestli může nějaký útočník vidět platby. Odpověď je, že velmi těžko, a i to pouze v případě, že se přímo dívá na síť v daném momentě. Poté, co platba proběhne, o ní zůstane jen podepsaný invoice s prehashem (to je potvrzení, že došlo k platbě), který má k dispozici odesílatel. Pokud ho nikomu neukáže, neexistuje permanentní veřejný záznam o platbě. Pokud příjemce nechce, aby existovalo takové potvrzení, může pomocí lnproxy vytvořit invoice s dočasným klíčem, který s ním není propojen.
Jednotlivé uzly nevidí celý provoz – odesílatel vytváří cestu sám, komunikací s uzly. Ty dokonce nevědí, zda platbu pouze přeposílají pro někoho jiného, nebo komunikují s odesílatelem.
Jednotlivé uzly dokonce nevědí, jestli posílají celou částku, pouze její část, nebo dokonce více, než je posílaná částka. Jak je to možné? Jedna platba může jít přes několik uzlů, tedy platíme-li někomu milion satoshi, může být cesta tvořena různými větvemi s menšími částkami.
Na základě tohoto by se dalo říci, že pokud nějaký uzel po platební cestě vidí platbu (odněkud někam, tedy neví, ani kdo platbu odesílá, ani kde skončí), ví, že platba je minimálně ve výši částky, kterou přeposílá – sice neví, zda je platba vyšší než 100 tisíc satoshi, které přeposílá, ale menší asi nebude. To ovšem také neplatí, alespoň teoreticky. Platba totiž nemusí skončit na jednom místě – dá se vytvořit cesta, která zároveň rebalancuje kanály, a tedy jedním z příjemců je odesílatel. Může tedy poslat například milion satoshi, přičemž z toho je 1 000 satoshi platba za Nostr zap a zbytek je přeposlání peněz samému sobě tak, aby kanály byly více vybalancovány. Uzel, který vidí, že z této cesty přeposílá 100 tisíc satoshi, tedy nemůže předpokládat, že platba je vyšší nebo rovna než 100 tisíc satoshi, protože ve skutečnosti jde o platbu ve výši 1 000 satoshi.
Lightning soukromí je tedy dostatečně dobré – on-chain není vidět platby, o platbách není žádný veřejně dohledatelný permanentní záznam, coiny nemají historii (takže nemusíme řešit „špinavé coiny“), síťové soukromí zajišťují víceré vrstvy (například Tor), a navíc jakýkoliv případný útočník musí svůj útok učinit přesně v době platby, po jeho ukončení již po platbě zůstanou jen změněné zůstatky kanálů.
Síť Lightning network můžeme používat ke zvýšení soukromí on-chain transakcí, tak trochu jako náhradu coinjoinu.
Z pohledu soukromí je on-chain transakce vs. Lightning den a noc. On-chain transakce je transparentní a viditelná pro všechny, včetně zdrojových adres (respektive výstupů jiných transakcí) a částek. O Lightning transakcích naopak neexistuje žádný permanentní záznam nebo zápis do blockchainu.
Představte si, že máte dva lidi, od kterých chcete přijmout platbu. A pak chcete něco zaplatit v nějakém obchodě.
Odesílatelé zatím neumí provádět Lightning platby a chtějí peníze poslat na on-chain adresu (může to být například vekslák, bitcoinový automat nebo směnárna). Přijetí do Lightning peněženky jako Breez jako dvě zvláštní on-chain transakce (Breez: Receive via BTC address) tyto transakce přímo nepropojí.
Praktický příklad: Chceme přijmout 0,01 BTC od člověka A a 0,015 BTC od člověka B. V peněžence Breez to můžeme udělat postupně: Vytvoříme jednu adresu pro přijetí a pošleme ji člověku A (pozor, nemůžeme ji poslat dvěma lidem najednou!). Když transakci odešle a vytěží se, v naší Lightning peněžence nám přibude zůstatek. Potom uděláme stejný postup pro uživatele B. V peněžence máme nyní zůstatek 0,025 BTC. Co když chceme někomu zaplatit 0,02 BTC? Nejjednodušší je udělat to Lightning platbou, ale můžeme to udělat i tak, že pošleme BTC na on-chain adresu. Jelikož v tomto případě je swap směrem na on-chain adresu služba třetí strany (Boltz), nikdy nevznikne transakce, ve které bychom spojili Bitcoiny od uživatele A a B. Pokud je tedy naším cílem, aby A nevěděl, že od B čekáme 0,015 BTC, tak se to z chain analýzy nedozví.
V případě, že používáte jinou peněženku než Breez, je důležité podívat se na to, jak dané platby vypadají on-chain. Například aktuální Phoenix peněženka všechny on-chain platby přijímá na jednu adresu propojenou s vámi. To ovšem neznamená, že je to neřešitelné – pomocí služby boltz.exchange můžete přeměnit on-chain Bitcoiny na Lightning zůstatek. Přičemž tyto platby/zůstatky nebudou na venek propojeny, protože přijímající Lightning peněženka a služba Boltz jsou provozovány jinými entitami.
Pozor, to neznamená, že propojení je nutně nedohledatelné – s dostatečným množstvím soudních příkazů si umím představit, že to služby dokážou ze svých logů postupně dohledat (i když u peněženky Breez to budou mít trochu těžší, protože zajišťuje i směřování plateb). Podstatné je, že nevzniká veřejně dostupný permanentní záznam. Pro lidi, kteří jen pozorují Lightning síť a Bitcoinový blockchain, je to velmi těžký oříšek.
Postup přijmout 0,0142323 BTC přes Lightning a pak jako „anonymně“ poslat 0,01416114 BTC ven za pár minut, není moc bezpečný způsob anonymizace, protože je již na první pohled jasné, že se jedná o tytéž peníze (ve druhé částce je započítán nějaký poplatek za swap, a proto je nižší). Proto je dobré propojit více vstupů, nebo doplnit peníze přes Lightning. Pokud přijmu 0,0142323 BTC přes on-chain a ven pošlu 0,02, protože jsem měl v Lightning peněžence dodatečný zůstatek, je to obtížně propojitelné.
Osobně preferuji tento způsob před mixováním pomocí Whirpool nebo Wasabi, protože je to méně nápadné a méně kontroverzní. Používám reputované služby na swap-out Lightning-on-chain a „neperu“ peníze s neznámými lidmi s pochybným reputačním rizikem. Takové coiny mají raději i centralizované instituce, které vyhodnocují riziko každé transakce. Ztratíte se v davu, ale ne jako člověk, který mixuje coiny, ale jako člověk, který používá peněženku standardním způsobem jako tisíce dalších uživatelů téže peněženky.
Samozřejmě záleží i na částkách – pokud máte 1 BTC nebo více, narazíte na různá omezení kapacity Lightningu a na poplatky za otevírání kanálů.
Bitcoin vytvořil skvělou decentralizovanou účetní jednotku a aktivum, které lze skutečně vlastnit. Síť Lightning network tuto inovaci využívá a přidává rychlou platební síť, která má pro většinu plateb nižší poplatky a není třeba ukládat transakce do decentralizované sítě. Spojení těchto dvou technologií je základem paralelního finančního systému budoucnosti.
Síť Lightning network je důležitou inovací ve skupině protokolů souvisejících s Bitcoinem. Umožňuje instantní platby s nízkými poplatky, bez rizika historie a s dostatečným soukromím. Ekosystém kolem protokolu Lightning je ve druhé epoše vývoje – nejtěžší porodní bolesti má za sebou, rozvíjí se a roste do všech směrů. Pokud používáte Bitcoin, měli byste používat i Lightning network.
O Lightning Network už jste pravděpodobně slyšeli. Pokud ne, doplňte si s námi mezery. Bitcoinové transakce jsou v těchto dnech nejen pomalé, ale i nepříjemně drahé. Posílat Bitcoin po Lightning Network je nejen levné a bleskurychlé, ale zvládne to už téměř každý. Pokud byste si snad mysleli, že posílání plateb je alfou a omegou druhé vrstvy bitcoinové sítě, nikdy byste asi nebyli dále od pravdy. Změní Lightning svět tak, jak jej známe?
Blockchain je vlastně decentralizovaná účetní kniha, jež obsahuje všechny transakce a stavy účtů, které kdy v dané síti nastaly. Na rozdíl od centralizovaných systémů tuto účetní knihu udržují všechny uzly (nodes) v síti kolektivně a nespoléhají se na žádnou jedinou autoritu (například banku). To umožnilo vytvořit první funkční decentralizovanou kryptoměnu – Bitcoin. Má to však háček. Ze začátku, když je síť ještě malá či málo používaná, je sice všechno v pořádku – transakce jsou rychlé, extrémně levné a každý si může celý blockchain stáhnout na počítač a nezávisle ověřit, zda vše sedí.
Po čase, když se popularita a používání Bitcoinu rozšířily, se však ukázalo, že blockchain je coby databáze relativně pomalé a neefektivní řešení – je mnohem efektivnější doplňovat jedinou centralizovanou databázi a odkazovat na ni, než když se musí koordinovat všechny uzly v síti. Blockchain skladuje všechny transakce, které kdy v dané kryptoměně proběhly. I malá platba za kávu z roku 2015 bude již navždy uložena v bitcoinové síti. To je u sítě, jejímž cílem je stát se globálním platebním nástrojem s obrovským počtem transakcí, problém. Bude to totiž znamenat, že velikost blockchainu se bude nafukovat a bude klást specifické nároky na ty, kdo chtějí spravovat uzel v síti (tzv. full node).
Budeme neustále zvětšovat bloky, abychom zachovali rychlost a nízké poplatky za transakci. To ale bude znamenat, že brzy si budou moci blockchain dovolit verifikovat pouze velcí hráči, kteří mají kapitál na nákladná datacentra. Tato možnost tak povede k centralizaci sítě, a tím pádem na ni bude možné snadněji zaútočit. Tímto směrem se vydala část BTC komunity, která se odštěpila a vytvořila Bitcoin Cash.
Soubor řešení, která zmenšují jednotlivé datové zápisy do blockchainu. Je jím částečně například i SegWit, chystané Schnorrovy podpisy společně s Taproot a dalšími vylepšeními. Technologických vylepšením Bitcoinu, tzv. BIPům, se věnujeme v samostatném článku: BIP – Technologická vylepšení Bitcoinu. Tato řešení fungují, ale nedají se aplikovat donekonečna a problém nafukování blockchainu nikdy nevyřeší úplně.
Velká většina uzlů v síti nebude udržovat celý blockchain, ale pouze jeho části, avšak takovým způsobem, aby se i z malého počtu uzlů dokázal celý blockchain zase poskládat. Toto řešení je zatím jen v experimentální fázi, počítá s ním například Ethereum (částečně např. i Cardano).
Počítají s tím, že většina běžných transakcí se nebude zapisovat přímo do blockchainu, ale do platebních vrstev nad ním, jelikož ty budou rychlejší a levnější. Blockchain bude těmto vrstvám sloužit jako základní kámen a „konečný soudce“, do něhož se pouze jednou za čas zapíše nový stav účtů (tzv. Settlement layer). Dominantním řešením je zde Lightning Network nebo například jeho obdoba na Ethereu pod názvem Plasma.
Někteří inovátoři navrhují zahodit blockchain úplně a použít alternativní protokol, například kryptoměny, které běží na bázi DAG (jakými jsou např. Nano, IOTA, Byteball). Tato řešení jsou ale ještě v rané fázi vývoje, ani zdaleka nedosahují bezpečnosti a stability bitcoinového blockchainu a panuje skepse, zda vůbec budou fungovat decentralizovaně v globálním měřítku.
O platebních kanálech mimo BTC blockchain se mluvilo téměř od počátku Bitcoinu. Jeden z prvních nedokonalých návrhů popsal i samotný Satoshi Nakamoto (asi tolik k tvrzení příznivců Bitcoin cash, že LN není součástí „Satoshiho vize“). Koncept dále rozvíjeli další BTC developeři (např. Mike Hearn a Matt Corallo), přičemž překonávali různé problémy (první pokusy s platebními kanály například fungovaly pouze jednosměrně).
Ucelenou formu dali konceptu Lightning Network až Joseph Poon a Thaddeus Dryja vydáním Lightning Network whitepaperu v roce 2016. Od tohoto okamžiku vývoj Lightning řešení škálování Bitcoinu začal naplno. Nezávisle na sobě je ve vývoji 8 implementací v rozdílných programovacích jazycích:
Vývojáři všech uvedených implementací se zavázali k dodržování tzv. BOLT standardu, což vede k tomu, že jejich implementace budou vzájemně kompatibilní. Vytvoří tak jednotnou síť, místo toho aby si vzájemně konkurovali. Na vývoji a podpoře Lightning Network se také podílí společnost Blockstream a mnoho nezávislých vývojářů.
Lightning Network je primárně řešením pro škálování sítě, ale zdaleka to není jediná věc, s níž má jeho implementace Bitcoinu pomoci.
Bitcoin nebude možné využívat k efektivnímu placení, pokud nebude podporovat mnohem více transakcí za sekundu (TPS) než současných 7. Lightning Network transakce mnohonásobně zvýší průchodnost sítě, protože jdou mimo blockchain. Přesto bude celá síť stále stejně decentralizovaná.
Bloky s transakcemi přibývají v BTC síti přibližně jednou za 10 minut. Abychom mohli transakci považovat za bezpečnou, měli bychom počkat alespoň 2–4 bloky, tedy 20–40 minut. Lightning Network transakce jsou však okamžité, proto mohou být vhodným řešením například pro platební terminály.
V Lightning Network lze posílat malé transakce (dokonce menší než 1 satoshi). Poplatek je přitom za předpokladu dlouhodobě otevřeného lightning kanálu téměř zanedbatelný. Díky tomu umíme nastavit třeba automatické platební systémy za drobné služby, za něž se mikropoplatky mohou strhávat například po minutách.
Lightning Network může napomoci ke zlepšení soukromí uživatelů, jelikož transakce v Lightningu probíhají mimo veřejný blockchain – v kanálech, které nejsou zcela transparentní. Lightning tak bude fungovat trochu jako Bitcoinový mixér.
Tzv. Cross chain atomic swaps budou díky Lightning možné tehdy, pokud bude Lightning Network podporovat více kryptoměn. V kanálu bude možné rychle a levně směnit jednu kryptoměnu za druhou, bez nutnosti používat burzu.
Základním stavebním kamenem Lightning Network jsou platební kanály (payment channels). Platební kanály jsou v podstatě smart contracty – speciální adresy, na kterých platí trochu sofistikovanější pravidla než na běžné BTC adrese.
Tyto kanály jsou zápisem do BTC blockchainu vytvořeny mezi dvěma protistranami a jsou obousměrné. „Transakce“ v Lightning Network jsou vlastně přepisy stavu účtů (tyto zápisy se ale ukládají pouze v daném kanálu, ne v BTC blockchainu). Každou změnu v tomto kanálu přitom musí schválit (podepsat) obě strany (multisignature). Stav kanálu se může po podpisu obou stran libovolně měnit s tím, že staré stavy se mažou a závazný je vždy ten poslední.
Velmi jednoduše řečeno se vlastně dvě strany mezi sebou dohodnou, jaký je mezi nimi stav účtů, a na konci se platba vyrovná zápisem do blockchainu. Některé kanály mohou vznikat pouze na pár plateb, jiné mohou vydržet aktivní roky, bez nutnosti kanál uzavřít. Uzavření kanálu totiž znamená nutnost zápisu do blockchainu, a nemá proto smysl otevírat nové kanály jen kvůli jedné či dvěma platbám.
K uzavření kanálu také není nutný souhlas obou stran – smart contract obsahuje mechanismy, které zabraňují tomu, aby byly kanály nepoctivými stranami zneužity (ty o své prostředky v kanálu mohou přijít). Každá strana tedy má za jistých okolností možnost uzavřít ho samostatně, čímž ukončí platební vztah. Technické detaily smart contractu jsou výborně popsány například v tomto článku.
Platební kanál je sám o sobě užitečný zejména v případě, že strany, které si ho spolu otevřely, mají nějaký dlouhodobý platební vztah. Pro běžné užívání (jednorázová platba za kávu) ale není praktické, aby si milovník kávy otevíral s kavárnou vlastní kanál, pokud se do ní neplánuje vracet pravidelně. Jednotlivé kanály od sebe ale nejsou izolované. Naopak, vytvoří propojenou síť!
Někteří správci LN kanálů mohou dokonce budovat síť kanálů (hubs or channel factories) čistě s cílem spojovat síť a přeposílat transakce. Za tuto službu si budou moci účtovat poplatek. Tím se rapidně zvýší průchodnost sítě.
Někteří kritici Lightningu tvrdí, že tyto služby zvýší centralizaci a usnadní regulace Bitcoinu. Osobně si myslím, že kritika není na místě – jednak bude možné stále využívat (hlavně pro větší a důležité platby) samotný BTC blockchain (který je díky malým blokům a možnosti snadno si spravovat vlastní BTC uzel dostatečně decentralizovaný), jednak bude lightningová síť globální a účastnit se či vytvářet huby bude moci každý.
Lightning Network s sebou nese také jistá rizika. Za určitých okolností, např. pokud je jedna ze stran kanálu offline (zejména u mobilních peněženek), se druhá strana může pokusit kanál jednostranně uzavřít a přivlastnit si část prostředků protistrany bez jejího souhlasu. Jedním z případných řešení může být využití služby tzv. Watchtower neboli Strážné věže, která je součástí LND implementace od verze 0.7.0-beta. V případě, že by se jedna strana pokusila druhou podvést, Watchtower zakročí a neférovou stranu potrestá přesunutím veškerých prostředků v kanále ke straně druhé.
Po uzavření platebního kanálu se výsledný konečný stav účtů (schválený oběma stranami) zapisuje jako běžná transakce do BTC blockchainu. V případě sporu může jedna ze stran kanál uzavřít jednostranně, v takovém případě se do blockchainu zapíše poslední transakce schválená oběma stranami.
Blockchain tedy může fungovat jako „soud poslední instance“ – pevná, decentralizovaná a neměnná základní vrstva, na níž stojí další, flexibilnější a rychlejší vrstvy. Dalo by se to přirovnat ke smlouvám – většinu smluv, které kdy podepíšeme, nikdy neřešíme se soudcem, pouze v případě rozporu.
Lightning Network je stále ještě ve fázi vývoje, ale i přesto již existuje řada šikovných aplikací a peněženek se skvělou UX a UI, které umožňují používání Lightning Network na denní bázi jak začátečníkům, tak i pokročilým.
Počet uzlů a účastníků sítě rychle roste. Průměrná životnost kanálu je 389 dní a průměrná kapacita kanálu je 0,029 BTC. V lightningové síti běží v tuto chvíli 17 556 nodů, z toho jich je 3 837 provozováno v Tor síti. Existuje již řada služeb (směnárny, e-shopy s fyzickým i virtuálním zbožím, casina a virtuální hry), které lightningové platby přijímají.
Klasická platba přes Lightning Network pak probíhá nejčastěji pomocí QR kódů, které tradiční bankovnictví teprve objevuje. Lightning Network už nějakou dobu není jen pro geeky, kteří ovládají Linux a příkazovou řádku, ale většina intuitivních LN peněženek je dostupná pro iOS, Android, MS Windows i macOS. Nabízejí nejen příjemné a jednoduché uživatelské prostředí bez zbytečných komplikací, ale ty nejpoužívanější jsou i v češtině.
!
Je potřeba myslet na to, že celá technologie Lightning Network je stále v betě, tedy ve fázi vývoje. Ačkoliv nejsou známy žádné případy ztrát finančních prostředků, je potřeba k Lightning Network přistupovat opatrně a nenechávat v síti nijak závratné částky.
Připomínáme, že lightningové peněženky jsou tzv. hot wallet, tedy jsou nonstop připojené k internetu. Pro větší sumy doporučujeme používat cold wallet, nejlépe hardwarové peněženky, kterým se podrobně věnujeme v našem článku: Hardware peněženky – Jak bezpečně uchovávat bitcoin a další kryptoměny?
ZAP: Desktop je aktuálně nejpovedenější lightningová peněženka s perfektním grafickým rozhraním, jednoduchým ovládáním a spoustou šikovných funkcí.
Zálohu seedu, oněch 24 slov, neberte na lehkou váhu. Dobře si je poznamenejte na papír nebo do Cryptosteelu či Bunkeroidu. NIKDY seed neukládejte do PC, nefoťte telefonem a nikomu ho neukazujte!
Zvolte si silné heslo, nejlépe pomocí password manageru. Pojmenujte peněženku a vyberte si způsob zálohy stavu kanálů. Ty se ukládají do souboru channel.backup a jde o jediný způsob, jak získat přístup k bitcoinům, které máte v kanále. Záloha na cloud může znít nedůvěryhodně, ale bez seedu je záloha kanálů k ničemu. SSD disk v PC může umřít, a proto není od věci mít zálohu i někde jinde.
Na příkladu je vidět dokončení nastavení zálohy v lokálním režimu, tedy na stejném PC, kde se nachází ZAP peněženka. Po potvrzení se začne walletka synchronizovat s lightningovou sítí a během 1–2 minut je hotovo. Mezitím můžete poslat první bitcoiny na onchain část peněženky, abyste mohli otevřít první kanál. Pro lepší transakční soukromí pošlete nezaokrouhlenou částku a menší poplatky posílejte z bech32 adresy, která vždy začíná znaky bc1.
Abyste mohli poslanými bitcoiny otevřít kanál, musí mít alespoň jedno potvrzení v blockchainu. Po kliknutí na odkaz u Transaction ID se otevře Blockstream explorer. Všimněte si zelených informací o úspoře poplatků za vytěžení transakce a faktu, že nedošlo k žádnému známému narušení transakčního soukromí, např. zaokrouhlená částka platby.
Po kliknutí na Channels vidíme, že zatím žádné kanály nemáme. Jsou zde dvě volby, Create a Manage. Zvolíme Create a jdeme na věc.
Jakmile vyberete node, zbývá zvolit kapacitu kanálu, tedy množství bitcoinů (satoshi), které do kanálu uzavřeme. Po kliknutí na Next se zobrazí rekapitulace a tlačítkem ve spodní části okna potvrdíme otevření kanálu.
Úspěšné otevření kanálu je závislé na onchain transakci s jedním potvrzením, pokud nemá druhá strana nastaveno jinak. Jakmile dojde k prvnímu potvrzení v blockchainu, kanál je otevřen a připraven k použití.
Platby po Lightning Network probíhají pomocí tzv. ln faktur začínajících písmeny lnbc. Většina dobrých peněženek a projektů přijímajících LN platby automaticky překládá do QR kódu. Stačí tedy nascanovat QR nebo zkopírovat znění ln faktury stiskem tlačítka a vložit. ZAP peněženka automaticky načte všechny údaje, stačí potvrdit a platba je hotová.
Ve chvíli, kdy po Lightning Network něco zaplatíte, vznikne na druhé straně kanálu tzv. remote balance stejné hodnoty, jakou jste poslali. Ta představuje částku, kterou můžete po Lightning Network naopak přijmout. Vytvoříte fakturu na částku, kterou chcete, aby vám druhá strana zaplatila, a pošlete jí QR nebo textové znění faktury.
Jakmile druhá strana LN fakturu zaplatí, status faktury se změní na zaplaceno. Bitcoiny se nám objeví v přehledu plateb a jsou okamžitě k použití, není třeba čekat na žádné potvrzení v síti.
V Preferences a General naleznete nastavení jazyka, fiat měny a výběr tmavého/světlého režimu. Pod Wallet pak nastavení typu onchain adresy (doporučujeme nechat bech32), preferovaný onchain explorer, zdroj kurzu BTC a nastavení těžebních poplatků co do počtu bloků od odeslání transakce do sítě.
Jakmile máme otevřený kanál, můžeme si vybrat z poměrně široké škály obchodů a služeb, které Lightning Network podporují:
Mnozí příznivci Bitcoinu považují Lightning Network za nejlepší cestu a skutečnou inovaci (oproti mnoha „rychlým blockchainům“, které jsou často rychlé pouze proto, že jsou buď centralizované, nebo je nikdo nepoužívá). Vývojářská aktivita a nadšení jsou skutečně velké, zatím se však drží hlavně pod povrchem – v odborných technických kruzích. Vývojáři přirovnávají rozvoj Lightningu k nadšení, které vnímali v rané fázi vývoje samotného Bitcoinu – v letech 2010–2013. Mezi běžné uživatele a firmy se Lighting Network dostává sice pomalu, ale jistě.
A nyní malá odbočka do historie. Kdysi dávno fungoval internet tak, že všechny počítače byly spojené jedním kabelem a všechny počítače v síti komunikovaly se všemi. Pokud jste chtěli poslat obrázek jednomu počítači v síti, museli jste jej zároveň poslat všem. Tomuto typu komunikace se říká Broadcast. Značnou podobnost můžeme najít i u bitcoinového blockchainu. Pokud odesíláme transakci do bitcoinové sítě, posíláme ji na všechny počítače (full nody) v síti. A stejně jako jsme tenkrát přišli na to, že Broadcast není škálovatelné řešení, přišli jsme na to i u blockchainu.
Řešení poskytl typ komunikace, kterému říkáme Unicast. Dnes už neposíláme data na všechny počítače, které jsou připojené na internet, ale pouze na jeden, ve většině případů na nějaký server. V případě Bitcoinu není potřeba, aby každá informace, kterou si vyměňují dvě strany, byla propagována všem počítačům v bitcoinové síti. Stačí, když si informace vymění účastníci transakce. A to je způsob škálování Bitcoinu, které přináší Lightning Network.
Dnešní digitální svět stojí převážně na Unicastu. Nemusíte mít ani moc bujnou fantazii, a pokud Lightning Network trochu rozumíte, uvidíte jistou podobnost. Pokud je Bitcoin internetem peněz, pak je Lightning Network pro Bitcoin to, co je Unicast pro dnešní internet. Pokud vám to zní jako z nějakého sci-fi filmu, doporučujeme výborný článek od Melika Manukyana: Lightning Network enables Unicast Transactions in Bitcoin. Lightning is Bitcoin’s TCP/IP stack.
Jakmile jen trochu pochopíte, otevře se před vámi další králičí nora, která je dost možná ještě hlubší než ta bitcoinová. A zatímco všichni řeší levné a rychlé transakce, nepozorovaně pod radarem letí projekty jako RGB, Storm, Prometheus a další součásti LNP (Lightning Network Protocols). Už jste někdy něco vlastnili, aniž by o tom nikde (ani v blockchainu) existoval nějaký záznam, a přesto jste mohli své vlastnictví prokázat?
1/ With #RGB one needs to change a mindset from “ethereum smart contracts” to normal understanding of what smart contract is. And first, this is a _contract_ between parties. Well-defined parties. Not some record in a global registry, like this concept was distorted in ethereum.
— Dr Maxim Orlovsky [LNP/BP] (@dr_orlovsky) March 9, 2021
Pokud existuje v rámci Bitcoinu a Lightning Network ještě někdo, o kom jste dosud s největší pravděpodobností neslyšeli, ale měli byste, pak je to Dr. Maxim Orlovsky, jeden ze zakladatelů Asociace Standardů LNP/BP, geniální vědec, inženýr a cypherpunker. Budoucnost, kterou naznačují první záblesky Maximovy práce, je fascinující a slovy těžko popsatelná.
i
LNP/BP: A gentle introduction by Giacomo Zucco
Zaujalo vás téma LNP/BP? Pak doporučujeme „něžný úvod do problematiky“, který pro nás napsal sám Giacomo Zucco, spoluautor zmíněného protokolu RGB.
Lightning Network je komplexní technologie a máme před sebou ještě dlouhou cestu, než ji budeme moci používat intuitivně a bez zádrhelů. Zaznívá také kritika různých vlastností a funkcí Lightningu – této kritice a budoucnosti Lightningu (i v rámci jiných kryptoměn) se budeme věnovat v dalším článku.