/ home / newsletters /
Zpravodaj „Bitcoin Optech” č. 285
Tento týden přinášíme odhalení nedávné zranitelnosti postihující Core Lightning a oznámení o dvou nových návrzích na soft fork. Dále poskytujeme přehled návrhu cluster mempoolu, předáváme informaci o aktualizované specifikaci a implementaci komprese transakcí a shrnujeme diskuzi o těžaři extrahovatelné hodnotě (MEV) v nenulových dočasných anchorech. Též nechybí naše pravidelné rubriky s oznámeními nových vydání a popisem významných změn v populárním bitcoinovém páteřním software.
Novinky
-
● Odhalení nedávné zranitelnosti v Core Lightning: Matt Morehouse oznámil na fóru Delving Bitcoin zranitelnost, kterou před tím zodpovědně nahlásil. Zranitelnost postihovala Core Lightning verze 23.02 až 23.05.2. Novější verze 23.08 a vyšší postiženy nejsou.
Morehouse tuto zranitelnost objevil, když pokračoval v práci na falešném financování (viz zpravodaj č. 266). Když znovu testoval uzly s opravami, podařilo se mu vyvolat souběh („race condition”), který po zhruba 30 sekundách CLN shodil. Je-li uzel offline, nemůže bránit uživatele proti zlomyslným nebo porouchaným protistranám, které uživatelovy prostředky vystavují riziku. Analýza ukázala, že CLN opravilo původní zranitelnost falešného financování, ale než stačilo opravu řádně otestovat, zranitelnost byla zveřejněna a jeden z pluginů začlenil zneužitelný souběh. Po Morehouseově nahlášení byl připraven patch, aby souběh nezpůsobil pád uzlu.
Pro více informací doporučujeme přečíst Morehouseův skvělý blogový příspěvek s odhalením.
-
● Aktualizace specifikace a implementace komprese bitcoinových transakcí: Tom Briar zaslal do emailové skupiny Bitcoin-Dev příspěvek s aktualizovaným návrhem specifikace a implementace komprimovaných bitcoinových transakcí. Menší transakce by byly praktičtější pro přeposílání omezenými médii, jakou jsou satelity či steganografie (např. zakódování transakce do bitmapového obrázku). Ve zpravodaji č. 267 uvádíme popis původního návrhu. Briar popisuje významné změny: „odstranění hledání nLocktime ve prospěch relativní výšky bloků, která je používána všemi komprimovanými vstupy, a použití druhého typu celého čísla s proměnlivou délkou.”
-
● Diskuze o těžaři extrahovatelné hodnotě v nenulových dočasných anchorech: Gregory Sanders zaslal do fóra Delving Bitcoin příspěvek vyjadřující obavy o výstupech dočasných anchorů, které obsahují více než 0 satoshi. Dočasný anchor platí na standardizovaný výstupní skript, který může být utracen kýmkoliv.
Jedním způsobem použití dočasných anchorů by bylo mít nulovou výstupní hodnotu, což je rozumné vzhledem k pravidlům, která vyžadují, aby byly doprovázeny dceřinou transakcí utrácející tento anchor výstup. Avšak v současném LN protokolu chce-li jedna ze stran vytvořit neekonomické HTLC, je jeho částka použita na přeplacení onchain poplatků commitment transakce. Takové HTLC se nazývá ořezané („trimmed HTLC”). Je-li ořezávání HTLC v commitment transakci učiněno použitím dočasných anchorů, mohlo by být pro těžaře výdělečné, kdyby potvrdil transakci bez dceřiné transakce utrácející výstup dočasného anchoru. Po potvrzení commitment transakce není nikdo motivován k utracení nulového výstupu dočasného anchoru, bude tedy navždy okupovat prostor množiny UTXO v plných uzlech.
Navrženou alternativou je nastavit hodnoty výstupů dočasných anchorů rovnající se částkám ořezaných HTLC. Bude tak výhodné těžit commitment transakci i utracení výstupu dočasného anchoru. Ve svém příspěvku Sanders tuto možnosti analyzuje. Shledává, že tento způsob může přinést několik bezpečnostních problémů. Ty mohou být vyřešeny těžaři, kteří transakce analyzují a určí, kdy by bylo výhodnější, aby sami utratili výstup dočasných anchorů nově vytvořenými transakcemi. Jedná se o druh těžaři extrahovatelné hodnoty (MEV, „miner extractable value”). Bylo navrženo několik dalších alternativních řešení:
-
● Přeposílání pouze takových transakcí, které jsou kompatibilní se záměry těžařů: pokud by se někdo pokusil utratit dočasný anchor způsobem, který nemaximalizuje těžařovy příjmy, taková transakce by nebyla přeposlána.
-
● Spálení ořezané hodnoty: namísto přeměny hodnoty ořezaného HTLC do poplatku může být částka utracena na
OP_RETURN
výstup. Tím by byly satoshi navždy neutratitelné. To by bylo možné pouze, pokud by byla commitment transakce s ořezaným HTLC poslána do blockchainu. V běžném případě jsou ořezané HTLC vyřešeny offchain a jejich hodnota je přesunuta od jedné strany k druhé. -
● Zajištění snadné propagace MEV transakcí: namísto toho, aby těžaři používali zvláštní kód maximalizující jejich hodnotu, usnadněme propagaci těchto transakcí sítí, ať může kdokoliv spustit MEV kód a přeposlat výsledky k těžařům způsobem, který zaručí, že všichni těžaři a přeposílající uzly obdrží stejnou sadu transakcí.
V době psaní zpravodaje nebylo dosaženo jasného závěru.
-
Vydání nových verzí
Vydání nových verzí oblíbených páteřních bitcoinových projektů. Prosíme, zvažte upgrade či pomoc s testováním.
- ● LDK 0.0.119 je novým vydáním této knihovny pro budování aplikací nabízející LN. Bylo přidáno několik nových funkcí včetně přijímání plateb na zaslepené cesty s několika skoky. Vydání dále obsahuje opravy několika chyb a další vylepšení.
Významné změny kódu a dokumentace
Významné změny z tohoto týdne v Bitcoin Core, Core Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface (HWI), Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), Lightning BOLTs a Bitcoin Inquisition.
-
● Bitcoin Core #29058 je přípravným krokem k aktivaci P2P přenosu verze 2 (BIP324) ve výchozím nastavení. Změna přidává podporu pro v2transport v konfiguračních argumentech
-connect
,-addnode
a-seednode
, pokud je nastaven-v2transport
. Pokud spojení nepodporuje v2, použije se v1. Dále tento update přidává do dashboardunetinfo
(bitcoin-cli
) sloupeček s verzí přenosového protokolu. -
● Bitcoin Core #29200 umožňuje, aby podpora sítě I2P používala spojení šifrované pomocí „ECIES-X25519 a ElGamal (typ 4 a 0, respektive). To umožní připojit se k I2P uzlům kteréhokoliv druhu. Novější a rychlejší ECIES-X25519 bude upřednostňováno.”
-
● Bitcoin Core #28890 odstraňuje konfigurační parameter
-rpcserialversion
, který byl dříve označen za zastaralý (viz zpravodaj č. 269). Tato volba byla představena během přechodu na v0 segwit, aby umožnila starším programům nadále přistupovat k blokům a transakcím bez segwitových polí. Dnes by již všechny programy měly segwitovým transakcím rozumět a tato volba již nadále není zapotřebí. -
● Eclair #2808 přidává do příkazu
open
parametr--fundingFeeBudgetSatoshis
, který definuje maximální částku, jakou je uzel ochoten platit na onchain poplatcích za otevření kanálu. Výchozí hodnota je nastavena na 0,1 % částky posílané do kanálu. Eclair se pokusí zaplatit nižší poplatek, pokud je to možné, ale v případě nutnosti jej navýší až na uvedenou částku. Do příkazurbfopen
byl přidán totožný parametr, který definuje maximální částku na utracení za RBF navýšení poplatku. -
● LND #8188 přidává několik nových RPC volání pro rychlé získání debugovacích informací. Ty jsou zašifrované nějakým veřejným klíčem a mohou tedy být patřičným soukromým klíčem rozšifrovány. Jak je v PR vysvětleno, „myšlenkou je, že bychom v šabloně chybového hlášení na GitHubu uvedli veřejný klíč a požádali uživatele, aby spustil příkaz
lncli encryptdebugpackage
. Výstup potom může nahrát na GitHub a tím nám poskytnout informace, které normálně pro debugování potřebujeme.“ -
● LND #8096 přidává „nárazníkovou zónu pro případ vysokých poplatků.” V současném LN protokolu je strana, která sama financuje kanál, zodpovědná za placení jakýchkoliv onchain poplatků přímo obsažených v commitment transakci a předem podepsaných transakcích HTLC-Success a HTLC-Timeout (HTLC-X). Nemá-li tato strana v kanálu příliš mnoho prostředků a poplatky vzrostou, nemusí být schopna přijmout nové příchozí platby, neboť nemají dostatek peněz na zaplacení poplatků, ačkoliv právě přijímají peníze. Pro vyvarování se tohoto druhu problému se zaseknutými kanály doporučuje BOLT2 (jak do něj bylo před několika lety přidáno v BOLTs #740) financující straně držet rezervu, aby mohly být platby přijímány i za zvýšených poplatků. LND nyní také implementuje toto řešení, které je již obsaženo v Core Lightning i Eclair (viz zpravodaje č. 85 a č. 89, angl.).
-
● LND #8095 a #8142 přidávají dodatečnou logiku do částí kódu LND, které zpracovávají zaslepené trasy. Jedná se o součást práce na plné podpoře zaslepených tras v LND.