Zpravodaj tento týden shrnuje efektivnější přístup ke garbled obvodům a odkazuje na aktualizaci LN-Symmetry. Též nechybí naše pravidelné rubriky s vybranými otázkami a odpověďmi z Bitcoin Stack Exchange, 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

  • Argo: schéma pro garbled obvody s 1000× efektivnějšími offchain výpočty: Robin Linus zaslal do fóra Delving Bitcoin příspěvek o novém článku, který napsali Liam Eagen a Ying Tong Lai. Článek popisuje techniku, která zefektivňuje garbled zámky (garbled locks) více než tisíckrát. Tento nový přístup používá autentizační kódy zprávy (MAC), které kódují spojení garbled obvodů (garbled circuits) jako body na eliptické křivce. Tyto autentizační kódy jsou navrženy jako homomorfní, a tudíž umožňují reprezentovat operace v rámci garbled obvodu přímo jako operace nad body eliptické křivky. Hlavním vylepšením je, že Argo funguje nad aritmetickými obvody, a nikoliv s binárními obvody. V případě binárních obvodů jsou pro reprezentaci násobení bodů na křivce potřebné miliony binárních hradel. S aritmetickými obvody je potřeba mít pouze jedno aritmetické hradlo. Článek je prvním z několika střípků, které budou potřebné pro používání této techniky nad bitcoinovými konstrukty typu BitVM.

  • Aktualizace LN-Symmetry: Gregory Sanders zaslal do fóra Delving Bitcoin příspěvek o novém vývoji jeho práce na LN-Symmetry (viz zpravodaj č. 284).

    Sanders aktualizoval verze BOLT specifikace a CLN, ze kterých odvádí svůj pilotní projekt. Nově funguje na Bitcoin Inquisition 29.x na signetu s TRUC, dočasným prachem (P2A) a 1p1c přeposíláním balíčků. Podporuje kooperativní zavírání kanálů, opravuje pád, kvůli kterému uzly správně nerestartovaly, a rozšiřuje pokrytí testy. Sanders požádal ostatní vývojáře o testování jeho nového prototypu na signetu s Bitcoin Inquisition.

    Sanders využil schopností LLM k migraci své práce z APO na OP_TEMPLATEHASH+OP_CSFS+IK (viz zpravodaj č. 365, angl.), upravil návrh BOLTu a vytvořil implementaci nad CLN. Dodal však, že jelikož OP_TEMPLATEHASH ještě není nasazen v Bitcoin Inquisition, může být tato druhá změna otestována pouze na regtestu.

Vybrané otázky a odpovědi z Bitcoin Stack Exchange

Bitcoin Stack Exchange je jedním z prvních míst, kde hledají přispěvatelé Optechu odpovědi na své otázky a kde – najdou-li volnou chvíli – pomáhají zvědavým či zmateným uživatelům. V této měsíční rubrice nabízíme některé z otázek a odpovědí, které obdržely vysoký počet hlasů.

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.

  • Libsecp256k1 0.7.1 je údržbovým vydáním této knihovny pro bitcoinové kryptografické operace, které přináší bezpečnostní vylepšení zvyšující počet případů, ve kterých se knihovna pokusí vymazat tajné kódy ze zásobníku. Dále přináší nový testovací framework a několik změn v systému sestavování.

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 #33822 přidává do API libbitcoinkernel (viz zpravodaj č. 380, angl.) podporu pro hlavičky bloků. Nový typ btck_BlockHeader a jeho metody umožňují vytvářet, kopírovat a uvolňovat hlavičky a načítat jejich pole jako haš, předchozí haš, časová razítka, cíl složitosti, verze a nonce. Nová metoda btck_chainstate_manager_process_block_header() validuje a zpracovává hlavičky bloků bez potřeby mít kompletní blok. btck_chainstate_manager_get_best_entry() vrací záznam ze stromu bloků, který nashromáždil nejvíce proof of work.

  • Bitcoin Core #34269 znemožňuje vytváření nebo obnovu nepojmenovaných peněženek během používání RPC volání createwallet a restorewallet (viz zpravodaje č. 45 a č. 130, oba angl.). I když GUI tato omezení již vynucovalo, RPC a kód nikoliv. Migrace peněženky může i nadále obnovit nepojmenované peněženky. Zpravodaj č. 387 popisuje chybu související s nepojmenovanými peněženkami.

  • Core Lightning #8850 odstraňuje několik zastaralých funkcí: option_anchors_zero_fee_htlc_tx, přejmenovanou na option_anchors kvůli změnám v anchor výstupech, RPC decodepay (nahrazenou voláním decode), pole tx a txid v odpovědi na příkaz close (nahrazena poli txs a txids) a estimatefeesv1, původní formát odpovědí používaný pluginem bcli pro získání odhadu poplatků.

  • LDK #4349 přidává do parsování BOLT12 nabídek validaci zarovnání (padding) bech32 dle specifikace v BIP173. Dříve LDK akceptovalo nabídky s nevalidním zarovnáním, avšak ostatní implementace jako Lightning-KMP a Eclair je korektně odmítly. Do výčtového seznamu Bolt12ParseError byla přidána nová položka InvalidPadding.

  • Rust Bitcoin #5470 přidává do dekodéru validaci odmítající transakce bez výstupů. Platné bitcoinové transakce musí mít alespoň jeden výstup.

  • Rust Bitcoin #5443 přidává do dekodéru validaci odmítající transakce, jejichž výstupy mají částky dohromady přesahující MAX_MONEY (21 milionů bitcoinů). Tato kontrola souvisí s CVE-2010-5139, historickou zranitelností, kdy mohl útočník vytvořit transakce s extrémně vysokými výstupními hodnotami.

  • BDK #2037 přidává do struktury CheckPoint metodu median_time_past(), která spočítá medián času posledních 11 bloků (Median Time Past, MTP) definovaný v BIP113. Ten je používán pro validaci časových zámků. Zpravodaj č. 372 (angl.) popisuje další související práci.

  • BIPs #2076 přidává BIP434, který definuje P2P zprávu, která by peer spojením umožnila oznamovat a vyjednávat o podpoře nové funkcionality. Myšlenka zobecňuje mechanismus BIP339 (viz zpravodaj č. 87, angl.), ale namísto nutnosti definovat novou zprávu pro každou funkci poskytuje BIP434 jednu univerzální zprávu pro různé upgrady P2P protokolu. Tento mechanismus je užitečný pro některé návrhy na změnu v P2P protokolu jako sdílení šablon. Viz též zpravodaj č. 386, který popisuje diskuzi v emailové skupině.

  • BIPs #1500 přidává BIP346, který definuje opkód OP_TXHASH pro tapscript. Tato instrukce přidá do zásobníku hašový otisk určitých částí utrácející transakce. Toho lze využít pro vytváření koventantů a snížení interaktivity v protokolech s více stranami. Opkód zobecňuje OP_CHECKTEMPLATEVERIFY a může v kombinaci s OP_CHECKSIGFROMSTACK emulovat SIGHASH_ANYPREVOUT. Viz zpravodaje č. 185 (angl.) a č. 272 pro související diskuze.