57 / 736TOWER

Lightning Watchtower

Watchtower — delegovaný dohled nad kanálem

Když je tvůj Lightning uzel offline, někdo musí dál hlídat, zda protistrana neuzavřela kanál podle již zrušeného rozdělení peněz. Lightning Watchtower může takový pokus zachytit a zasáhnout podle podkladů, které od tebe dostal předem.

Lightning Watchtower je služba, která sleduje bitcoinový řetězec za uživatele platebního kanálu. Pokud protistrana zveřejní odvolaný stav, může vyslat předem připravenou nápravnou transakci. Tím pomáhá chránit peníze i během výpadku uživatelova uzlu; potřebuje však správná data, funkční spojení a včasné potvrzení zásahu. Uzel je program, který spravuje kanály a zpracovává Lightning platby; během výpadku se s ostatními nemůže spojit.

Anna a Pavel mají platební kanál: peníze jsou společně uzamčené v Bitcoinu a platbami přes Lightning se mění jejich rozdělení. Pavel zaplatí Anně, oba si potvrdí nové zůstatky a starý stav odvolají. Pak Anně vypadne internet. Kdyby Pavel zveřejnil starý stav, mohl by se pokusit získat zpět peníze, které už utratil. Pro takovou situaci může mít Anna sjednaný Lightning Watchtower. Její uzel mu předem posílá zašifrované podklady k ochraně odvolaných stavů. Když služba rozpozná odpovídající transakci v řetězci, může vyslat nápravnou transakci i bez připojené Anny. Platby za ni neposílá a výpadek jejího uzlu tím neopraví. [1] [8]

Každé dohodnuté rozdělení peněz má svou commitment transaction, tedy podepsanou transakci, kterou lze kanál uzavřít na bitcoinovém řetězci. Při aktualizaci si účastníci předají údaje, které umožňují potrestat zveřejnění předchozího, odvolaného stavu. Tady popisujeme právě tento typ kanálu s trestným mechanismem. Pokud Pavel použije současný platný stav, smí kanál jednostranně uzavřít i během Annina výpadku. Watchtower nemá takové uzavření blokovat. Zasahuje proti konkrétnímu odvolanému stavu, ať jej Pavel zveřejnil úmyslně, nebo omylem ze staré zálohy. Rozhoduje odvolání stavu, ne stáří transakce. [1] [8]

Seed Phrase je záloha ve slovech, ze které lze obnovit soukromé klíče potřebné k podepisování plateb. LND je jeden z programů pro provoz Lightning uzlu. Anna službě neposílá Seed Phrase ani soukromé klíče celé peněženky. Dává jí omezené podklady a podpisy k určitému zásahu; v LND se tento balíček nazývá JusticeKit. Nápravná transakce, označovaná jako justice transaction, má vrátit chráněné prostředky podle předem připravených podmínek. Watchtower z toho nezískává volnou ruku k utrácení jiných Anniných mincí. V modelu bez odměny službě se od chráněné částky odečte poplatek bitcoinové transakce. Kód zná také varianty s odměnou pro věž, ale jejich existence sama neznamená, že konkrétní provozovatel nabízí placenou službu. [3] [4] [5]

Aby mohl Watchtower pomoct, musí potřebné podklady skutečně přijmout. Nestačí zadat jeho adresu do nastavení nebo vidět úlohu ve frontě k odeslání. Klient, tedy část Annina uzlu komunikující s věží, musí dostávat potvrzení o přijetí aktualizací. Spojení může vypadnout, úložná dohoda zvaná session může vyčerpat kapacitu nebo služba může zálohu odmítnout. Anna proto potřebuje sledovat i nedoručené aktualizace a chyby. Ani přijatá data neznamenají jistý úspěch: věž musí dál sledovat správný řetězec a její zásah se musí včas dostat do bloku. [6] [8]

Když Anna ztratí zařízení, Watchtower jí přístup k peněžence neobnoví. Služba hlídá zneužití odvolaných stavů; neobnovuje její peněženku a nezachrání odcizené klíče. LND používá pro obnovu kanálů Static Channel Backup (SCB). Spolu se seedem peněženky pomáhá získat prostředky zpět uzavřením kanálů, ne pokračovat přesně tam, kde uzel skončil. SCB není kopie každé aktualizace ani zašifrovaný balíček pro věž. Zvlášť nebezpečné je bez správného obnovovacího postupu spustit starou databázi channel.db: uzel by mohl zveřejnit vlastní odvolaný stav. Zálohy proto připravuj podle dokumentace konkrétní peněženky a její verze. [7]

Výstup transakce určuje částku a podmínky, za kterých ji lze utratit. Ochrana funguje díky tomu, že ten, kdo zveřejní svůj stav kanálu, nemůže svůj zpožděný výstup hned utratit. V BOLT 3 se tento výstup jmenuje to_local a čekací doba to_self_delay. CSV je pravidlo, které ji počítá v blocích od potvrzení výstupu. Druhá strana může se správným revokačním klíčem, tedy klíčem pro zásah proti odvolanému stavu, využít trestnou cestu bez tohoto čekání. Watchtower tak dostává časový náskok k reakci. Po skončení prodlevy trestná cesta nezmizí, ale peníze už může utratit také protistrana. O výsledku rozhodne, která konfliktní útrata se platně potvrdí. Pouhé odeslání nápravné transakce tedy nestačí a počet bloků není přesný počet hodin. [1] [9]

