Zpravodaj tento týden přináší souhrn diskuze o novém systému v LND pro dynamickou úpravu poplatků. Též nechybí naše pravidelné rubriky s popisem nedávných změn ve službách a klientském software, oznámeními nových vydání a souhrnem změn v populárních bitcoinových páteřních projektech.

Novinky

  • Diskuze o dynamickém nastavování poplatků v LND: Matt Morehouse zaslal do fóra Delving Bitcoin příspěvek s popisem nově přepsaného sweeperu v LND (nástroj pro „zametení” UTXO zpět do vlastní peněženky, zejména po vynuceném uzavření kanálu), který stanovuje poplatky pro onchain transakce včetně navýšení pomocí RBF. Na úvod stručně vysvětluje hlediska správy poplatků, které jsou pro LN uzel kritické z pohledu bezpečnosti i přirozené touhy vyvarovat se přeplácení. Dále vyjmenovává dvě obecné strategie používané v LND:

    • Dotázat se externího systému odhadování poplatků, jako je místní Bitcoin Core uzel nebo třetí strana. Tohoto se používá hlavně pro výběr úvodního poplatku a pro navyšování poplatků neurgentních transakcí.

    • Exponenciální zvyšování poplatku, které se použije s přibližujícím se koncem lhůty. Tím LND zajistí, aby problémy s mempoolem uzlu nebo s jeho systémem odhadování poplatků nezabránily včasnému potvrzení. Na příklad Eclair začne používat exponenciální zvyšování, když lhůta vyprší za šest bloků.

    Morehouse dále popisuje, jak jsou tyto dvě strategie spolu používané v novém sweeperu: „transakce nárokující HTLC s odpovídajícími lhůtami jsou sloučené do jediné dávkové transakce. Rozpočet pro tuto transakci je spočítán jako součet rozpočtů jednotlivých HTLC v transakci. Na základě rozpočtu a lhůty transakce se vygeneruje funkce, která určí, jaká část rozpočtu se bude utrácet s blížícím se koncem lhůty. Ve výchozím nastavení se používá lineární funkce, která začíná s nízkým poplatkem (určeným minimálním poplatkem pro přeposílání nebo externím odhadem) a končí alokací celého rozpočtu, když je jeden blok před vypršením lhůty.”

    Příspěvek též popisuje, jak nová logika pomáhá chránit proti útokům cyklickým nahrazováním (replacement cycling): „s výchozími parametry v LND by musel útočník zaplatit minimálně 20× více, než je hodnota HTLC, aby útok úspěšně provedl.” Dodává, že nový systém také zlepšuje obranu proti pinningovým útokům.

    Na závěr sdílí množství odkazů na chyby a zranitelnosti v LND, které byly díky nové logice opraveny. Abubakar Sadiq Ismail reagoval několika návrhy na efektivnější používání odhadů poplatků v Bitcoin Core všemi LN implementacemi i jiným software. Další vývojáři ve svých odpovědích přístup chválili a zpřesňovali.

Změny ve službách a klientech

V této měsíční rubrice upozorňujeme na zajímavé aktualizace bitcoinových peněženek a služeb.

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.

  • Bitcoin Core 29.0rc2 je kandidátem na vydání příští hlavní verze tohoto převládajícího plného uzlu.

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, Lightning BLIPs, Bitcoin Inquisition a repozitáři BINANA.

  • Bitcoin Core #31649 kompletně odstraňuje logiku checkpointů, která již není po přidání fáze předsynchronizace hlaviček před několika lety (viz zpravodaj č. 216, angl.) zapotřebí. Předsynchronizace umožňuje během úvodního stahování bloků (IBD) určit platnost řetězce hlaviček porovnáním jejich proof of work s předurčeným prahem nMinimumChainWork. Za validní jsou považované pouze takové řetězce, jejichž proof of work převyšuje tuto hodnotu. Tím lze zabránit DoS útokům hlavičkami s nízkým proof of work. Změna odstraňuje potřebu checkpointů, které jsou často považované za centralizující prvek.

  • Bitcoin Core #31283 přináší do rozhraní BlockTemplate novou metodu waitNext(), která vrátí novou šablonu bloku pouze, pokud se změní vrchol řetězce nebo se zvýší poplatky v mempoolu nad prahovou hodnotu MAX_MONEY. Dříve obdrželi těžaři po každém požadavku novou šablonu, což vyústilo v nadbytečné generování šablon. Změna je v souladu se specifikací protokolu Stratum V2.

  • Eclair #3037 vrátí v odpovědi na příkaz listoffers (viz zpravodaj č. 345) všechna relevantní data nabídek včetně časových razítek createdAt a disabledAt. Dříve vracel pouze syrová Type-Length-Value (TLV) data. Dále PR opravuje chybu způsobující pád uzlu během opakovaného pokusu o registraci stejné nabídky.

  • LND #9546 přidává do příkazu lncli constrainmacaroon (viz zpravodaj č. 201, angl.) parameter ip_range, který umožní autentizačním tokenům (macaroon) nastavit přístup na určitý rozsah IP adres. Dříve mohly být použité pouze konkrétní adresy.

  • LND #9458 přináší pro některá spojení omezený přístup konfigurovatelný pomocí --num-restricted-slots. Spojením je přiřazena úroveň přístupu na základě historie jejich kanálů: s potvrzeným kanálem obdrží chráněný přístup, s nepotvrzeným kanálem obdrží dočasný přístup a ostatní obdrží omezený přístup.

  • BTCPay Server #6581 přidává podporu pro RBF, což umožní navýšit poplatek transakcím bez potomků, jejichž všechny vstup pochází z vlastní peněženky. Uživatelé mohou během navyšování poplatků nově zvolit mezi RBF a CPFP. Pro funkčnost je vyžadován NBXplorer verze 2.5.22 nebo vyšší.

  • BDK #1839 přidává detekci a zpracování zrušených (dvojitě utracených) transakcí. Přidává do TxUpdate nové pole evicted_ats s aktualizacemi časových razítek last_evicted v TxGraph. Transakce jsou považované za vyloučené (evicted), pokud jejich časová razítka last_evicted překročí last_seen. Algoritmus kanonizace (viz zpravodaj č. 335) byl upraven, aby ignoroval vyloučené transakce kromě tranzitivních kanonických potomků.

  • BOLTs #1233 upravuje chování uzlu, aby nikdy nevyvolalo selhání HTLC proti směru toku, pokud uzel zná jeho předobraz. Díky tomu uzel zajistí řádné urovnání tohoto HTLC. Dříve bylo doporučováno vyvolat selhání takového HTLC, pokud chybělo v potvrzené commitment transakci, i když byl předobraz znám. Chyba v LND verzích před 0.18 přinutila uzly pod DoS útokem, aby po restartu vyvolaly selhání čekajících HTLC i přes znalost jejich předobrazů. To způsobilo ztrátu hodnoty HTLC (viz též zpravodaj č. 344).

Chcete víc?

Další diskuze o tématech zmíněných v tomto zpravodaji proběhnou v týdenním Bitcoin Optech Recap na Riverside.fm dne 25. 3. v 15:30 UTC. Diskuze jsou nahrávány a zpřístupněny na stránce našeho podcastu.