Poslední dobou se zdá, že PoS získává na popularitě. Naoko vypadá jako užitečná optimalizace, ale je méně bezpečný než Proof of Work. Tento článek si klade za cíl vysvětlit, jak Proof of Stake (ne)funguje, jaké má problémy a jaké má výhody. Také se podíváme na to, proč je vůbec kryptoměna nadesignovaná tak, jak je nadesignovaná, a proč na bezpečnosti záleží.
Pokud by vám stačil pohled člověka, který se zhruba 10 let věnuje Bitcoinu, 12 let kryptografii a bezpečnosti a 17 let programování, pak je to tento:
Proof of Stake je jednoznačně méně bezpečný než Proof of Work a nepoužíval bych ho na ochranu svého majetku.
A tím by článek mohl skončit. Ovšem to by mohl říct kdekdo, že? Vždyť i samotní developeři PoS mají zkušenosti a tvrdí opak. „Don’t trust, verify!“ říká naše motto a v jeho duchu se pokusím umožnit vám verifikovat toto tvrzení.
Abyste tomu porozuměli do té míry, že si budete jisti pravdivostí, je třeba, abych vám předal všechny své znalosti. Bohužel jich není málo, ale věřím, že pro lidi, kteří chtějí znát pravdu, to nebude problém. Jak mám v oblibě, začneme základními předpoklady a pak logicky přejdeme k důsledkům, které z nich vyplývají.
Různí propagátoři kryptoměny udávají různé důvody pro její existenci. Jeden z nejčastěji uváděných jsou levnější transakce, což však není pravda. Provozovat jeden server je přece levnější než provozovat více serverů a kryptoměna je designovaná na provoz tisíců, možná až miliard serverů.
Podívejme se, co napsal sám Satoshi. Tvrdil, že banky se nemohou vyhnout arbitráži, a tedy nemohou poskytovat skutečně nevratné platby. Proč? Proč si Satoshi prostě nezaložil banku a neposkytl takovou službu? Pokud by to udělal správně, jistě by vydělal, a to s menším rizikem než vymýšlet zcela nový systém a ještě se i vzdát kontroly nad ním.
Neboť stát zakázal.
Přesně tak, nejzákladnější vlastností Bitcoinu je obrana proti útočníkům včetně státu. Je jedno, zda státu věříte, nebo ne, tento fakt nelze popřít. Sám Satoshi se odkazoval na to, že centralizované systémy stát snadno vypnul (např. Napster nebo e-gold) a decentralizované ne (Bittorrent).
Pokud bychom předpokládali, že státy jsou důvěryhodné a slušné, dal by se vytvořit mnohem jednodušší a efektivnější mechanismus: Stačilo by, aby několik států (nebo i všechny) digitálně podepisovalo stavy účtů. Bitcoin má smysl pouze tehdy, pokud je taková bezpečnost považována za slabou. Bez ohledu na to, zda jej považujete za ochranu před úpadkem státu, s níž jinak souhlasíte, nebo nesouhlasíte se státem v současnosti.
Pokud už máme ujasněno, že aby měla kryptoměna smysl, musí bojovat proti státu (alespoň v oblasti peněz), můžeme si vyjmenovat, jaké útoky jí od státu hrozí a jak se jim bránit.
Navrhnout systém tak, aby spolehlivě fungoval, i když se účastníci neznají, je tedy nutností, pokud je cílem odolnost vůči státům.
Anonymita zabraňuje státu identifikovat člověka, který má být postižen za nějaké chování. Výhodou je, že stát nemůže ubližovat lidem, kteří porušují nespravedlivé zákony (např. proti svobodě slova). Nevýhodou je, že je zároveň nemožné postihnout lidi za nemorální chování, jako jsou například krádeže a podvody. Pokud jsou všichni anonymní, je racionální předpokládat, že každý může být potenciálním útočníkem, a podle toho se zachovat.
Z noční můry nedůvěry nás dokážou vytrhnout matematické důkazy. Nemusíme věřit, že Pythagoras byl čestný člověk, stačí, že Pythagorova věta se dá matematicky dokázat. Je spousta zajímavých důkazů, které umí automaticky ověřit počítač, což nám může pomoci při designu kryptoměny. Například pomocí elektronického podpisu lze ověřit, že peníze má jejich vlastník opravdu v úmyslu přesunout v dané výši a konkrétnímu příjemci.
Jenže s penězi je tu jeden problém: musí být vzácné. Pokud by peníze nebyly vzácné, tzn. kdokoli by si mohl připsat jakékoli množství, velmi rychle by toho zneužili nepoctiví lidé, aby získali hodnotu od druhých bez poskytnutí protihodnoty. Na to, aby byly peníze vzácné, je nutné i zabránit utrácení jednotek, které již byly utraceny. Jinak by bylo možné opakovaným utrácením dosáhnout stejného efektu jako nekonečným tisknutím.
Fyzikálně nic nebrání majiteli soukromého klíče v podepsání dvou konfliktních zpráv-transakcí. Stejně jako nám nic fyzikálně nebrání dosadit do matematického vzorce za x dvě různá čísla a zapamatovat si oba výsledky. Neboť přesně to se děje při podepisování.
Jelikož se tomu nedá zabránit, je nutné problém vyřešit jinak – tím, že se všichni dohodnou, která transakce bude platná, a tato dohoda se nezmění. A tady nastává problém. Co když útočník podepíše dvě transakce a odešle je dvěma různým účastníkům najednou? Intuice říká, že platit by měla ta první, jenže která je první? Ano, každý počítač má hodiny a zná aktuální čas. Ten není přesný. Ale i kdyby byl, jak mohu vědět, že transakci opravdu přijal někdo jiný dříve? Může přece lhát!
Neexistuje matematický důkaz pro fyzickou událost, která nastala v nějakém čase. Matematické důkazy ze své podstaty nemohou brát v potaz vstupy z fyzického světa. Co tedy s tím?
Jedna zdánlivá možnost je zneplatnit všechny transakce, které mají konflikty, a potrestat majitele tím, že jeho peníze už nebude možné použít. Bohužel, tak jednoduché to není. Pokud by to bylo učiněno takto, bylo by možné triviálně sabotovat jiné lidi. Stačilo by poslat transakci příjemci, počkat, než za ty peníze dodá zboží nebo službu, a pak vyrobit konfliktní transakci. Tím by peníze zmizely nevinnému příjemci, ne nečestnému odesílateli!
Dalším řešením se zdá být jednoduché hlasování. Každý účastník hlasuje, kterou transakci viděl jako první. Většina vyhrává a v momentě odhlašování příjemce ví, že dostal zaplaceno.
Nicméně, co když přijde nový účastník sítě, jak se dozví, komu patří kolik peněz? Případně jak se účastník, který byl offline, dozví, co se událo, zatímco byl offline? Pokud se každé hlasování odkazuje na výsledek předchozího, může tím vzniknout řetěz, který vždy povede k aktuálnímu stavu.
Bohužel tento přístup má zásadní problémy.
Je třeba si uvědomit, že stávající účastníci mají pouze dvě možnosti: podvolit se útočníkovi a akceptovat přepsání historie, nebo zůstat nekompatibilní s novými. Obě možnosti jsou pro síť velmi špatné a ta se stává nepoužitelnou.
Právě proto Satoshi vymyslel mining pomocí Proof of Work. Ten zde nyní nebudu rozebírat, pojďme rovnou na Proof of Stake, který mnozí označují za lepší.
Proof of Stake se snaží problém hlasování vyřešit tím, že existuje konečné množství hlasů, které jsou nějak přiděleny různým lidem, a ti pak hlasují o stavu sítě. Hlasů se tedy nedá vyrobit nekonečně mnoho a mělo by být náročné pro jednotlivce nebo malou skupinu získat nadpoloviční většinu, protože hlasy jsou navázány na vzácný zdroj, v tomto případě na peníze použité v síti.
Takto se to alespoň prezentuje, realita je však složitější.
Proof of Stake běžně funguje tak, že se náhodně (dle váhy hlasů) vybere validátor, který má za úkol potvrdit, které z nových transakcí považuje za finální. Nemá samozřejmě dovoleno potvrzovat transakce proti pravidlům sítě. Může pouze vybrat, které z navzájem protichůdných, ale jinak platných transakcí budou považovat za pravdu. Po něm se vybere další náhodný validátor a ten potvrzuje další transakci.
Způsobů, jak implementovat Proof of Stake, je mnoho. O to těžší je vysvětlit, že Proof of Stake je málo bezpečný jako koncept. Některé ze způsobů jsou očividně zcela chybné a to nám umožňuje je efektivně vyloučit.
Zajímavý problém u Proof of Stake je možnost, že validátor je offline. Pokud by síť vyžadovala, aby vybraný validátor za každou cenu potvrdil transakce, a neumožňovala by ho změnit, dala by se velmi snadno zničit. Nebylo by ani nutné mít 51 % hlasů. Útočník (například stát, který chce mít monopol na vydávání a regulaci peněz), jenž by měl za cíl síť zničit, by nakoupil například 1 % z hlasů a počkal, až ho zvolí. Pak by prostě nedělal nic a nechal síť čekat donekonečna. Při jednom procentu by musel čekat pár stovek bloků. Pokud by bloky trvaly stejně dlouho jako v Bitcoinu, trvalo by to asi maximálně několik dní.
Ovšem pozor, propagátoři PoS často argumentují rychlostí a bloky jsou mnohem častější. Nepřekvapilo by mě, kdyby bylo možné takto navržený PoS coin zničit během hodiny.
Vytvořit náhodné číslo výpočtem je velmi náročné. Počítače/výpočty fungují vždy na základě konkrétních, neměnných pravidel. Pomocí kryptografie však umíme dosáhnout alespoň vlastností, které jsou pro nás dostatečné. Například z nějakého počátečního stavu vygenerovat následující číslo tak, že ho nikdo jiný neumí předpovědět.
Jeden z návrhů PoS vybírá ověřovatele náhodně, a tedy vyžaduje nezávisle ověřitelná náhodná čísla. Ta se však nemají odkud generovat – pokud se budou generovat z informací v blockchainu, budou mít validátoři motivaci data upravit tak, aby ovlivnili pravděpodobnost jejich výběru. Pokud se náhoda vypočítává prostřednictvím hash funkce, budou muset hádat vstupy – tím se z toho stane PoW!
Řešením může být round-robin výběr – všichni validátoři se nějak uspořádají a každý dostane nějaký počet výběrů podle výšky stake. Tím bude výběr validátorů předvídatelný, což může vést k dalším problémům. Například pokud bude útočník vybrán několikrát za sebou, bude o tom vědět předem a může toho využít k double spend útoku. Tuto situaci nelze detekovat, neboť (anonymní) útočník může vystupovat jako několik validátorů. Nelze jednoznačně říci, kolik bloků je třeba čekat, ale více než polovinu kola to nemá smysl (jinak by to znamenalo možnost 51% útoku).
Jeden z nejznámějších problémů PoS se jmenuje „nothing at stake“. Je způsoben tím, že na rozdíl od PoW minerů validátorům nic nebrání současně potvrzovat konfliktní verze historie. Validátor může poslat různé verze historie různým částem sítě nebo poslat jinou historii klientovi, který se právě připojil.
Nejznámějším řešením tohoto problému je potrestání validátora, který vytvořil dvě historie. Pokud síť identifikuje dva protichůdné bloky podepsané stejným klíčem, stake přiřazený k tomuto klíči se zlikviduje nebo zabírá. Jenže ani tato operace není přímočará.
Potrestání validátorů tedy musí nastat později a síť se na tom musí nějak dohodnout. Dal by se zvolit konkrétní počet bloků, po kterých síť nepřijme důkazy o chybě validátora. Jenže validátor by měl stále možnost prezentovat alternativní verzi historie novým uživatelům. Je proto nezbytné data o potrestání uložit do bloků.
Co brání útočníkovi vygenerovat celou historii, která tvrdí, že potrestání nenastalo?
To, že nemá 51 %. Nicméně, v případě PoS se dá 51% útoku dosáhnout „cestováním v čase“. K tomu se dostaneme v kapitole long-range útok.
Řekněme, že validátor byl offline a někdo jiný vyrobil blok, ve kterém tvrdí, že ten předtím byl offline. Po nějakém čase přijde validátor online a rozhodne se vytvořit blok tak, jako kdyby offline nebyl. Máme tím pádem dvě historie, které si navzájem odporují. Ty mají nyní výšku jeden blok.
Jedna historie tvrdí, že validátor online byl, druhá, že nebyl. Následující validátor má rozhodnout, která z historií je platná, tím, že nad ní naváže blok. Pokud se „náhodou“ stane, že tentýž validátor je zvolen znovu, bude mít motivaci hlasovat za svou verzi historie. Samozřejmě stejně jako v případě Bitcoinu lze problém zmírnit čekáním delší dobu.
Na pohled se může zdát, že i zde pomůže potrestání validátora. Jenže v tomto případě se nedá dokázat, který z validátorů má pravdu. Žádný validátor nepodepsal dvě historie. Zde nastupuje další problém: pokud byly obě verze distribuovány do sítě v přibližně stejnou dobu, někteří validátoři by hlasovali pro jednu, jiní pro druhou. Jedna z nich nakonec vyhraje.
Validátoři, kteří hlasovali pro verzi, jež prohrála, nyní musí navázat na tu, která vyhrála, a tím podepsat konfliktní bloky! Teoreticky by měli být potrestáni, jenže oni nemohou za to, že se spletli. Tento případ se trochu liší od předešlého a dal by se identifikovat. Ovšem pokud by nebyli potrestáni vůbec, vyplatilo by se jim hlasovat pro obě verze, aby získali odměnu v obou případech. Hlasování pro obě verze má však pro síť nulovou hodnotu, neboť nerozhoduje o tom, která historie je platná.
Kromě Sybil útoku na hlasování, popsaného výše, existuje ještě Sybil útok na síťovou infrastrukturu, který je aplikovatelný na všechny P2P sítě. V tomto případě se nazývá Eclipse útok. Funguje tak, že útočník ovládne všechna spojení ze sítě oběti a nahradí je svými servery. Oběť si myslí, že komunikuje se širokou skupinou různých účastníků sítě, ale ve skutečnosti komunikuje s jediným účastníkem – útočníkem.
To může vypadat náročně, ale například pro poskytovatele internetového připojení je to velmi jednoduché. A nesmíme zapomínat, že poskytovatel může být ovládnut zkorumpovaným státem. Autentifikace spojení nemá velký smysl, protože z principu anonymní P2P sítě nelze vynutit přiřazení klíčů ke zvláštním osobám. Tor může pomoci, pokud ho poskytovatel neblokuje, ale pravděpodobně nejjistějším řešením je mít nezávislé internetové spojení – jiného poskytovatele.
To však drtivá většina populace nemá. Dalo by se namítnout, že mnozí mají mobily a mohli by mobilní spojení použít jako zálohu. To však musí být provedeno proaktivně. Nelze změnit spojení, když nastane problém, neboť problému si uživatel téměř jistě nevšimne. A i kdyby si všiml, skoro každý, kdo má více než jedno spojení, ho má poskytováno od firmy v témže státě.
Jak se toto týká PoS? Pokud by se útočníkovi podařilo udělat takový útok na uživatele PoS Coin, mohl by všechny alternativní historie zatajit. Tím by se dočasně vyhnul trestu za podepisování konfliktní historie. Ale je to ještě drsnější. Útočník by mohl poslat platně vypadající data, i kdyby měl méně než 50 % sítě! Mohl by se totiž tvářit, že všichni ostatní validátoři jsou offline.
Jediná obrana proti tomu je neakceptovat příliš mnoho výpadků v síti. Jenže to přináší jiný problém – pokud by nastaly skutečné plošné výpadky (například kvůli chybě v protokolu), celá síť by se natrvalo zastavila. Samozřejmě, nemuselo by to být pravidlo sítě, jenže jak to známe ze světa HTTPS, většina lidí klikne na tlačítko „Akceptovat riziko“.
Naproti tomu v případě PoW je alespoň vygenerování takové historie extrémně drahé a trvá dlouho. I kdyby se útočníkovi toto vše podařilo, nevyplatí se mu útočit, pokud je hodnota odcizeného zboží nebo služeb nižší než hodnota spálené energie. Počkat, dokud se transakce nepotvrdí v tolika blocích, v kolika se vytěží více peněz, než je výška transakce, na obranu před tímto útokem stačí.
Na rozdíl od PoW se v PoS validátoři přidávají operací na blockchainu – transakcí. A na to, aby transakce nastala, ji musí validátor potvrdit. Stávající validátoři tedy nemají až takovou motivaci potvrdit transakci, protože jim ubírá zisk.
Dokonce čelí vězeňskému dilematu. Pokud každý z nich odmítne transakci potvrdit, všichni si uchrání dlouhodobý zisk. Ten, kdo ostatní podvede, získá krátkodobý zisk a ztratí ten dlouhodobý. V případě, že síť podporuje smart kontrakty, validátoři mohou uzavřít smart kontrakt, který cenzuru vynutí. To je docela vtipná ironie, jelikož mnoho PoS projektů se zároveň o smart kontrakty snaží.
Samozřejmě, pokud nový validátor zaplatí dost vysoký poplatek, může staré validátory motivovat dostatečně na to, aby ho přidali. Jaký je racionální poplatek? Ten závisí na časové preferenci. Pokud má nový validátor nižší časovou preferenci než stávající, má smysl poplatek zaplatit. Pokud má vyšší, není ekonomické, aby se stal novým validátorem.
Pokud validátor prodá svůj stake, jeho klíč nelze použít k vytvoření bloků po prodeji, ale stále je možné vytvářet bloky před prodejem. V momentě, kdy validátor prodal stake, neexistuje nic, co by ho motivovalo neprodukovat alternativní historii. Samozřejmě, problém by to byl, pouze pokud by se přesunulo více než 50 % stake.
Decentralizovaná kryptoměna funguje za předpokladu, že více než 50 % sítě jsou lidé čestní a motivovaní být čestnými. Jenže v případě starých klíčů tato motivace není. Je sice pravda, že žádný validátor teoreticky nemá klíč k velkému stake, ale získat další klíče může být jednoduché. Stačí nabídnout odměnu jiným validátorům, kteří stake také prodali.
Ironicky je možné pomocí smart kontraktů a zero-knowledge proofs udělat takovou transakci bez důvěry, dokonce na jiné síti, včetně Lightning Network. Bývalý validátor, kterému jsou nabídnuty peníze za prozrazení starého klíče, asi tuší, že kupující chystá útok. Přijmout protihodnotu ve stejné síti by proto byl špatný nápad, ale díky možnosti použít jinou síť to není problém. Jelikož účastníci jsou anonymní, je možné, aby útočník zveřejnil inzerát na anonymním webu, že kupuje staré klíče i s auditovatelným programem, který zajistí výměnu. Anonymní bývalí validátoři mu je poskytnou s jistotou, že bude zaplaceno (například přes Bitcoin LN, která má vysokou míru soukromí).
Toto je nesrovnatelně jednodušší a levnější než koupit většinu ASICs. Pro bývalé validátory jsou to peníze zdarma. Jakmile má někdo 51 % v jakémkoliv historickém momentu, je možné triviálně vytvořit alternativní historii od toho okamžiku. Dodatečné náklady jsou téměř nulové. Útočník může tuto alternativní verzi poslat nově připojeným účastníkům a získat od nich protihodnotu za bezcenný token.
Zároveň vyvstává otázka, co udělá zbytek sítě? Pokud budou alternativní historii ignorovat, dojde k rozdělení sítě na dvě. Pokud ji přijmou, dávají útočníkovi plnou moc útočit i nadále. Protože útočník může zároveň cenzurovat přidávání dalších validátorů, není možné mu tuto moc nijak vzít – tedy kromě hard forků.
V podstatě jedinou možnou obranou je fork, vždy když někdo prodává stake. Forky ale vedou k centralizaci. Noví účastníci a ti, kteří byli offline, se najednou musí ptát nějaké autority, v jakém stavu je síť. Tím jsme se zase dostali k počátečnímu problému.
Když už vidíme, jaké problémy má Proof of Stake, je namístě otázka „Možná to i tak stojí za to?“. To, že má něco problémy, neznamená, že je třeba to zavrhnout. Zejména pokud je benefit vyšší než cena.
Abychom to mohli posoudit, musíme nejdříve pochopit, co vlastně PoS řeší. Jedna z chybných teorií je, že PoS umožňuje škálování. Není to pravda. Pokud by neexistovala jiná omezení, bitcoinové bloky by mohly mít klidně několik TB a se škálováním by nebyl problém. Problém je, že jsou jiná omezení. Na to, aby peníze fungovaly jako peníze, nesmí být možné je vyrobit „ze vzduchu“. A toho se dá v decentralizované síti dosáhnout pouze tak, že všichni účastníci ověřují všechna data.
Pokud má každý ověřovat všechna data, vede to nutně k omezením vyplývajícím z výkonu sítě, procesorů, pamětí... Ta jsou stejná bez ohledu na to, zda jde o PoS, nebo PoW. PoS chain tak musí mít stejnou velikost jako PoW chain, aby si zachoval stejnou míru decentralizace. Neznáme žádnou „správnou magickou konstantu“, ale víme, že to není nekonečno.
Jiné teorie říkají, že PoS zvyšuje decentralizaci nebo bezpečnost. Jak je vysvětleno výše, není to pravda. PoS má horší decentralizaci a bezpečnost.
Další teorie říká, že PoS nepálí užitečný kapitál. To však také není pravda. PoS zabraňuje použít existující kapitál na jiné investice a to je ekvivalentní pálení kapitálu. Na to, aby někdo získal stake, musí pracovat. Na to, aby někdo získal ASIC a elektřinu, musí pracovat.
Může se zdát, že PoS zvyšuje rychlost, protože není třeba čekat na PoW. Jenže to není pravda, protože kvůli problémům popsaným výše je i v PoS síti nutné čekat. Důvodem, proč transakce nejsou zabezpečeny okamžitě, není PoW – bloky by mohly být i rychlejší. Důvodem je, že propagace informací přes decentralizovanou síť trvá dlouho a toto má vliv i na PoS.
Čeho reálně PoS dosahuje, je to, že se konkrétně nepálí energie na PoW, takže teoreticky je lepší pro životní prostředí. Píšu „teoreticky“, protože pokud je pravda, že lidé způsobují globální oteplování produkcí CO2, pak je ireleventní, kolik energie se využívá a na co. Je nutné zajistit, aby energie byla produkována z „čistých“ zdrojů. Pokud nebude dostatek elektřiny produkované z „čistých“ zdrojů, máme problém bez ohledu na to, zda existuje Bitcoin, nebo neexistuje. Bitcoin by sice mohl ovlivnit (negativně i pozitivně!) rychlost nasazování „čisté“ energie, ale rozdíl asi nebude výrazný.
Bitcoin má však potenciál zabránit jedné ekologické katastrofě, která je podle mě mnohem horší než globální oteplování: jaderné válce. Válka byla v minulosti často financována pomocí státní inflace. Asi nejznámějším případem bylo zrušení zlatého standardu v USA kvůli válce ve Vietnamu, ale financování války inflací bylo realizováno již ve starověkém Římě, kdy se zmenšoval obsah vzácných kovů v mincích. V současném světě, kdy má několik států přístup k jaderným zbraním, by větší konflikt mohl znamenat obrovskou část planety zničenou jadernými zbraněmi a radioaktivní částice ve vzduchu by způsobily obrovské problémy i neutrálním územím.
Neinflační Bitcoin je obrovskou nadějí na zvrácení tohoto osudu. Ovšem aby toho dosáhl, musí nejprve přežít – s maximální mírou bezpečnosti, i kdyby hraničila s paranoiou.
Jak vidíme, Proof of Stake není tak bezpečný jako Proof of Work, a na bezpečí záleží. V případě, že by na něm nezáleželo, je PoS příliš složitý. Vypadá to, že PoS tedy celkově nemá příliš smysl. Je sice pravda, že mnohé projekty se ho snaží použít, ale jsou velmi mladé, investoři jsou nezkušení a chyby ještě z různých důvodů nebyly zneužity. Podobně jako v případě dot com bubliny se může ukázat, že je to nesmysl, a časem může splasknout. Tím však nelze garantovat, že bublina splaskne brzy. Přestože článek popírá užitečnost Proof of Stake, autor nemůže garantovat, že velká masa lidí to pochopí a prodá PoS Coin, a také neodpovídá za finanční ztráty z rozhodnutí na základě článku.
Martin Habovštiak
Martin je programátor so špecializáciou na bezpečnosť, súkromie, Bitcoin a systémové programovanie. Bol dlho aktívnym členom Progressbaru a spoluzaložil Bratislavskú Paralelnú Polis. Vymyslel Turbo kanály, našiel zraniteľnosti v rôznom software a má bohatý profil na GitHube. Viac o ňom sa dozviete na jeho osobnej stránke, kde môžete aj využiť platené mikrokonzultácie cez Lightning Network.