Před výběrem služby je třeba zjistit, co opravdu chrání. HTLC jsou podmíněné platby, které mohou v kanálu ještě čekat na dokončení; jejich ochranu nelze odvodit jen z toho, že věž hlídá zůstatky. Dust zde označuje příliš malý výstup pro zahrnutí do dané transakce. Ověřený backupTask v LND v0.21.3-beta připravuje existující výstupy, které nejsou Dust: to_local a to_remote odvolaného commitmentu. Nezahrnuje obecnou ochranu všech HTLC výstupů; příslušná dokumentace ji uvádí jako budoucí rozšíření. Bitcoin Script je jazyk, kterým jsou zapsány podmínky utracení výstupu. To, že umožňuje utratit výstup trestnou cestou, ještě neznamená, že konkrétní věž dostala potřebné podklady a umí tuto ochranu provést. [3] [5]

Zašifrovaný balíček nevyžaduje, aby věž průběžně četla všechny Anniny zůstatky. K hledání používá krátkou značku a pro rozšifrování údaje z transakce, kterou má rozpoznat. Následující popis je technická reference pro konkrétní verzi LND; txid znamená identifikátor transakce a blob balíček dat. V LND v0.21.3-beta je BreachHint prvních 16 bajtů SHA-256 binárního txid. BreachKey vzniká SHA-256 spojením téhož binárního txid dvakrát za sebou. Nejde o prvních 16 znaků zobrazeného txid ani o jeho prostou první polovinu. Klient zašifruje JusticeKit; při znalosti odpovídající transakce lze odvodit klíč a data rozšifrovat. [2] [3]

Provozovat věž pro druhé a nechat hlídat vlastní kanály jsou dvě různé věci. Následující nastavení patří provozovatelům LND; RPC je rozhraní, kterým program přijímá příkazy. LND odděluje watchtower.active pro server od wtclient.active pro klienta. Samotné zapnutí serveru nenastaví zálohování vlastních kanálů u jiné věže. lncli tower info ukazuje pubkey, listeners a uris serveru; lncli wtclient add registruje věž pro klienta. Veřejný klíč věže se liší od klíče Lightning uzlu. Ověř síť, dostupnost adresy a podporu RPC v použitém sestavení. [5]

Zásah musí zaplatit místo v bitcoinovém bloku. Satoshi je nejmenší jednotka bitcoinu. Virtuální bajt měří velikost transakce se zohledněním rozdílné váhy jejích částí. Sazba vyjadřuje počet satoshi za virtuální bajt transakce, nikoli procento z chráněných peněz. V LND v0.21.3-beta uvádí policy a session pole sweep_sat_per_vbyte sazbu v sat/vB. Poplatek snižuje vrácenou částku. backupTask může odmítnout stav s příliš malou hodnotou nebo nevyhovujícími parametry session; ne každá připravená úloha je způsobilou zálohou. Pozdější změna nastavení není důkazem změny dříve podepsaných transakcí a nedostatečná sazba může zpozdit zásah. [3] [6]

Druhá věž může pomoct při výpadku první, jen pokud sama dostala potřebná data. Nezávislost se týká také připojení a provozovatele, nejen jiného názvu služby. Více nezávislých věží a vlastní dohled mohou omezit dopad jednoho výpadku. Ověř však, které konkrétní aktualizace každá věž přijala; několik zaregistrovaných adres samo nedokazuje replikaci všech stavů. Oddělený stroj, síť a umístění snižují společná selhání. Šifrované bloby a autentizované spojení omezují viditelnost zůstatků, ale neodstraňují metadata, frekvenci aktualizací ani riziko korelace. [5] [8]

Při kontrole hledej především rozdíl mezi odeslanou a skutečně přijatou aktualizací. Následující příkazy a názvy polí jsou podrobnější pomůcka pro správce LND; potvrzení zálohy věží není potvrzení transakce v bloku. Použij lncli wtclient towers, lncli wtclient tower, lncli wtclient stats a lncli wtclient policy. V LND v0.21.3-beta rozlišuj num_backups od num_pending_backups; druhé pole označuje zálohy čekající na potvrzení věží. num_failed_backups v odpovědi stats počítá nepotvrzené neúspěšné zálohy. Statistiky jsou od spuštění klienta. active_session_candidate označuje kandidáta na uzavření úložné dohody, nikoli důkaz úplné ochrany. [6]

Správné nastavení je začátek. Zkouška má ověřit celý sled událostí od rozpoznání odvolaného stavu po připsání chráněných prostředků; s vlastními skutečnými penězi takový pokus neprováděj. Kontroluj konkrétní vydání klienta i věže, podporovaný typ kanálu a session, aktuálnost dat, poplatky a synchronizaci s řetězcem. Funkční zkoušku reakce prováděj v izolovaném testovacím prostředí; běžné jednostranné uzavření (force close) není důkazem zásahu proti odvolanému stavu. Výsledek dokládá zveřejnění odvolaného stavu (breach), sestavená justice transaction a její potvrzené výstupy. Úspěšná ukázka negarantuje budoucí dostupnost ani odstranění všech rizik Lightning. [1] [3] [6]

Pro nejúplnější obraz čtěte toto heslo společně s Lightning Network, Payment Channel, Vlastní úschova. Opačným směrem na něj odkazují také Payment Channel.

DOC · 001BOLT 3 — Revocation and delayed outputsSpecifikace DOC · 002LND v0.21.3-beta — Breach hint and key derivationDokumentace DOC · 003LND v0.21.3-beta — Watchtower backup taskDokumentace DOC · 004LND v0.21.3-beta — Watchtower blob typesDokumentace DOC · 005LND v0.21.3-beta — Watchtower configurationDokumentace DOC · 006LND v0.21.3-beta — Watchtower client RPCDokumentace DOC · 007LND v0.21.3-beta — Recovery and static backupsDokumentace DOC · 008Lightning Labs — Watchtower operationDokumentace DOC · 009BIP 112 — CHECKSEQUENCEVERIFYSpecifikace
Revidováno: Primární zdroje · Nejde o investiční doporučení