Bitcoinový uzel
Každý by jej měl mít doma. Ale proč? Jak jej získat? A jaké aplikace si nainstalovat?
Co je plnohodnotný bitcoinový uzel (bitcoin full node)? Je to základní prvek bitcoinové sítě. Server, na kterém běží bitcoinový klient, komunikuje s dalšími uzly v síti, udržuje kopii bitcoinového blockchainu (databáze všech potvrzených transakcí v bitcoinové síti), ověřuje nově příchozí transakce, validuje nově vytěžené bloky a zprostředkovává interakci uživatelů bitcoinu s bitcoinovou sítí. Pro těžaře zároveň připravuje šablonu nového bloku z transakcí čekajících na potvrzení. Je toho celkem dost, ne?
Satoshi Nakamoto už ve svém whitepaperu předpokládal, že každý uživatel bitcoinové sítě bude provozovat vlastní plnohodnotný uzel. Proč by to měli uživatelé bitcoinu chtít?
Proč provozovat vlastní bitcoinový uzel?
Používání vlastního plnohodnotného uzlu přináší celou řadu benefitů jak svému uživateli, tak bitcoinové siti a celému ekosystému. Pojďme se na ně podívat.
Podpora decentralizace bitcoinové sítě
BItcoinová síť je navržena jako decentralizovaná a má to své důvody. Decentralizace snižuje pravděpodobnost fatálního selhání sítě tím, že zvyšuje redundanci jejich kritických míst, kterými jsou právě uzly. Decentralizace v podobě zvýšené množstevní i geografické redundance pak chrání síť proti důsledkům přírodních katastrof, cíleným útokům hackerů nebo vládních organizací, ale i nečestnému jednání jednotlivých uživatelů sítě v podobě manipulace s bitcoinovým softwarem. Decentralizace se navíc nevztahuje pouze na fyzické uzly, ale i na celou governance - způsob řízení a rozhodování v síti. Neexistuje tak žádná centrální autorita, která by mohla svým jednáním a rozhodnutím, ať už svévolně nebo pod externím tlakem ovlivnit chování sítě.
Pokud se tedy rozhodnete provozovat vlastní uzel, zvýšíte tím antifragilitu bitcoinové sítě a stanete se jejím pravým uživatelem tak, jak to Satoshi zamýšlel.
Ověřování transakcí a validace nových bloků
Důležitým aspektem decentralizace je schopnost samostatně ověřit příchozí transakce a nově vytěžené bloky vůči platným pravidlům bitcoinové sítě bez nutnosti důvěřovat kterékoliv třetí straně. Vyjádřením tohoto principu je okřídlené "Don't trust, verify!". Každý full node obsahuje kompletní kopii bitcoinového blockchainu, databáze všech potvrzených transakcí za celou dobu jeho existence. A nejen to. Při prvním spuštění uzlu a kopírování této databáze od jiných uzlů v síti znovu ověřuje každý jednotlivý blok a transakce v něm podle existujících pravidel sítě, aby měl jistotu, že této databázi může nadále věřit. Tomuto procesu se říká synchronizace. Po jejím dokončení uzel kontroluje nově příchozí transakce i obsah a strukturu nově vytěžených bloků. Pokud zjistí porušení pravidel, odmítne je a do vlastní kopie blockchainu je nezařadí.
Jaká jsou ta pravidla? Je jich celá řada, ale mezi ta nejdůležitější patří:
kontrola struktury transakce
kontrola pravosti podpisů náležejícím adresám vstupů transakcí
kontrola splnění podmínek definovaných v transakčním skriptu
kontrola vícenásobného utracení UTXO
kontrola struktury a velikosti nového bloku
kontrola dodržování monetární politiky bitcoinu (velikost odměny těžaři musí odpovídat aktuální epoše)
Tato vlastnost je důležitá nejen pro vás, provozovatele vašeho uzlu, ale i pro stabilitu celé sítě. Vám umožňuje kontrolovat vaše transakce a zůstatky bez nutnosti důvěřovat jakékoliv třetí straně pouze oproti vaší vlastní kopii blockchainu. Celou síť pak chrání proti nečestnému uživateli, který by se pokusil šířit sítí neplatnou transakci (třeba podruhé utratit už jednou utracené mince) nebo se snažil připojit do blockchainu nový blok větší než povolené velikosti nebo přiznávající mu vyšší než aktuálně platnou odměnu. Takové chování uzel odmítne a není nikdo, kdo by mu v tom dokázal zabránit (je však třeba odpovědně přistupovat k výběru bitcoinového softwarového klienta - o tom více dále v textu).
Ochrana vlastního soukromí a bezpečnosti
Bitcoin není anonymní, ale pseudonymní. Všechny transakce lze v blockchainu dohledat a každý jeden satoshi lze v rámci UTXO dosledovat až k jeho coinbase transakci (okamžiku vzniku jako odměny za vytěžený blok). Transakce sice neidentifikují vlastníky jednotlivých adres, některé z nich o nich ale určité informace poskytují. Například konsolidační transakce může dle struktury podpisů prozradit, že vlastníkem vstupů je pouze jeden člověk. Nebo pokud platíte za nějakou službu na známou adresu a neutratíte kompletní UTXO, je velmi pravděpodobné, že jste vlastníkem i adresy, na kterou se posílá zbytek a to i přesto, že použijete adresu novou. Existují i další analytické postupy, které pomáhají určit vztahy mezi jednotlivými adresami a jejich vlastníky. Takže nakonec stačí prozradit vlastnictví jediné adresy a celou řadu jiných již k ní doplní odpovídající analýza nebo heuristika.
Pokud je pro vás soukromí důležité a vlastnictví bitcoinu považujete za soukromou informaci, je dobré vyvarovat se aktivitám, které by mohly prozradit váš vztah ke konkrétním bitcoinovým adresám. Mezi ně patří i přístup k blockchainu při zadávání nových transakcí, kontrole jejich stavu nebo kontrole zůstatků přes vaši peněženku nebo blockchain explorer. Použijete-li uzel třetí strany, dáváte jí možnost párovat uskutečněné transakce nebo dotazované adresy s vaší IP adresou, která o vás už lecos prozrazuje. I v případě použití Toru nebo VPN nemáte vyhráno. Pokud používáte více různých peněženek třeba pro oddělení KYC a non-KYC mincí, přístupem z jednoho místa je rovněž dáváte do vzájemné souvislosti.
Samostatným problémem je důvěra v informace, které vám uzel třetí strany poskytuje. Jsou skutečně pravdivé, transakce validní a zůstatky odpovídají realitě? Uzel třetí strany za vás sice nepodepíše transakci s vašimi prostředky, ale může vám třeba falešně tvrdit, že transakce, která na vaši adresu převádí dohodnutou platbu, je již potvrzena.
Provoz vlastního plnohodnotného uzlu pro vás tyto problémy řeší. Dotazy na zůstatky a nové transakce zadáváte přímo do vlastního bitcoinového uzlu, který je ověřuje přímo s vaší vlastní kopií blockchainu. Bez cizích očí a rizika manipulace.
Ochrana před cenzurou transakcí
Speciálním případem manipulace třetí strany s informacemi, které vám poskytuje, je cenzura transakcí a adres. Bitcoinový blockchain je transparentní, proto v něm není problém sledovat pohyb libovolných bitcoinů z jakéhokoliv důvodu. Platí to i pro bitcoiny pocházející z nějaké loupeže, podvodu či hacku. Bývají označeny jako špinavé a různé subjekty se brání manipulaci s nimi prostřednictvím blacklistů adres, přes které prošly. A pokud se dostaly do nějaké coinjoin transakce mixovací služby, mohou se na blacklist dostat i všechny adresy v transakci zúčastněné, ačkoliv neměly s původně "špinavými" bitcoiny nic společného.
Mohl bych takto pokračovat a uvádět další, ještě absurdnější, nespravedlivé příklady cenzury, vyplývající ze zlovůle mocných státních aparátů. Ale vezmu to z druhé strany. Pokud jste sběrateli Bitcoin Punků nebo obchodujete s Runama a chtěli by jste zadat svou transakci prostřednictvím mého uzlu, neuspějete také. Chráním bitcoinovou síť před spamem pomocí klienta Bitcoin Knots, který mi umožňuje takové transakce cenzurovat.
Ať tak či onak, používání vlastního plnohodnotného uzlu vás části problémů s cenzurou opět zbaví. Nikoho se nemusíte ptát, jakou transakci, pokud splňuje pravidla konsensu bitcoinové sítě, můžete zadat ke zpracování. Bohužel, je to jenom první část problému. Tou druhou částí je možná cenzura transakcí při jejich zařazování do bloků těžaři. O té se můžete více dozvědět v článku Domácí těžba bitcoinu.
Podpora bitcoinové sítě
Váš plnohodnotný bitcoinový uzel může poskytovat ostatním uzlům další užitečné služby, které posilují odolnost a decentralizaci sítě. Jsou to hlavně:
Filtrování transakcí a bloků pro neplnohodnotné uzly a peněženky
Poskytnutí historických bloků uzlům, které byly nějakou dobu offline nebo provádějí prvotní synchronizaci blockchainu
Propagaci nových transakcí sítí směrem k těžařům
Propagaci nově vytěžených bloků od těžařů k ostatním uzlům v síti
Přenos dat mezi Clearnetem a Torem pro uzly, které jsou připojeny pouze k jedné ze sítí
Na tomto místě je ale dobré říci, že do role tranzitních uzlů (těch, které přijímají externí požadavky na spojení - mají povolen parametr listen=1
a listenonion=1
) by měly být použity servery s odpovídajícím výkonem a vhodném bezpečnostním nastavení. Malý privátní full node na bázi RaspberryPi a UmbrelOS jím není.
Provoz vlastního uzlu pro Lightning Network
Ligtning Network - druhá vrstva bitcoinu - přináší nezbytné škálování počtu zpracovaných transakcí a snižuje transakční poplatky. Obojí je nezbytné pro další růst adopce bitcoinu.
Lightning Network (LN) tvoří síť LN uzlů, které si mezi sebou otvírají tzv. LN platební kanály, jejichž prostřednictvím směrují LN platby.
Ačkoliv jednotlivé LN platby mezi LN platebním kanály probíhají nezávisle na bitcoinovém blockchainu, otevření a zavření LN platebního kanálu je reprezentováno bitcoinovou transakcí. Z tohoto důvodu potřebují LN uzly přístup k bitcoinové síti a využívají k tomu právě bitcoinové uzly.
Pro pochopení Lightning Network doporučuji skvělou knihu Michala Nováka Lightning Network: Platby budoucnosti.
Výhody a důvody provozování vlastního LN uzlu je téma na samostatný článek, který jsem ještě nenapsal. Možná vás ale přesvědčil Michal Novák a nebo jste k rozhodnutí mít vlastní LN uzel došli jinou cestou. V takovém případě potřebujete i vlastní bitcoinový uzel.
Rozšíření znalostí a zkušeností s používáním bitcoinu
Okřídlená pravda říká, že pokud neověřujete transakce a své zůstatky na svém uzlu, nepoužíváte bitcoin, ale jste klientem někoho jiného se všemi důsledky, které to může mít. Pravdou také je, že úsilí spustit bitcoinový uzel vlastními silami vás zcela jistě mnoho nového naučí a poskytne vám na bitcoin úplně nový pohled. Skin in the game. O biozemědělství se také nejvíce dozvíte, až když zaboříte ruce do hlíny a slimáci vám sežerou úrodu. Váš pohled na svěže vypadající bio-mrkev v Lidlu již nikdy nebude stejný jako dříve.
Stavba vlastního uzlu: ano nebo ne?
Pokud vás předchozí odstavce přesvědčily, že dává smysl mít vlastní bitcoinový uzel, zbývá ještě rozhodnutí, jak jej realizovat.
Uzel by měl být v nepřetržitém provozu 24 hodin denně, 7 dní v týdnu. Jen tak může plnit svou funkci, průběžně ověřovat příchozí transakce a validovat nové bloky. Zastavení uzlu kvůli udržbě nebo z jiného důvodu je samozřejmě možné, po odstávce však uzel začne vždy synchronizovat chybějící bloky v jeho kopii blochchainu. Pokud jej tedy zastavíte na delší čas, může i následná dosynchronizace nějakou dobu trvat.
Dalším důležitým pravidlem je provozovat uzel na dedikovaném hardwaru, na kterém neběží žádný jiný, nesouvisející software. Vlastní uzel budete provozovat i kvůli ochraně vlastního soukromí a bezpečnosti a nechcete tedy zvyšovat riziko jejich ohrožení zavlečením nějaké softwarové infekce. Zároveň tak nebude bitcoinový uzel soupeřit s jinými aplikacemi o výpočetní zdroje. Protože sám není nijak zvlášť náročný, nebude tak ani zvyšovat náklady na svůj provoz.
Pro svůj provoz bitcoinový uzel potřebuje běžné CPU, na jehož výkon nejsou dnes žádné specifické požadavky. Dále přibližně 4GB paměti RAM nebo více. Potřebnou pamět nejvíce ovlivní použitý operační systém. Důležité je zabránit swapování paměti na pevný disk. A do třetice přibližně 1TB diskového prostoru. Aktuální velikost bitcoinového blockchainu (léto 2024) je necelých 700GB a roste rychlostí přibližně 230MB za den. Při zachování tohoto trendu by vám měl 1TB disk ještě pár let vydržet. Velmi často se pro uložení blockchainu doporučuje SSD disk. Já s tímto doporučením souhlasím, jeho výkon vám oproti standartním točivým diskům pomůže výrazně zkrátit potřebný čas na počáteční synchronizaci blockchainu. V běžném provozu uzlu se jeho výhody už tolik neprojeví.
Posledním předpokladem je síťové rozhraní pro přístup k internetu.
Jaké máme možnosti?
K provozu vlastního uzlu můžete použít jakýkoliv běžný a dostupný počítač, který již máte doma k dispozici, třeba i starší, protože požadavky na jeho výkon jsou skutečně minimální. Nepoužívaný notebook nebo stolní počítač mohou takto ještě dobře posloužit. Je dobré ale zamyslet se i nad ekonomikou provozu. Starší už nepoužívané herní PC se 150W zdrojem, pokud jej máte odložené někde ve sklepě, je sice zadarmo, jeho nepřetržitý provoz však již nějaké nezanedbatelné množství energie spálí.
Další možností je koupě nového levného počítače uvedených parametrů. Velmi oblíbené jsou minipočítače Intel NUC (dnes již převzal jejich výrobu ASUS). Koupit si můžete i minipočítač speciálně připravený pro provoz bitcoinového uzlu. Bude mít již nainstalovaný operační systém na linuxové bázi a většinou i některé ze základních potřebných aplikací. Takové uzly nabízí například Start9, Umbrel nebo MyNode.
Poslední možností je postavit si vhodný počítač pro provoz bitcoinového uzlu svépomocí z dostupných komponent. Výhodou takového postupu je vyšší kontrola nad jeho HW bezpečností (použité komponenty si můžete sami zvolit) a také volba jeho parametrů přesně dle vašich záměrů a potřeb. Jakou HW platformu pro jeho stavbu zvolíte je čistě na vás. Mezi nejoblíbenější však v současné době patří Raspberry Pi.
Kromě vhodného hardware budete také potřebovat vhodný operační systém. Důležitou vlastností takového operační systému je dostupnost jeho zdrojového kódu (v rámci FOSS), kvůli nezávislé kontrole jeho bezpečnosti. I v této oblasti je nabídka poměrně široká. Vybírat můžete kromě obecného linuxu a jeho známých distribucí i mezi specializovanými distribucemi pro bitcoinové uzly:
Umbrel na Raspberry Pi
Nemám k dispozici starý, nepoužívaný počítač, ani se mi nechtělo investovat do předpřipraveného řešení, a proto jsem si vybral stavbu vlastního uzlu na platformě Raspberry Pi. Jako operační systém jsem zvolil UmbrelOS. Je aktivně vyvíjen a v nedávné době prošel zásadním redesignem. Za jeho aktuální oblibou a velkým rozšířením stojí příjemné a jednoduché uživatelské rozhraní a vlastní App Store s velkým množstvím dostupných aplikací.
Návodů, jak sestavit uzel na Raspberry Pi je plný internet. Inspirovat se můžete jak u Kicoma v jeho serii videí Úvod do bitcoinu, nebo přímo na stránkách Umbrelu.
Já zvolil tyto komponenty:
Raspberry Pi 5 8GB - 2.179,- Kč
Raspberry Pi 27W USB-C napájecí zdroj - 349,- Kč
Krabička pro Raspberry Pi 5 Cooling case - 299,- Kč
1TB Lexar NM620 - 1.497,- Kč
Geekworm X1002 M.2 NVMe SSD HAT pro RPi 5 - 420,- Kč
SanDisk MicroSDHC 32GB Ultra - 229,- Kč
Raspberry Pi 5 je dnes již přirozenou volbou. Oproti svému předchůdci RPi 4 je jen o 100 korun dražší, nové PCI Express 2.0 rozhraní výrazně zrychluje komunikaci s diskem, což pocítíte při iniciální synchronizaci bitcoinového blockchainu.
Geekworm X1002 je jedna z možných NVMe SSD rozšiřujících karet (HAT). Zvolil jsem ji, protože se nepřipojuje k RPi shora, ale zdola a nebrání tak připojení jiné rozšiřující karty přes standardní GPIO konektor (třeba této). Navíc je na ni NVMe disk orientován směrem dolů, takže jej lze chladit spodním dílem zvolené hliníkové krabičky (pro úplnost ale dodávám, že chladit SSD disk na tomto bitcoinovém uzlu není nutné).
Sestavení celého uzlu vám nezabere více než 15 minut. Podle návodu na stránkách Umbrelu nainstalujte i verzi UmbrelOS pro vaše Raspberry Pi. Po spuštění uzlu si v nastavení nezapomeňte povolit TOR pro vzdálený přístup mimo vaši lokální siť a zkontrolovat dostupnost případných aktualizací.
A můžeme se pustit do výběru a instalace aplikací, které z vašeho uzlu udělají uzel bitcoinový.
Základní aplikace
Tou hlavní aplikací plnohodnotného bitcoinového uzlu je bitcoinový klient. V současné době existuje několik implementací bitcoinového klienta.
Pro UmbrelOS jsou však portovány pouze první dva: Bitcoin Core a Bitcoin Knots. Já si vybral ten druhý, viz. dále. Vy si však vyberte sami podle svých preferencí.
Na tomto místě musím zdůraznit, jak je dobré sledovat vývoj jednotlivých klientů a hlavně vlastností, které implementují. Pomocí bitcoinových klientů dochází v bitcoinové síti k prosazování změn. Pokud tyto změny nejsou kontroverzní a existuje na nich konsenzus, postupně je implementují všichni klienti. Pokud však kontroverzi vyvolávají nebo dokonce přinášejí změny, které pro síť představuji softfork (změnu zpětně kompatibilní) nebo hardfork (zpětně nekompatibilní změnu), můžete vybráním správného klienta nebo jeho verze o takové změně hlasovat a přijmout ji nebo odmítnout.
Výběr bitcoinového klienta a jeho vlastností je tou nejsilnější mocí, kterou jako uživatelé bitcoinové sítě máte a ultimátním důvodem pro provozování vlastního uzlu.
Bitcoin Knots
Bitcoin Knots jsou alternativní implementací bitcoinového uzlu. Vychází z Bitcoin Core a nabízí tak stejnou úroveň zabezpečení, soukromí a stability. Kromě toho však svým uživatelům rozšiřují možnosti filtrování spamu pomocí rozšířené sady parametrů a pravidel k jeho potlačení. (Více o spamu v bitcoinovém blockchainu naleznete zde.)
Ačkoliv jsou Bitcoin Knots pro instalaci k dispozici přímo v Umbrel App Store, nedoporučuji je nyní instalovat z tohoto místa. Připravený balíček obsahuje chybu, která znemožňuje následnou instalaci aplikací, které jsou na bitcoinovém uzlu závislé, jako třeba Electrum server, lightningový uzel nebo nějaký blockchain explorer. Použijte raději připravenou instalaci v alternativním komunitním app store Bitcoin Knots Community App Store.
Umbrel umožňuje svým uživatelům používat alternativní app store. Přidáte jej v nastavení Umbrel App Store (tři tečky v pravém horním rohu, volba Community App Stores). Do pole pro URL vložte link na github repositář app store, v tomto případě:
https://github.com/Retropex/Bitcoin-store
a stiskněte Add. Přidaný komunitní app store otevřete tlačítkem Open. Pro RaspberryPi je určena verze Bitcoin Knots arm64.
Samotná instalace zabere několik desítek vteřin. Ihned po instalaci však začnou Bitcoin Knots stahovat a ověřovat bitcoinový blockchain, který má nyní (v červenci roku 2024) 664GB. Synchronizace blockchainu trvá podstatně déle. Její postup můžete v aplikaci sledovat. Mému RPi5 s SSD diskem připojeným přes PCI Express interface to trvalo necelých 30 hodin. O generaci starší RPi4 s SSD diskem přes USB 3.0 potřeboval přibližně 76 hodin.
Nezapomeňte si po instalaci zkontrolovat a případně nastavit preferovaná pravidla filtrování bitcoinového SPAMu (ostatně proto si instalujete Bitcoin Knots). Najdete je v nastavení (Advanced Settings) v sekci Optimization.
V základu je již nastaveno (verze 27.1.020240801):
datacarrier=1
(Relay transaction with embedded data)
datacarriersize=42
(Maximum size of relayed transactions with embedded data)
rejectparasites=1
(Reject parasitic transactions)
permitbaremultisig=0
(Relay old type of multisig transaction)
Pokud chcete filtrovat i Runes, nezapomeňte povolit:
rejecttokens=1
(Reject tokens transactions)
Electrum server
Použití Bitcoin Knots v současné verzi UmbrelOS 1.2.2 přináší bohužel ještě jeden problém. UmbrelOS registruje a dodržuje vzájemné deklarované závislosti aplikací. Aby vám povolil instalovat třeba blockchainový explorer Mempool, musíte mít nejprve nainstalován bitcoinový uzel, protože bez něj se Mempool nedostane k blockchainu. Bohužel v této verzi UmbrelOS trvá na konkrétní instalaci aplikace Bitcoin Node (původní Bitcoin Core). Na existenci bitcoinového uzlu je závislá i aplikace Electrs, implementace Electrum Serveru. Naštěstí lze tuto závislost jednoduše obejít.
Aplikace Electrs - Electrum Server in Rust - je reimplementací původního Electrum serveru s cílem umožnit provozovat jej s minimálními hardwarovými nároky. Server neuchovává celý blockchain (je závislý na lokální instalaci bitcoinového uzlu), ale vytváří a udržuje index všech vstupů a výstupů bitcoinových transakcí. Ten zpřístupňuje přes Electrum protokol on-chain bitcoinovým peněženkám pro dotazování na zůstatky a historii transakcí. Připojení přes Electrum server využívají hardwarové (Trezor, Ledger, ColdCard...) i mnohé softwarové peněženky (desktop i mobile).
Aplikaci Electrs nelze instalovat přímo z Umbrel App Store (viz. výše), instalaci musíme spustit ručně přes SSH terminál. Příkazový řádek v UmbrelOS spustíte přes ikonku Settings v doku úvodní obrazovky a položky menu Advanced Settings a Open Terminal. Do terminálu zadejte následující příkaz:
umbreld client apps.install.mutate --appId electrs
Po několika vteřinách potvrdí úspěšnou instalaci návratová hodnota true. I Electrum Server provádí po prvním spuštění časově náročnou synchronizaci s blockchainem, při které vytváří transakční index. Instalaci aplikace spusťte až po dokončení synchronizace Bitcoin Knots.
Electrum server nabízí dva způsoby připojení bitcoinových on-chain peněženek. Buď přes lokální siť pro peněženky instalované na samotném uzlu nebo na desktopu ve stejné lokální síti. Nebo přes Tor protokol. Kromě zmíněných hardwarových peněženek může připojit peněženky Green, BlueWallet, Sparrow wallet, Specter, Nunchuk.
Mempool
Mempool je blockchainový explorer, klon pro RaspberryPi veřejně známého exploreru Mempool.space. Proč používat svůj vlastní a nikoliv ten veřejný? Protože nechcete, aby kdokoliv věděl, že jste si dohledával stav určité transakce jen několik vteřin poté, co se objevila v mempoolu a pak ještě několikrát až do okamžiku, kdy byla potvrzena v novém bloku.
Aplikace Mempool je také závislá na přítomnosti bitcoinového klienta, proto je nutné při použití Bitcoin Knots instalovat ji ručně přes SSH terminál. Potřebný příkaz vypadá takto:
umbreld client apps.install.mutate --appId mempool
Protože je Mempool závislý i na dostupnosti indexu Electrum serveru, používejte jej až poté, co aplikace Electrs tento index dokončí.
Core Lightning
Core Lightning (CLN) je jedna ze čtyř nejpopulárnějších implementací Lightning Network uzlu od společnosti Blockstream. Jedná se samozřejmě o open source a má výborně zpracovanou dokumentaci včetně celé řady návodů k použití.
Proč si vybrat Core Lightning implementaci a ne hojně rozšířenou LND? CLN má oproti LND lépe navrženou modulární architekturu a systém pluginů, které elegantně rozšiřují nebo upravují jeho funkcionalitu. Je napsán v jazyce C (LND převážně v jazyce GO), který v kompilovaném stavu nabízí efektivnější kód, uzpůsobený konkrétní HW platformě a tedy potřebuje menší dostupný výkon v porovnání s LND. Není to zásadní výhoda pro provoz privátního LN uzlu, ale na RaspberryPi přeci jen přijde vhod.
CLN implementace je také často chválena za lepší přístup k ochraně soukromí jednotlivých plateb. Používá k tomu několik technik, které výrazně komplikují ostatním uzlům na cestě sledovat informace o vašich platbách. Shadow route přidává do platební cesty zpoždění a poplatky, čímž ji virtuálně prodlouží a brání tak špiclujícím uzlům odhadovat reálnou vzdálenost k příjemci platby. Route randomization zase zajistí určitou míru náhodnosti při výběru finální platební cesty. Nemusí tak být vybrána vždy ta nejkratší respektive nejlevnější cesta, což zabrání routování všech vašich plateb přes uzel, který má uměle (záměrně) snížené poplatky pod síťový průměr. MPP - (Multi-Part-Payments) pak rozdělí vaši platbu na menší, nestejně velké části, které směruje samostatně. Zajistí tím průchodnost i větších plateb sítí a zároveň znemožňuje uzlům na cestě zjistit celkovou velikost platby.
Tím nejzásadnějším důvodem je pro mne však podpora BOLT 12 specifikace. BOLT 12 přináší takzvané offers, statické, opakovaně použitelné faktury. Ty se hodí všude tam, kde potřebujete trvale přijímat částky předem neznámé hodnoty a nechcete pro každou z nich aktivně vystavovat fakturu. Příklad? Zapy na Nostru nebo třeba anonymní výplaty z Ocean.xyz těžebního poolu. Nebo třeba příjem příspěvků v bitcoinu na váš YouTube stream. LND řeší tuto potřebu přes další nadstavbové aplikace (LNBits, LNDK) a třeba LNURL. CLN nabízí elegantní řešení přímo ve svém základu.
Stejně jako předchozí aplikace je i Core Lightning závislá na přítomnosti bitcoinového klienta. S Bitcoin Knots je třeba ji tedy instalovat ručně přes SSH terminál. Potřebný příkaz vypadá takto:
umbreld client apps.install.mutate --appId core-lightning
Záloha a obnova ze zálohy
Core Lightning uzel obsahuje bitcoinovou on-chain peněženku, ze které čerpá bitcoiny pro otvírání kanálů. Po (re)instalaci aplikace vždy vygeneruje novou, proto je dobré mít zálohu, ke které se můžete vrátit v případě, že jste o tu původní přišli v důsledku havárie uzlu nebo provádíte instalaci na nový hardware a chcete obnovit již exitující uzel.
Klíče on-chain peněženky jsou uloženy v souboru hsm_secret
, který se nachází v adresáři root/.lightning/bitcoin
. Jedná se o binární, 32 byte veliký soubor. Zálohovat jej můžete buď na nějaký připojený externí disk (USB klíčenku), nebo si jeho obsah zobrazíte v hexadecimálním formátu (linuxový příkaz: xxd hsm_secret
) a někam si jej bezpečně poznamenáte.
Při obnově nebo po reinstalaci uzlu nahraďte nově vygenerovaný soubor hsm_secret
tím ze zálohy a restartujte aplikaci Core Lightning.
Pro zacházení se souborem
hsm_secret
a jeho obsahem platí stejná pravidla, jako pro zacházení s bitcoinovými privátními klíči nebo seed frází. Mají stejný význam a jejich znalost umožňuje manipulovat s prostředky na peněžence uloženými. Proto buďte opatrní.
Zajímavou alternativou je možnost vygenerovat soubor hsm_secret
z existujícího BIP-39 seedu, včetně použití volitelné přístupové fráze (passphrase). To vám umožní uchovat recovery seed standartními způsoby, které používáte u své hardwarové peněženky (SeedOr Safe, Trezor Keep Metal, CryptoTag...) a v případě potřeby obnovit peněženku nebo přistupovat k bitcoinům na jejich adresách i z jiného zařízení, než je Core Lightning aplikace. Jak na to?
Po instalaci Core Lightning aplikace ji zastavte (příkaz Stop v kontextovém menu nad ikonou aplikace) a spusťte si terminál v jejím kontextu (Settings > Advanced settings > Terminal > App > Core Lightning). V terminálovém okně spusťte nástroj hsmtool
s parametrem generatehsm
a cestou k hsm_secret
souboru. V následujícím dialogu pak vyberte BIP-39 slovník a zadejte jednotlivá slova svého seedu. Nakonec můžete vložit svou volitelnou přístupovou frázi. Utilitka vygeneruje nový soubor hsm_secret
a uloží jej.
root@aabbccdd0102:/# lightning-hsmtool generatehsm root/.lightning/bitcoin/hsm_secret
Select your language:
0) English (en)
1) Spanish (es)
2) French (fr)
3) Italian (it)
4) Japanese (jp)
5) Chinese Simplified (zhs)
6) Chinese Traditional (zht)
Select [0-6]: 0
Introduce your BIP39 word list separated by space (at least 12 words):
Warning: remember that different passphrases yield different bitcoin wallets.
If left empty, no password is used (echo is disabled).
Enter your passphrase:
New hsm_secret file created at root/.lightning/bitcoin/hsm_secret
Use the `encrypt` command to encrypt the BIP32 seed if needed
root@aabbccdd0102:/#
Opusťte terminál a znovu spusťte aplikaci Core Lightning.
Kromě bitcoinové on-chain peněženky je nutné zálohovat i otevřené lightning network kanály. Core Lightning aplikace uchovává informace o otevřených kanálech v souboru emergency.recover
. Ten se nachází také v adresáři root/.lightning/bitcoin
. Mění se pouze v souvislosti s otevřením nebo uzavřením kanálu, proto doporučuji provést jeho zálohu vždy po takové operaci.
Soubor emergency.recover
neobsahuje informace o stavu kanálu. Při obnově dojde vždy k uzavření všech kanálů a vypořádání jejich balancí.
Jak kopírovat uvedené soubory z vašeho Umbrelu na Raspberry Pi na USB disk? UmbrelOS pro to zatím nemá podporu ve svém UX, ale pomůže vám opět terminál a následující návod.
# Najděte LABEL vašeho připojeného USB disku
# Nejprve si vylistujte všechna existující bloková úložiště příkazem
sudo blkid
# Fyzicky připojte váš USB disk s vylistujte stejným příkazem úložiště ještě jednou
sudo blkid
# Podívejte se, které přibylo a najděte jeho LABEL. Řekněme, že se jmenuje "sda1"
# Vytvořte si adresář pro zálohu, nazvěme jej třeba "/backup"
sudo mkdir /backup
# Připojte váš identifikovaný USB disk přes jeho LABEL k vytvořenému adresáři
sudo mount /dev/sda1 /backup
# Zkopírujte soubory hsm_secret a emergency.recover do adresáře "/backup"
sudo cp /home/umbrel/umbrel/app-data/core-lightning/data/lightningd/bitcoin/emergency.recover /backup
sudo cp /home/umbrel/umbrel/app-data/core-lightning/data/lightningd/bitcoin/hsm_secret /backup
# Ukliďte po sobě - nejprve odpojte váš USB disk od adresáře "/backup"
sudo umount /backup
# A následně zrušte adresář "/backup"
sudo rmdir /backup
Při obnově ze zálohy budete postupovat úplně stejně, jen příkazy pro kopírování budou směřovat opačným směrem
# Kopírování záloh z připojeného adresáře "/backup" do cílového adresáře CLN
sudo cp /backup/emergency.recover /home/umbrel/umbrel/app-data/core-lightning/data/lightningd/bitcoin
sudo cp /backup/hsm_secret /home/umbrel/umbrel/app-data/core-lightning/data/lightningd/bitcoin
Kromě statické zálohy kanálů umožňuje CLN i průběžné zálohování jejich stavu prostřednictvím zálohy interní databáze do druhé, bezpečné lokality (na jiný disk). Databáze se nachází v souboru lightningd.sqlite3
ve stejném adresáři, jako hsm_secret
nebo emergency.recover
. CLN lze dokonce nastavit tak, aby veškeré updaty do této databáze průběžně zapisoval i na druhou lokalitu. Bohužel však v současné verzi UmbrelOS toto není možné.
UmbrelOS ve stávající verzi nepodporuje připojení více disků současně. Nelze tedy průběžně zálohovat data na druhý disk. Přestože můžete během provozu druhý disk připojit a přes terminál na něj data zkopírovat, nikdy takový disk nenechávejte připojen trvale. Po restartu uzlu může zabránit korektnímu nastartování Umbrelu a nainstalovaných aplikací.
Otevření kanálů
Lightningový uzel pro vás začne být užitečný teprve poté, co jej propojíte s LN sítí prostřednictvím platebních kanálů. Otevření kanálu je relativně jednoduché a lze jej docílit v podstatě dvěma způsoby.
Otevřete kanál vy z vašeho uzlu
Požádáte jiný uzel, aby otevřel kanál směrem k vám
Existují i další způsoby, ale pro jednoduchost si vystačíme s těmito dvěma. Důležité je si uvědomit, že uzel, který kanál otvírá, jej také musí naplnit bitcoiny na požadovanou kapacitu. Po otevření kanálu budou zároveň všechny bitcoiny (likvidita) na straně toho, kdo jej otevřel.
V prvním případě tedy nejprve pošlete na bitcoinovou peněženku vašeho CLN uzlu nějaké prostředky (tlačítko Deposit vám zobrazí příslušnou bitcoinovou adresu). Po potvrzení depositní transakce v blockchainu (můžete ji sledovat ve svém Mempool exploreru) můžete tlačítkem Open Channel požádat o otevření kanálu s vybraným LN uzlem. Ten si můžete vybrat dle své preference v některé z veřejných databází, jako je Amboss.Space nebo 1ml, nebo přímo na MemPool.Space v sekci lightning network.
Strategií pro výběr je opět celá řada, ale pro domácí uzel neuděláte chybu výběrem uzlu od některého z velkých hráčů, kteří jsou na kvalitě svého připojení do LN sítě obchodně zainteresováni. Poskytovatelé peněženek (ACINQ, WalletOfSatoshi, Blockstream, Alby, ...), burzy, směnárny a platební brány (Anycoin, Confirmo, Binance, Kraken, ...), poskytovatelé služeb na LN sítí (LOOP, Boltz, Strike). Ale třeba i SatoshiLabs nebo GeneralBytes. Můžete se u nich spolehnout na dostatečnou kapacitu, konektivitu i stabilitu provozu. Pozor si dejte pouze na požadovanou minimální velikost kanálu.
Do pole Node Id: vložte adresu vybraného uzlu (ve formátu PubKey@IP:Port) a do pole Amount: pak požadovanou velikost kanálu (částka bude stržena z vaší bitcoiové peněženky a ponížena o poplatky za otvírací transakci). Důležitý je přepínač Announce. Ten určuje, zda bude váš kanál veřejný a tedy k dispozici celé síti pro směrování plateb, nebo soukromý, o jehož existenci budete vědět pouze vy a připojený uzel a pro směrování cizích plateb nebude využíván. Pokud chcete využívat svůj LN uzel pouze pro své soukromé platby, doporučuji otevřený kanál do sítě neanoncovat. Zjednodušíte si práci s jeho balancováním, protože budete reagovat pouze na vlastní pohyby v jednotlivých kanálech.
Takto otevřený kanál bude mít likviditu na vaší straně (odchozí likvidita) a bude tedy primárně sloužit na posílání plateb z vašeho uzlu. Minimálně do doby, než si odesláním dostatečné částky vytvoříte prostor i pro příjem.
Druhý způsob, požádat jiný uzel, aby otevřel kanál k vám, vám přinese příchozí likviditu, tedy schopnost přijímat platby až do velikosti takového kanálu. Můžete se domluvit s kamarádem, který již uzel provozuje, aby k vám kanál otevřel. Nebo využít některou z nabídek jiných uzlů, která vám kanál otevřou za úplatu. Vybrat si můžete na tržištích LnRouter nebo LnBig. Lightning Network Plus nabízí možnost otevřít si kanály v takzvaném Liquidity Swapu. Uzly, které se jej účastní, si otevřou kanály vzájemně v kruhu. Každý tedy za otevření kanálu jedním směrem získá i kanál stejné velikosti s příchozí likviditou.
Nejjednodušším způsobem, jak získat příchozí likviditu, je otevření dalšího kanálu s vybraným uzlem a následné odeslání všech svých prostředků v tomto kanále na svou jinou lightning peněženku nebo swap out službu (služba, která příchozí prostředky uloží na vámi zadanou bitcoinovou adresu. Například Boltz.Exchange).
Nezapomeňte po otevření všech kanálů provést jejich zálohu dle postupu uvedeného výše.
Ride the Lightning
Ride the Lightning (RTL) je nástroj pro správu vašeho lightningového uzlu. Ačkoliv vlastní uzel, v našem případě aplikace CLN, nabízí jednoduché GUI pro svou obsluhu a v mnoha případech stačí (zvláště při otevření pouze několika privátních kanálů), některé parametry a pokročilé vlastnosti kanálů přes něj nejsou dostupné. Aplikace RTL nabízí webové rozhraní k většině těchto parametrů a další doplňkové služby pro zajištění likvidity vašich kanálů, jejich rebalancing a převod prostředků na on-chain adresy (swap out). Navíc nabízí přehledné statistiky a grafy využití uzlu, které lze využít pro optimalizaci nastavení CLN.
Aplikaci RTL můžete nainstalovat přímo z Umbrel App Store. Pozor, jsou tam uvedeny dvě verze, každá pro jednu z dostupných implementací lightning uzlu. Pokud jste nainstalovali Core Lightning, vyberte si Ride the Lightning (Core Lightning).
Máte-li otevřenu konzoli, můžete ji samozřejmě nainstalovat i z příkazového řádku.
umbreld client apps.install.mutate --appId core-lightning-rtl
Přihlášení do aplikace je trochu nestandardní. RTL vyžaduje heslo, ale správu aplikačních hesel řídí UmbrelOS. Vaše heslo do aplikace naleznete na stránce RTL v App store (Default password). Objeví se tam po nainstalování aplikace, je kryptograficky odvozené od unikátního seedu vaší instalace uzlu a nelze jej změnit. Umbrel touto politikou reagoval na případy vykradení peněženek přes uniklou statickou TOR adresu aplikací jako RTL nebo Thunderhub, ke kterým neměli uživatelé změněné defaultní hesla.
Public Pool
Esenciální aplikace pro všechny, kteří doma kromě vlastního bitcoinového uzlu provozují také nějaký domácí miner. Public Pool je navzdory svému názvu privátní domácí těžební pool pro solo mining. Bez poplatků a s jistototu, že veškeré případně vytěžené odměny skončí na vaší vlastní bitcoinové adrese.
Instalace opět kvůli závislosti na Bitcoin Knots přes příkazový řádek:
umbreld client apps.install.mutate --appId public-pool
Konfiguraci pro připojení vašeho mineru najdete hned v úvodu GUI po spuštění aplikace.
Zkušenosti z provozu
Provozování vlastního uzlu není nikterak náročnou činností a s trochou nadsázky lze říci, že se obejde bez složité údržby. Ve výše uvedené konfiguraci může běžet bez nutnosti zásahu i několik měsíců. Přesto je dobré se ke svému uzlu čas od času vrátit a jednoduchou údržbu provést.
Předně provádějte pravidelné upgrady nainstalovaných aplikací. Nové verze se objevují celkem pravidelně a přinášejí většinou opravy nalezených chyb a bezpečnostních děr, ale také nové funkcionality, které rozšiřují jejich možnosti použití. Doporučuji neinstalovat bez rozmyslu, ale přečíst si dostupné release notes (popis změn nové verze). Zvláště u bitcoinového uzlu (ať už Bitcoin Knots nebo Bitcoin Core), protože nové verze mohou obsahovat změny, které mění chování bitcoinové sítě a tedy i bitcoinu. Jejich výběrem a (ne)instalací hlasujete o tom, jak by měl bitcoin podle vás vypadat. Přečtěte si knihu The Blocksize Wars k lepšímu pochopení, co je tím myšleno.
Ze stejných důvodů pravidelně aktualizujte i operační systém UmbrelOS. Nové verze vycházejí přibližně jednou za čtvrt roku a vlastnosti operačního sytému většinou výrazně vylepšují.
Důležitou aktivitou je i záloha lightning uzlu a jeho kanálů vždy, když nějaký otevřete nebo zavřete. To se naštěstí neděje příliš často, většinou vystačíte s jednotkami otevřených kanálů i po dobu několika let. Výjimkou je však provoz veřejného lightning uzlu pro směrování plateb v síti. Takový uzel již vyžaduje pravidelnou údržbu kanálů, správu jejich poplatků a vyhodnocování jejich efektivity. To vede k zavírání neefektivních kanálů a otvírání nových směrem k lukrativním uzlům.
Raspberry Pi a UmbrelOS není vhodnou platformou pro provoz veřejných lightning uzlů a směrování plateb v síti. Nevyhovuje celkovým výkonem a bezpečností a neumožňuje nastavit adekvátní SLA pro provoz takové služby. Proto ji k tomuto účelu důrazně nedoporučuju.
Nezapomeňte svůj uzel čas od času restartovat. Mně se osvědčilo provést restart ne déle než po půl roce provozu. Dlouhodobý nepřetržitý provoz jakéhokoliv softwaru hromadí důsledky chyb v něm existujících (a každý takové obsahuje), které se časem zcela určitě nějak projeví. Je dobré těmto projevům předcházet právě restartem celého uzlu. Restart vždy provádějte kontrolovaně přes příslušné tlačítko v menu Settings Umbrel OS, nikdy uzel natvrdo nevypínejte odstavením od napájení. Umožníte všem aplikacím korektně se ukončit, aby následně mohly korektně nastartovat. To samé platí i pro vypínání uzlu v případě potřeby.
Vlastní bitcoinový uzel? Ano!
Pokud jste dočetli až sem, pravděpodobně stavbu a provoz vlastního uzlu vážně zvažujete. Rád bych vás v tom podpořil. Ano, dává to smysl. A přestože si myslím, že nejvíce zážitků a pozitivní energie získáte při stavbě a zprovoznění vlastního uzlu (třeba tak, jak je popsáno v tomto článku), nezatracuji ani pořízení již předpřipraveného řešení, které stačí připojit do zásuvky a zapnout. Stále vám zbyde spoustu zábavy s nastavením jednotlivých aplikací.
Staňte se součástí bitcoinové sítě a podpořte její původní étos! Staňte se Bitcoinerem!