/ home / newsletters /
Zpravodaj „Bitcoin Optech” č. 312
Zpravodaj tento týden přináší popis protokolu pro distribuované generování klíčů pro schéma bezskriptového prahového elektronického podpisu FROST a odkazuje na podrobný úvod do linearizace clusterů. Též nechybí naše pravidelné rubriky s popisem nedávných významných změn ve službách, klientech a populárních bitcoinových páteřních projektech.
Novinky
-
● Protokol pro distribuované generování klíčů pro FROST: Tim Ruffing a Jonas Nick zaslali do emailové skupiny Bitcoin-Dev příspěvek s návrhem BIPu a referenční implementací protokolu ChillDKG pro bezpečné generování klíčů, které mohou být používány pro bezskriptové prahové elektronické podpisy kompatibilní se Schnorrovými podpisy. Jedním příkladem takového schématu je FROST.
Bezskriptové prahové elektronické podpisy jsou kompatibilní s vytvořením
n
klíčů, z nichž kterýchkolivt
může být kooperativně použito k vytvoření validního podpisu. Například schéma 2-ze-3 vytvoří tři klíče, z nichž kterékoliv dva mohou vytvořit validní podpis. Bezskriptové znamená, že schéma zcela závisí na operacích mimo konsenzus a blockchain, což je opakem vestavěných skriptových prahových podpisů (např. pomocíOP_CHECKMULTISIG
).Podobně jako při generování běžného bitcoinového soukromého klíče musí i zde každý účastník vygenerovat velké náhodné číslo, které nikomu nesmí sdělit. Avšak každý účastník musí navíc rozeslat ostatním účastníkům kódy odvozené z těchto náhodných čísel, aby mohla patřičná část z nich (daná hodnotou prahu) podpis vytvořit, i kdyby byl jeho klíč nedostupný. Každý uživatel musí ověřit, že informace obdržené od všech ostatních byly vygenerované správně. Existuje několik protokolů pro generování klíčů, avšak předpokládají, že uživatelé mají přístup k šifrovanému a autentizovanému komunikačnímu kanálu mezi jednotlivými uživateli, který navíc umožňuje necenzurovatelné autentizované šíření zpráv od každého uživatele všem ostatním. Protokol ChillDKG kombinuje známý algoritmus generování klíčů pro FROST s dalšími moderními kryptografickými primitivy a jednoduchými algoritmy, které poskytnou nezbytnou bezpečnou, autentizovanou a doložitelně necenzurovanou komunikaci.
Šifrování a autentizace mezi účastníky začíná výměnou klíčů pomocí Diffieho-Hellmannova protokolu nad eliptickými křivkami (ECDH). Každý účastník vytvoří doklad absence cenzury tím, že svým klíčem podepíše transkript sezení od začátku až do vytvoření bezskriptového prahového veřejného klíče (kterým sezení končí). Všichni ostatní tento podpis ověří, než prahový veřejný klíč přijmou.
Cílem je poskytnout zcela obecný protokol, který by byl použitelný ve všech případech, kdy chtějí lidé generovat klíče pro bezskriptové prahové elektronické podpisy založené na FROSTu. Navíc tento protokol nabízí možnost snadno ukládat zálohy: uživatel pouze potřebuje svůj soukromý seed a data pro obnovu, která nejsou citlivá na bezpečnost (ale mají dopad na soukromí). V následné zprávě Jonas Nick zmínil, že uvažují nad rozšířením protokolu o šifrování dat pro obnovu klíčem odvozeným ze seedu. Díky tomu by jedinými daty, které uživatel musí chránit, byl seed.
-
● Úvod do linearizace clusterů: Pieter Wuille zaslal do fóra Delving Bitcoin příspěvek s podrobným popisem všech hlavních částí linearizace clusterů, která tvoří základ mempoolu clusterů. V minulých číslech zpravodaje jsme se toto téma pokoušeli představit v době, kdy byly vyvíjeny a publikovány klíčové koncepty. Tento přehled je však mnohem podrobnější. Postupně seznamuje čtenáře se vším od základních konceptů po konkrétní implementované algoritmy. Na závěr uvádí odkazy na několik pull requestů Bitcoin Core, které části cluster mempoolu implementují.
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.
-
● ZEUS přidává podporu pro BOLT12 nabídky a BIP353: Vydání v0.8.5 využívá službu TwelveCash pro podporu nabídek a BIP353 (viz zpravodaj č. 307).
-
● Phoenix přidává podporu pro BOLT12 nabídky a BIP353: Vydání Phoenix 2.3.1 přidalo podporu pro nabídky a Phoenix 2.3.3 přidalo podporu pro BIP353.
-
● Stack Wallet přidává podporu pro RBF a CPFP: Vydání Stack Wallet v2.1.1 přidalo podporu pro navýšení poplatku pomocí RBF a CPFP a také podporu pro Tor.
-
● BlueWallet přidává podporu pro posílání tichých plateb: Ve vydání v6.6.7 přidala BlueWallet možnost platit na adresy tichých plateb.
-
● Ohlášen BOLT12 Playground: Strike ohlásil testovací prostředí pro BOLT12 nabídky. Projekt pomocí Dockeru vytváří a automatizuje peněženky, kanály a platby napříč různými LN implementacemi.
-
● Ohlášen testovací repozitář Moosig: Ledger zveřejnil testovací repozitář založený na Pythonu určený k používání MuSig2 a pravidel peněženek pro deskriptorové peněženky (BIP388).
-
● Vydán nástroj pro vizualizaci protokolu Stratum v reálném čase: Webová stránka stratum.work založená na předchozím bádání zobrazuje v reálném čase Stratum zprávy od různých bitcoinových těžebních poolů. K dispozici je zdrojový kód.
-
● Ohlášen BMM 100 Mini Miner: Těžební zařízení od Braiins přichází s podmnožinou funkcí Stratum V2, jehož podpora je ve výchozím nastavení aktivní.
-
● Coldcard zveřejňuje specifikaci publikování transakcí založeného na URL: Protokol umožňuje zveřejňovat bitcoinové transakce pomocí HTTP GET požadavku; mimo jiné může být protokol použit hardwarovými podpisovými zařízeními založenými na NFC.
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 #26596 používá nový parser zastaralých databází k migrování zastaralých peněženek na deskriptorové. Změna ponechává podporu pro zastaralé peněženky i zastaralý typ
BerkeleyDatabase
. Byla přidána třídaLegacyDataSPKM
, která obsahuje pouze data a funkce nezbytné pro nahrávání zastaralých peněženek určených k migraci. Zpravodaj č. 305 představilBerkeleyRODatabase
. -
● Core Lightning #7455 přidává do
connectd
přeposílání onion zpráv pomocíshort_channel_id
(SCID) inode_id
(viz zpravodaj č.307, který popisuje podobnou změnu v LDK). Onion zprávy jsou nově vždy aktivní, příchozí zprávy jsou omezeny na čtyři za sekundu. -
● Eclair #2878 přináší volitelnou podporu zaslepených cest a quiescence (chvíle ticha) protokolu. Obě funkce jsou již plně implementované a mají své BOLT specifikace (viz zpravodaje č. 245 a č. 309). Eclair uzel inzeruje podporu pro obě funkce, avšak
route_blinding
(zaslepené cesty) je ve výchozím nastavení neaktivní, neboť neumí přeposílat zaslepené platby, které nepoužívají trampolínového routování. -
● Rust Bitcoin #2646 přidává do struktur
Script
aWitness
nové inspektory jakoredeem_script
(ověřující shodu s BIP16 pravidly ohledně utrácení P2SH),taproot_control_block
ataproot_annex
(ověřující shodu s BIP341) awitness_script
(shoda s BIP141). Viz též zpravodaj č. 309. -
● BDK #1489 přináší do
bdk_electrum
používání Merkleových důkazů během zjednodušeného ověřování plateb (simplified payment verification, SPV). Vedle transakcí stáhne též Merkleovy důkazy a hlavičky bloků a ověří, že transakce jsou obsažené v potvrzených blocích. PR dále představuje nový typ ukotvení blokůConfirmationBlockTime
, který nahrazuje předchozí typy. -
● BIPs #1599 přidává BIP46 popisující schéma derivace pro HD peněženky, které vytváří adresy s časovým zámkem používané pro finanční závazky (fidelity bonds), které jsou používány při párování nabídek v online tržištích s coinjoiny ve stylu JoinMarket. Finanční závazky zlepšují odolnost vůči sybil útokům, protože přináší systém reputace, ve kterém tvůrci nabídek dokládají svou serióznost záměrnou obětí v podobě časově uzamčených bitcoinů.
-
● BOLTs #1173 činí pole
channel_update
v chybových onion zprávách volitelným. Uzly nově toto pole mimo aktuální platbu ignorují, aby pomohly chránit identitu odesílatelů HTLC. Změna má za cíl eliminovat zdržování plateb kvůli neaktuálním parametrům kanálu, avšak ponechává uzlům se starými gossip daty možnost v případě potřeby aktualizace přijímat. -
● BLIPs #25 přidává BLIP25 popisující, jak umožnit přeposílání HTLC, která platí nedostatečně vzhledem k zakódované hodnotě. Například Alice chce, aby jí Bob poslal peníze, avšak nemá žádný platební kanál. Alicino LSP Carol otevře JIT kanál. Aby mohla Carol nárokovat poplatek za službu a pokrytí svých onchain nákladů, využije tohoto protokolu a pošle Alici HTLC, které platí nedostatečně vzhledem k zakódované hodnotě. Viz též zpravodaj č. 257, který popisuje implementaci v LDK.