Lightning Routing znamená hledání a použití cesty, po které lze zaplatit přes síť Lightning. Cestu tvoří platební kanály: jejich účastníci mají společně uzamčené prostředky v Bitcoinu a průběžně mění, kolik z nich komu patří. Kanály spravují programy zvané uzly. Odesílatel obvykle plánuje trasu z veřejných informací, údajů příjemce a zkušeností z předchozích pokusů. Nevidí však všechny aktuální zůstatky, takže musí dostupnost cesty odhadovat a někdy zkusit jinou.
Anna chce zaplatit za kávu, ale s kavárnou nemá společný kanál. Má ho s Pavlem a Pavel má další kanál s kavárnou. Platba tedy může vést přes něj: v prvním kanálu se část zůstatku přesune od Anny k Pavlovi, ve druhém od Pavla ke kavárně. Nejde o přenášení téže mince mezi kanály; jde o navazující změny zůstatků. Pavel proto potřebuje vlastní použitelné prostředky na straně, ze které platí kavárně. Peněženka či uzel odesílatele vybere cestu k příjemci a připraví pokyny pro její jednotlivé kroky. Příjemce sdělí potřebné údaje a podporované funkce; může přidat i informace o neveřejném konci trasy. Uzly po cestě potom platbu předávají podle pokynů. Nehledají pokaždé samostatně celou cestu k cíli. [1] [4]
Gossip je způsob šíření informací mezi uzly. BOLT #7 popisuje oznámení kanálů a jejich směrové aktualizace: základní a poměrný poplatek, rozdíl expirací CLTV, minimální a maximální částku a příznak dostupnosti. Zveřejněná nabídka ale nedokazuje, že protistrana právě běží nebo že má dost prostředků. CLTV zde označuje lhůtu vyjádřenou pořadovým číslem bitcoinového bloku, nikoli přesným časem na hodinách. Rozdíl lhůt ponechává prostředníkovi čas reagovat, pokud se předání platby zasekne. [2]
Celková kapacita kanálu neprozradí, kolik může právě poslat každá jeho strana. Odesílatel zná vlastní kanály, jinde vychází z odhadů a historie úspěchů i selhání. Programy proto hodnotí nejen poplatek, ale i pravděpodobnost průchodu. Jiná platba mezitím může změnit likviditu, tedy prostředky použitelné k odeslání v potřebném směru. [4] [5]
Jednotlivé kroky propojují HTLC, podmíněné platby: k jejich dokončení je potřeba odhalit odpovídající tajný údaj a při nedokončení umožňují po uplynutí lhůty peníze získat zpět. Výpočet začíná částkou pro příjemce a pokračuje zpět. Každý prostředník potřebuje dostat částku pro další uzel plus vlastní poplatek. Příchozí HTLC musí mít oproti odchozímu dostatečně pozdější expiraci CLTV podle požadovaného rozdílu. Delší cesta tak může zvýšit náklady i dobu, po kterou zůstanou prostředky při problému vázané. [1] [2]
Onion routing podle BOLT #4 používá konstrukci Sphinx: každý krok dostane zvlášť zašifrované instrukce. Prostředník zná předchozího a následujícího partnera a své pokyny. Samotný paket mu neodhalí celou trasu, její délku ani přesnou pozici na ní. Analýza provozu nebo spolupráce více uzlů však mohou soukromí oslabit. [1]
Kanál může dočasně selhat, poplatek může být příliš nízký, CLTV nesprávné nebo další partner nedostupný či neznámý. Odesílatel dostává jen omezenou informaci o chybě. Jeho software může snížit hodnocení trasy, přepočítat ji a zkusit platbu znovu. Nejde o pokutu zaplacenou uzlu a jeden výsledek není trvalá známka jeho spolehlivosti. [1] [4]
Nestačí najít propojení; každý krok musí přijmout HTLC a mít v potřebném směru dost peněz, které lze skutečně použít. Část zůstatku může být vyhrazena jako rezerva nebo vázaná v dosud nedokončených platbách. Technická pole htlc_minimum_msat a htlc_maximum_msat navíc určují dolní a horní mez částky jednoho HTLC v daném směru. Jednotka msat znamená tisícinu satoshi; satoshi je nejmenší jednotka částky na bitcoinovém řetězci. Ani vysoký povolený limit sám nedokazuje, že je potřebná likvidita právě k dispozici. Jediný nevyhovující kanál tak může zastavit celou trasu. [2]
Podporuje-li příjemce basic MPP, tedy platbu rozdělenou na více částí, může odesílatel rozdělit celkovou částku, v protokolu označenou total_msat, do více tras. Příjemce čeká na potřebné části a vypořádá je společně. Tak lze využít likviditu rozloženou mezi kanály; MPP ale žádnou novou likviditu nevytvoří. Přibývají HTLC, pokusy a případně poplatky. [1]
Route hints v BOLT #11 mohou odesílateli doplnit údaje o posledních nezveřejněných krocích. Route blinding používaný v BOLT #12 místo toho zpřístupní zašifrovaný konec cesty přes vstupní uzel, introduction point. Odesílatel musí stále najít použitelnou cestu k tomuto bodu a splnit souhrnné podmínky poplatků a CLTV. Lepší soukromí není záruka doručení. [3] [6] [1]
Při běžném placení hledání tras řeší peněženka. Následující podrobnosti jsou užitečné hlavně pro provozovatele uzlů a při hledání příčiny opakovaných potíží. Zaznamenejte použitý software a verzi, částku, maximální poplatek a limit CLTV, počet pokusů, použité trasy, dobu dokončení a přesný důvod selhání. Porovnávejte stejnou dvojici uzlů v podobném čase. Úspěšnost popisuje konkrétní platbu v konkrétním stavu sítě, nikoli trvalé globální skóre. [4] [5]
Pro nejúplnější obraz čtěte toto heslo společně s Lightning Network, HTLC, Lightningová likvidita, Payment Channel, Bitcoin, Inbound Liquidity. Opačným směrem na něj odkazují také HTLC, Lightningová likvidita, BOLT 12, Inbound Liquidity.