/ home / newsletters /
Zpravodaj „Bitcoin Optech” č. 396
Zpravodaj tento týden popisuje hašovací funkci s odolností vůči kolizím používající bitcoinový Script a shrnuje pokračující diskuzi o analýze provozu Lightning Network. 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
-
● Hašovací funkce s odolností vůči kolizím pro bitcoinový Script: Robin Linus zaslal do fóra Delving Bitcoin příspěvek o Binohashi, nové hašovací funkci pro bitcoin s odolností vůči kolizím. V článku Linus uvádí, že Binohash umožňuje omezenou introspekci transakcí bez nutnosti změn konsenzu. Tím by mohly protokoly jako BitVM disponovat – podobně jako kovenanty – introspekcí řetězce bez potřeby důvěřovat orákulím.
Navrhovaná hašovací funkce nepřímo odvozuje otisk po dvou krocích:
-
Fixace polí transakce: Pole transakce jsou svázána s několika výpočetními problémy nad podpisy, které musí plátce vyřešit. Každý problém vyžaduje
W1bitů práce, čímž jsou neautorizované změny výpočetně nákladné. -
Odvození haše: haš se vypočítá využitím
FindAndDeletev zastaralémOP_CHECKMULTISIG. Vytvoří se zásobník noncí snpodpisy. Plátce připraví podmnožinu stpodpisy, které jsou ze zásobníku pomocíFindAndDeletevyňaty, a poté spočítá sighash zbývajících podpisů. Proces se opakuje, dokud nenalezne podpis řešící výpočetní problém. Výsledný otisk (Binohash) je složen ztindexů nalezené podmnožiny.
Výsledný otisk má tři vlastnosti: může být extrahován a ověřen v bitcoinovém skriptu, poskytuje odolnost vůči kolizím kolem 84 bitů a může být podepsán Lamportovým podpisem pro použití v BitVM. Dohromady tyto vlastnosti znamenají, že vývojáři mohou již dnes konstruovat protokoly používající onchain data z transakcí za použití pouze současně dostupných skriptových primitiv.
-
-
● Aktualizace nástroje analyzování provozu Gossip Observer: V listopadu Jonathan Harvey-Buschel ohlásil Gossip Observer, nástroj pro sběr dat o provozu lightningového gossip protokolu a výpočet metrik. Snahou je posoudit nahrazení současného systému zaplavování sítě zprávami novým protokolem založeným na synchronizaci množin (set reconciliation).
Od té doby se do vlákna připojil Rusty Russell a jiní, aby diskutovali o výběru nejlepšího způsobu posílání skečů (sketch; kompaktní datová struktura reprezentující pravděpodobnostní zastoupení prvků v množině a umožňující efektivní porovnávání). Jedním návrhem bylo přeskočit obousměrnou zprávu
GETDATAa použít číslo bloku. Tím se odstraní zbytečná výměna požadavku a odpovědi v případech, kdy příjemce již může odvodit kontext relevantního bloku.V návaznosti aktualizoval Harvey-Buschel svou verzi Gossip Observeru, kterou provozuje a která sbírá data. Podělil se o analýzu průměrných každodenních zpráv a popsal model detekovaných komunit a zpoždění propagace.
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.
- ● BDK wallet 3.0.0-rc.1 je kandidátem na vydání nové hlavní verze této
knihovny pro budování peněženek. Mezi hlavní změny patří uzamykání UTXO
napříč restarty aplikace, strukturované události vyvolané při změnách
řetězce a používání
NetworkKindnapříč API pro rozlišování mezi mainnetem a testovacími sítěmi. Vydání dále přidává podporu pro exportní formát Caravan (viz zpravodaj č. 77, angl.) a migrační nástroj pro SQLite databáze z verzí před 1.0.
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 #26988 nově vrací na CLI příkaz
-addrinfo(viz zpravodaj č. 146, angl.) kompletní seznam známých adres. Dříve vracel jen podmnožinu na základě kvality a aktuálnosti. Interně se namísto RPC příkazugetnodeaddresses(viz zpravodaj č. 14, angl.) používágetaddrmaninfo(viz též zpravodaj č. 275). Počet vrácených záznamů se nyní rovná počtu adres, mezi kterými se hledá odchozí spojení. -
● Bitcoin Core #34692 navyšuje na 64bitových systémech s více než 4 GiB paměti výchozí hodnotu
dbcachez 450 MiB na 1 GiB. V ostatních situacích zůstává na 450 MiB. Změna se týká pouzebitcoind, knihovna jádra ponechává výchozí nastavení na 450 MiB. -
● LDK #4304 rozšiřuje přeposílání HTLC o podporu několika příchozích a odchozích HTLC v rámci jednoho přeposlání. Staví tím základy pro trampolínové trasování. Na rozdíl od běžného přeposílání může trampolínový uzel představovat MPP bod (pro platby s více cestami) pro oba směry: shromažďuje příchozí části, hledá trasy pro následující skoky a rozděluje částku mezi více odchozích HTLC. Nová varianta
HTLCSource::TrampolineForwardsleduje všechna HTLC pro trampolínová přeposlání. Nárokování i chyby jsou řádně řešené a monitor kanálů správně při restartování rekonstruuje stav. -
● LDK #4416 umožňuje akceptorovi finančně přispět, pokud se obě strany pokoušejí iniciovat splice ve stejný okamžik. Tím v podstatě přidává podporu pro oboustranné financování během splicingu. Pokud obě strany zahájí splice, protokol chvíle ticha (quiescence) vybere jednu z nich jako iniciátora. Dříve mohl přidat prostředky pouze iniciátor a akceptor musel čekat na další splice, aby mohl také přispět. Jelikož byl akceptor připraven jednat jako iniciátor, jsou poplatky upraveny z iniciátorovy sazby (která pokrývá běžná pole v transakci) na akceptorovu sazbu. API
splice_channeltéž nově obdrží parametrmax_feerate. -
● LND #10089 přidává podporu pro přeposílání onion zpráv, jejíž základy byly představeny ve zpravodaji č. 377 (angl.). Přináší zprávu
OnionMessagePayloada každému peer spojení přiřazuje aktora, který zabezpečuje dešifrování a přeposílání. Funkcionalitu lze deaktivovat příznakem--protocol.no-onion-messages. Jedná se o součást práce na podpoře BOLT12 nabídek. -
● Libsecp256k1 #1777 přidává nové API
secp256k1_context_set_sha256_compression(), které aplikacím umožní za běhu dodat vlastní kompresní funkci pro SHA256. Díky tomu je možné v prostředích, jako je Bitcoin Core, směrovat hašování na hardware bez nutnosti překompilovat knihovnu. -
● BIPs #2047 zveřejňuje BIP392, který definuje formát deskriptorů pro peněženky podporující tiché platby. Nový deskriptor
sp()předepisuje peněženkám, jak skenovat a utrácet výstupy tichých plateb. Ty specifikuje BIP352 jako P2TR výstupy. Verze s jedním argumentem přebírá jediný bech32m klíč:spscanobsahující soukromý klíč pro skenování a veřejný klíč pro utrácení (nelze s ním utrácet) čispspendkódující soukromé klíče pro skenování i utrácení. Formát se dvěma argumentysp(KEY,KEY)obsahuje jako první výraz soukromý klíč pro skenování a další oddělený klíč pro utrácení: buď veřejný klíč, nebo soukromý s podporou MuSig2 agregace dle BIP390. Viz zpravodaj č. 387, který popisoval úvodní diskuzi v emailové skupině. -
● BOLTs #1316 objasňuje, že pokud je v BOLT12 nabídce přítomna volba
offer_amount, musí být vyšší než nula. Na nabídku se nesmí odpovědět, pokud je částka nula. Byla též přidána testovací data pro nevalidní nabídky s nulovou částkou. -
● BOLTs #1312 přidává testovací data BOLT12 nabídek s nevalidním bech32 zarovnáním. Tím zdůrazňuje, že takové nabídky musí být dle BIP173 odmítnuté. Problém byl objeven během fuzz testování napříč lightningovými implementacemi, které odhalilo, že CLN a LDK nabídky s nevalidním zarovnáním akceptovaly, zatímco Eclair a Lightning-KMP je správně odmítaly. Zpravodaj č. 390 popisuje opravu v LDK.
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 17. 3. v 16:30 UTC. Diskuze jsou nahrávány a zpřístupněny na stránce našeho podcastu.