Zpravodaj tento týden oznamuje odhalení zranitelnosti postihující staré verze LND a shrnuje pokračující diskuzi o PSBT pro tiché platby. Též nechybí naše pravidelné rubriky s popisem nedávných změn ve službách a klientech, s oznámeními nových vydání a souhrnem významných změn v populárním bitcoinovém páteřním software.

Novinky

  • Odhalení zranitelnosti postihující staré verze LND: Matt Morehouse zaslal do fóra Delving Bitcoin příspěvek s odhalením zranitelnosti postihující verze LND před 0.17.0. LN přeposílá platební instrukce a onion zprávy pomocí onion-šifrovaných paketů, které obsahují více šifrovaných datových balíčků. Každý balíček obsahuje na začátku svou délku, která u plateb může mít od roku 20191 300 bajtů. Onion zprávy, které byly představeny později, mohou mít až 32 768 bajtů. Avšak datový typ pro velikost dat umožňoval specifikovat velikost až 264 bajtů.

    LND akceptoval indikovanou velikost dat až 4 gigabajty a alokoval takové množství paměti ještě před dalším zpracováním dat. To bylo dostatečné na vyčerpání paměti některých LND uzlů, což způsobilo pád nebo ukončení operačním systémem. Postiženy byly i uzly s větším množstvím paměti, neboť podobných onion zpráv mohlo být posláno několik najednou. Pokud LN uzel spadne, nemůže odeslat časově citlivé transakce důležité pro ochranu finančních prostředků, což může potenciálně vést až k jejich krádeži.

    Zranitelnost byla opravena snížením maximální alokace paměti na 65 536 bajtů.

    Každý, kdo provozuje LND uzel, by měl aktualizovat na verzi 0.17.0 nebo novější. Upgradování na nejnovější verzi (0.18.0 v době psaní) je vždy doporučované.

  • Pokračuje diskuze o PSBT pro tiché platby: několik vývojářů diskutuje o přidání podpory pro koordinaci posílání tichých plateb pomocí PSBT. Od našeho předchozího souhrnu se diskuze soustředila na používání techniky, kde každý podepisující generuje ECDH sdílený tajný kód a kompaktní doklad o jeho správném generování. Tyto části jsou přidány do PSBT sekce se vstupy. Po přijetí sdílených tajemství od všech podepisujících mohou být zkombinovány se skenovacím klíčem adresáta, čímž se získá aktuální klíč do výstupního skriptu (nebo více klíčů pro více výstupů v případě více tichých plateb v rámci jedné transakce).

    Poté, co jsou známy výstupní skripty transakce, přidá každý podepisující do PSBT svůj podpis. Celý proces podepisování PSBT tedy vyžaduje dvě kola (dodatečně k dalším cyklům potřebným pro jiné protokoly jako MuSig2). Avšak bude-li celou transakci podepisovat pouze jedna strana (např. je-li PSBT posíláno do jednoho hardwarového podpisového zařízení), celý proces může být dokončen v jednom kole.

    Všichni účastníci diskuze se v době psaní víceméně shodovali na tomto přístupu, ačkoliv diskuze o okrajových případech stále probíhají.

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.

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

  • Bitcoin Core #29325 přináší ukládání verze transakcí jako bezznaménkového celého čísla. Od první verze bitcoinu 0.1 byly verze ukládány jako celé číslo se znaménkem. Soft fork BIP68 s nimi začal nakládat jako s bezznaménkovými, ale minimálně jedna implementace uzlu toto chování nepozměnila, což mohlo vyústit v možné selhání konsenzu (viz zpravodaj č. 286). Tím, že Bitcoin Core bude vždy ukládat a používat verze transakcí jako bezznaménková celá čísla, se snad předejde podobných chybám i v budoucnosti.

  • Eclair #2867 přidává novou variantu do výčtového typu EncodedNodeId, která bude v zaslepených cestách přiřazována mobilním peněženkám. Díky tomu se může poskytovatel peněženky přizpůsobit situaci, že následující uzel je mobilní zařízení.

  • LND #8730 přináší nový RPC příkaz lncli wallet estimatefee, který na základě cíle pro potvrzení vrátí odhad poplatku onchain transakce v sat/kw (satoshi za 1000 váhových jednotek) a sat/vbyte.

  • LDK #3098 aktualizuje Rapid Gossip Sync (RGS) na v2, která rozšiřuje v1 o dodatečné položky obsažená v serializované struktuře. Nové položky obsahují bajt indikující počet výchozích schopností uzlu, pole schopností uzlu a soketovou adresu. Tato aktualizace je odlišná od navrhované aktualizace BOLT7 gossip protokolu, která se označuje podobně jako gossip v2.

  • LDK #3078 přidává podporu pro asynchronní platby BOLT12 faktury. Pokud je zapnuta volba manually_handle_bolt12_invoices, LDK po přijetí faktury vygeneruje událost InvoiceReceived. Nová metoda send_payment_for_bolt12_invoice na ChannelManager může fakturu zaplatit. Díky tomu může být faktura před platbou či odmítnutím prozkoumána.

  • LDK #3082 přináší podporu pro BOLT12 statické faktury (znovupoužitelné žádosti o platbu). Podpora zahrnuje jejich kódování a dekódování a rozhraní pro jejich konstrukci.

  • LDK #3103 počíná v benchmarcích používat hodnocení výkonu na základě častých sond skutečných platebních cest. Cílem je mít realističtější benchmarky.

  • LDK #3037 začíná zavírat kanály, pokud by byl jejich jednotkový poplatek příliš nízký. LDK neustále monitoruje nejnižší přijatelné poplatky, které algoritmus odhadu vracel během posledního dne. V každém bloku zavře LDK kanál, který platí jednotkový poplatek nižší než minimum za uplynulý den. Cílem je „zajistit, aby poplatky kanálů byly vždy dostatečné na onchain potvrzování commitment transakcí, pokud bychom potřebovali kanál jednostranně uzavřít.”