|
| 1 | +--- |
| 2 | +title: 'Zpravodaj „Bitcoin Optech” č. 285' |
| 3 | +permalink: /cs/newsletters/2024/01/17/ |
| 4 | +name: 2024-01-17-newsletter-cs |
| 5 | +slug: 2024-01-17-newsletter-cs |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: cs |
| 9 | +--- |
| 10 | +Tento týden přinášíme odhalení nedávné zranitelnosti postihující |
| 11 | +Core Lightning a oznámení o dvou nových návrzích na soft fork. Dále |
| 12 | +poskytujeme přehled návrhu cluster mempoolu, předáváme informaci |
| 13 | +o aktualizované specifikaci a implementaci komprese transakcí a |
| 14 | +shrnujeme diskuzi o těžaři extrahovatelné hodnotě (MEV) v nenulových |
| 15 | +dočasných anchorech. Též nechybí naše pravidelné rubriky s oznámeními |
| 16 | +nových vydání a popisem významných změn v populárním bitcoinovém |
| 17 | +páteřním software. |
| 18 | + |
| 19 | +## Novinky |
| 20 | + |
| 21 | +- **Odhalení nedávné zranitelnosti v Core Lightning:** Matt Morehouse |
| 22 | + [oznámil][morehouse delving] na fóru Delving Bitcoin zranitelnost, |
| 23 | + kterou před tím [zodpovědně nahlásil][topic responsible disclosures]. |
| 24 | + Zranitelnost postihovala Core Lightning verze 23.02 až 23.05.2. |
| 25 | + Novější verze 23.08 a vyšší postiženy nejsou. |
| 26 | + |
| 27 | + Morehouse tuto zranitelnost objevil, když pokračoval v práci na falešném |
| 28 | + financování (viz [zpravodaj č. 266][news266 lnbugs]). Když znovu testoval |
| 29 | + uzly s opravami, podařilo se mu vyvolat [souběh][race condition] („race |
| 30 | + condition”), který po zhruba 30 sekundách CLN shodil. Je-li uzel offline, |
| 31 | + nemůže bránit uživatele proti zlomyslným nebo porouchaným protistranám, |
| 32 | + které uživatelovy prostředky vystavují riziku. Analýza ukázala, že CLN |
| 33 | + opravilo původní zranitelnost falešného financování, ale než stačilo |
| 34 | + opravu řádně otestovat, zranitelnost byla zveřejněna a jeden z pluginů |
| 35 | + začlenil zneužitelný souběh. Po Morehouseově nahlášení byl připraven |
| 36 | + patch, aby souběh nezpůsobil pád uzlu. |
| 37 | + |
| 38 | + Pro více informací doporučujeme přečíst Morehouseův skvělý blogový |
| 39 | + příspěvek s [odhalením][morehouse full]. |
| 40 | + |
| 41 | +- **Návrh nového soft forku LNHANCE:** Brandon Black [zaslal][black lnhance] |
| 42 | + do fóra Delving Bitcoin detaily o soft forku, který kombinuje předchozí |
| 43 | + návrhy [OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify] (CTV) a |
| 44 | + [OP_CHECKSIGFROMSTACK][topic op_checksigfromstack] (CSFS) s novým |
| 45 | + návrhem `OP_INTERNALKEY`, který do zásobníku umisťuje [taprootový |
| 46 | + interní klíč][taproot internal key]. Než budou moci zaplatit na výstup, |
| 47 | + musí znát autoři skriptů interní klíč, aby ho mohli umístit |
| 48 | + přímo do skriptu. `OP_INTERNALKEY` je zjednodušenou verzí [staršího |
| 49 | + návrhu][rubin templating] původního autora CTV Jeremy Rubina. Nová |
| 50 | + verze ušetří několik vbyte a díky ní budou skripty snadněji znovupoužitelné, |
| 51 | + neboť hodnota klíče bude moci být načtena od interpretru skriptu. |
| 52 | + |
| 53 | + Ve vlákně popsali Black i jiní některé protokoly, které by tato kombinace |
| 54 | + změn konsenzu umožňovala: [LN-Symmetry][topic eltoo] (eltoo), |
| 55 | + [joinpooly][topic joinpools] ve stylu [Ark][topic ark], zjednodušená |
| 56 | + [DLC][topic dlc] a [úschovny][topic vaults] bez předem podepsaných |
| 57 | + transakcí. Další výhody přináší pro protokoly nižší úrovně jako |
| 58 | + kontrola zahlcení ve stylu CTV či delegace podpisů ve stylu CSFS. |
| 59 | + |
| 60 | + V době psaní zpravodaje se technická diskuze omezovala na žádosti |
| 61 | + o vysvětlení, které protokoly by tento návrh umožnil. |
| 62 | + |
| 63 | +- **Návrh na soft fork pro 64bitovou aritmetiku:** Chris Stewart |
| 64 | + zaslal do fóra Delving Bitcoin [příspěvek][stewart 64] s [návrhem BIPu][bip |
| 65 | + 64] na přidání 64bitových aritmetických operací do bitcoinu v budoucím |
| 66 | + soft forku. Bitcoin [v současnosti][script wiki] umožňuje pouze 32bitové |
| 67 | + operace (celá čísla se znaménkem, čísla přes 31 bitů tedy nemohou být |
| 68 | + použita). Podpora pro 64bitové hodnoty by byla obzvláště výhodná v |
| 69 | + jakýchkoliv konstruktech, které potřebují pracovat s částkou v satoshi |
| 70 | + placenou na výstup. Ta je specifikována jako 64bitové celé číslo. |
| 71 | + Například výstupovým protokolům [joinpoolu][topic joinpools] by |
| 72 | + se introspekce částky hodila; viz zpravodaje [č. 166][news166 tluv] (_angl._) |
| 73 | + a [č. 283][news283 exits]. |
| 74 | + |
| 75 | + V době psaní zpravodaje se diskuze soustředila na podrobnosti návrhu, |
| 76 | + jak celá čísla kódovat, jaký způsob upgradu [taprootu][topic taproot] |
| 77 | + použít a zda-li je lepší představit nové aritmetické opkódy či |
| 78 | + využít stávající. |
| 79 | + |
| 80 | +- **Přehled návrhu cluster mempoolu:** Suhas Daftuar zaslal do fóra |
| 81 | + Delving Bitcoin [souhrn][daftuar cluster] návrhu [cluster mempoolu][topic |
| 82 | + cluster mempool]. Optech zpravodaj se pokusil shrnout současný stav |
| 83 | + diskuze o cluster mempoolu ve [zpravodaji č. 280][news280 cluster], avšak |
| 84 | + důrazně doporučujeme přečíst si tento přehled. Daftuar je jedním z |
| 85 | + architektů návrhu. Jedna drobnost, kterou jsme před tím nepopsali, |
| 86 | + upoutala naši pozornost: |
| 87 | + |
| 88 | + - *CPFP carve out musí být odstraněno:* pravidlo mempoolu |
| 89 | + [CPFP carve out][topic cpfp carve out], které bylo do Bitcoin Core |
| 90 | + [přidáno][news56 carveout] v roce 2019, adresuje CPFP verzi [pinningu |
| 91 | + transakcí][topic transaction pinning]. V této obdobě protistrana-útočník |
| 92 | + zneužívá omezení v Bitcoin Core na počet a velikost souvisejících transakcí, |
| 93 | + aby pozdržel operace nad dceřinou transakcí patřící čestnému spojení. |
| 94 | + Pravidlo carve out umožňuje, aby jedna transakce tato omezení mírně |
| 95 | + překročila. V cluster mempoolu jsou související transakce umístěny |
| 96 | + do clusteru a omezení jsou aplikována na cluster, nikoliv na jednotlivé |
| 97 | + transakce. S tímto pravidlem není možné zajistit, aby cluster obsahoval |
| 98 | + maximálně jeden carve out, aniž bychom začali omezovat vztahy mezi |
| 99 | + přeposílanými transakcemi daleko za hranicí dnešních omezení. |
| 100 | + Cluster s několika carve out by mohl výrazně překročit limity, |
| 101 | + načež by musel být pro ně protokol přestavěn. To by sice vyhovovalo |
| 102 | + uživatelům carve out, ale omezovalo by to možnosti během běžného |
| 103 | + zveřejňování transakcí. |
| 104 | + |
| 105 | + Navržené řešení nekompatibility mezi carve out pravidlem a cluster |
| 106 | + mempoolem je [přeposílání transakcí verze 3][topic v3 transaction |
| 107 | + relay]. To by umožňovalo běžným uživatelům transakcí verzí 1 a 2 |
| 108 | + pokračovat obvyklým způsobem, ale zároveň by mohli uživatelé |
| 109 | + protokolů jako LN zvolit použití v3 transakcí, které vynucují |
| 110 | + omezení sady vztahů mezi transakcemi (_topologie_). Tato omezená |
| 111 | + topologie by bránila pinningu transakcí a mohla by být zkombinována |
| 112 | + s náhradami carve out transakcí jakou jsou [dočasné anchory][topic ephemeral |
| 113 | + anchors]. |
| 114 | + |
| 115 | + Je důležité, že tato velká změna správy mempoolu Bitcoin Core bere |
| 116 | + do úvahy všechny současné i možné budoucí způsoby používání bitcoinu. |
| 117 | + Proto četbu Daftuarova popisu doporučujeme vývojářům pracujícím na těžebním |
| 118 | + software, peněženkách či kontraktových protokolech. V případě jakýchkoliv |
| 119 | + nejasností nebo obav o možných negativních dopadech na bitcoin a jeho |
| 120 | + interakci s cluster mempoolem se můžete zapojit do diskuze. |
| 121 | + |
| 122 | +- **Aktualizace specifikace a implementace komprese bitcoinových transakcí:** |
| 123 | + Tom Briar zaslal do emailové skupiny Bitcoin-Dev [příspěvek][briar compress] |
| 124 | + s aktualizovaným [návrhem specifikace][compress spec] a [implementace][bitcoin |
| 125 | + core #28134] komprimovaných bitcoinových transakcí. Menší transakce by |
| 126 | + byly praktičtější pro přeposílání omezenými médii, jakou jsou satelity |
| 127 | + či steganografie (např. zakódování transakce do bitmapového obrázku). |
| 128 | + Ve [zpravodaji č. 267][news267 compress] uvádíme popis původního návrhu. |
| 129 | + Briar popisuje významné změny: „odstranění hledání nLocktime ve prospěch |
| 130 | + relativní výšky bloků, která je používána všemi komprimovanými vstupy, |
| 131 | + a použití druhého typu celého čísla s proměnlivou délkou.” |
| 132 | + |
| 133 | +- **Diskuze o těžaři extrahovatelné hodnotě v nenulových dočasných anchorech:** |
| 134 | + Gregory Sanders zaslal do fóra Delving Bitcoin [příspěvek][sanders mev] |
| 135 | + vyjadřující obavy o výstupech [dočasných anchorů][topic ephemeral anchors], |
| 136 | + které obsahují více než 0 satoshi. Dočasný anchor platí na standardizovaný |
| 137 | + výstupní skript, který může být utracen kýmkoliv. |
| 138 | + |
| 139 | + Jedním způsobem použití dočasných anchorů by bylo mít nulovou výstupní |
| 140 | + hodnotu, což je rozumné vzhledem k pravidlům, která vyžadují, aby byly |
| 141 | + doprovázeny dceřinou transakcí utrácející tento anchor výstup. Avšak |
| 142 | + v současném LN protokolu chce-li jedna ze stran vytvořit [neekonomické][topic |
| 143 | + uneconomical outputs] HTLC, je jeho částka použita na přeplacení |
| 144 | + onchain poplatků commitment transakce. Takové HTLC se nazývá _ořezané_ |
| 145 | + („trimmed HTLC”). Je-li ořezávání HTLC v commitment transakci učiněno |
| 146 | + použitím dočasných anchorů, mohlo by být pro těžaře výdělečné, kdyby |
| 147 | + potvrdil transakci bez dceřiné transakce utrácející výstup dočasného |
| 148 | + anchoru. Po potvrzení commitment transakce není nikdo motivován k |
| 149 | + utracení nulového výstupu dočasného anchoru, bude tedy navždy |
| 150 | + okupovat prostor množiny UTXO v plných uzlech. |
| 151 | + |
| 152 | + Navrženou alternativou je nastavit hodnoty výstupů dočasných anchorů |
| 153 | + rovnající se částkám ořezaných HTLC. Bude tak výhodné těžit commitment |
| 154 | + transakci i utracení výstupu dočasného anchoru. Ve svém příspěvku |
| 155 | + Sanders tuto možnosti analyzuje. Shledává, že tento způsob může přinést |
| 156 | + několik bezpečnostních problémů. Ty mohou být vyřešeny těžaři, kteří |
| 157 | + transakce analyzují a určí, kdy by bylo výhodnější, aby sami utratili |
| 158 | + výstup dočasných anchorů nově vytvořenými transakcemi. Jedná se o druh |
| 159 | + [těžaři extrahovatelné hodnoty][news201 mev] (MEV, „miner extractable value”). |
| 160 | + Bylo navrženo několik dalších alternativních řešení: |
| 161 | + |
| 162 | + - *Přeposílání pouze takových transakcí, které jsou kompatibilní se záměry těžařů:* |
| 163 | + pokud by se někdo pokusil utratit dočasný anchor způsobem, který nemaximalizuje |
| 164 | + těžařovy příjmy, taková transakce by nebyla přeposlána. |
| 165 | + |
| 166 | + - *Spálení ořezané hodnoty:* namísto přeměny hodnoty ořezaného HTLC do poplatku |
| 167 | + může být částka utracena na `OP_RETURN` výstup. Tím by byly satoshi |
| 168 | + navždy neutratitelné. To by bylo možné pouze, pokud by byla commitment |
| 169 | + transakce s ořezaným HTLC poslána do blockchainu. V běžném případě |
| 170 | + jsou ořezané HTLC vyřešeny offchain a jejich hodnota je přesunuta |
| 171 | + od jedné strany k druhé. |
| 172 | + |
| 173 | + - *Zajištění snadné propagace MEV transakcí:* namísto toho, aby těžaři |
| 174 | + používali zvláštní kód maximalizující jejich hodnotu, usnadněme propagaci |
| 175 | + těchto transakcí sítí, ať může kdokoliv spustit MEV kód a přeposlat |
| 176 | + výsledky k těžařům způsobem, který zaručí, že všichni těžaři a |
| 177 | + přeposílající uzly obdrží stejnou sadu transakcí. |
| 178 | + |
| 179 | + V době psaní zpravodaje nebylo dosaženo jasného závěru. |
| 180 | + |
| 181 | +## Vydání nových verzí |
| 182 | + |
| 183 | +*Vydání nových verzí oblíbených páteřních bitcoinových projektů. Prosíme, |
| 184 | +zvažte upgrade či pomoc s testováním.* |
| 185 | + |
| 186 | +- [LDK 0.0.119][] je novým vydáním této knihovny pro budování aplikací |
| 187 | + nabízející LN. Bylo přidáno několik nových funkcí včetně přijímání plateb |
| 188 | + na [zaslepené cesty][topic rv routing] s několika skoky. Vydání dále obsahuje |
| 189 | + opravy několika chyb a další vylepšení. |
| 190 | + |
| 191 | +## Významné změny kódu a dokumentace |
| 192 | + |
| 193 | +*Významné změny z tohoto týdne v [Bitcoin Core][bitcoin core repo], [Core |
| 194 | +Lightning][core lightning repo], [Eclair][eclair repo], [LDK][ldk repo], |
| 195 | +[LND][lnd repo], [libsecp256k1][libsecp256k1 repo], [Hardware Wallet |
| 196 | +Interface (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [BTCPay |
| 197 | +Server][btcpay server repo], [BDK][bdk repo], [Bitcoin Improvement |
| 198 | +Proposals (BIPs)][bips repo], [Lightning BOLTs][bolts repo] a |
| 199 | +[Bitcoin Inquisition][bitcoin inquisition repo].* |
| 200 | + |
| 201 | +- [Bitcoin Core #29058][] je přípravným krokem k aktivaci [P2P přenosu |
| 202 | + verze 2 (BIP324)][topic v2 p2p transport] ve výchozím nastavení. |
| 203 | + Změna přidává podporu pro v2transport v konfiguračních argumentech |
| 204 | + `-connect`, `-addnode` a `-seednode`, pokud je nastaven `-v2transport`. |
| 205 | + Pokud spojení nepodporuje v2, použije se v1. Dále tento update |
| 206 | + přidává do dashboardu `netinfo` (`bitcoin-cli`) sloupeček s verzí |
| 207 | + přenosového protokolu. |
| 208 | + |
| 209 | +- [Bitcoin Core #29200][] umožňuje, aby [podpora sítě I2P][topic |
| 210 | + anonymity networks] používala spojení šifrované pomocí „ECIES-X25519 |
| 211 | + a ElGamal (typ 4 a 0, respektive). To umožní připojit se k I2P uzlům |
| 212 | + kteréhokoliv druhu. Novější a rychlejší ECIES-X25519 bude upřednostňováno.” |
| 213 | + |
| 214 | +- [Bitcoin Core #28890][] odstraňuje konfigurační parameter `-rpcserialversion`, |
| 215 | + který byl dříve označen za zastaralý (viz [zpravodaj č. 269][news269 rpc]). |
| 216 | + Tato volba byla představena během přechodu na v0 segwit, aby umožnila |
| 217 | + starším programům nadále přistupovat k blokům a transakcím bez segwitových |
| 218 | + polí. Dnes by již všechny programy měly segwitovým transakcím rozumět |
| 219 | + a tato volba již nadále není zapotřebí. |
| 220 | + |
| 221 | +- [Eclair #2808][] přidává do příkazu `open` parametr |
| 222 | + `--fundingFeeBudgetSatoshis`, který definuje maximální částku, jakou |
| 223 | + je uzel ochoten platit na onchain poplatcích za otevření kanálu. Výchozí |
| 224 | + hodnota je nastavena na 0,1 % částky posílané do kanálu. Eclair se pokusí |
| 225 | + zaplatit nižší poplatek, pokud je to možné, ale v případě nutnosti jej |
| 226 | + navýší až na uvedenou částku. Do příkazu `rbfopen` byl přidán totožný |
| 227 | + parametr, který definuje maximální částku na utracení za [RBF |
| 228 | + navýšení poplatku][topic rbf]. |
| 229 | + |
| 230 | +- [LND #8188][] přidává několik nových RPC volání pro rychlé získání |
| 231 | + debugovacích informací. Ty jsou zašifrované nějakým veřejným klíčem |
| 232 | + a mohou tedy být patřičným soukromým klíčem rozšifrovány. Jak je v PR |
| 233 | + vysvětleno, „myšlenkou je, že bychom v šabloně chybového hlášení na GitHubu |
| 234 | + uvedli veřejný klíč a požádali uživatele, aby spustil příkaz `lncli encryptdebugpackage`. |
| 235 | + Výstup potom může nahrát na GitHub a tím nám poskytnout informace, které |
| 236 | + normálně pro debugování potřebujeme.“ |
| 237 | + |
| 238 | +- [LND #8096][] přidává „nárazníkovou zónu pro případ vysokých poplatků.” |
| 239 | + V současném LN protokolu je strana, která sama financuje kanál, zodpovědná |
| 240 | + za placení jakýchkoliv onchain poplatků přímo obsažených v commitment |
| 241 | + transakci a předem podepsaných transakcích HTLC-Success a HTLC-Timeout |
| 242 | + (HTLC-X). Nemá-li tato strana v kanálu příliš mnoho prostředků a poplatky |
| 243 | + vzrostou, nemusí být schopna přijmout nové příchozí platby, neboť nemají |
| 244 | + dostatek peněz na zaplacení poplatků, ačkoliv právě přijímají peníze. |
| 245 | + Pro vyvarování se tohoto druhu problému se zaseknutými kanály doporučuje |
| 246 | + [BOLT2][] (jak do něj bylo před několika lety přidáno v [BOLTs #740][]) |
| 247 | + financující straně držet rezervu, aby mohly být platby přijímány i za |
| 248 | + zvýšených poplatků. LND nyní také implementuje toto řešení, které je již |
| 249 | + obsaženo v Core Lightning i Eclair (viz zpravodaje [č. 85][news85 stuck] a |
| 250 | + [č. 89][news89 stuck], _angl._). |
| 251 | + |
| 252 | +- [LND #8095][] a [#8142][lnd #8142] přidávají dodatečnou logiku do částí kódu |
| 253 | + LND, které zpracovávají [zaslepené trasy][topic rv routing]. Jedná se o součást |
| 254 | + práce na plné podpoře zaslepených tras v LND. |
| 255 | + |
| 256 | +{% assign day_after_posting = page.date | date: "%s" | plus: 86400 | date: "%Y-%m-%d 15:00" %} |
| 257 | +{% include snippets/recap-ad.md when=day_after_posting %} |
| 258 | +{% include references.md %} |
| 259 | +{% include linkers/issues.md v=2 issues="28134,29058,29200,28890,2808,8188,8096,8095,8142,740" %} |
| 260 | +[morehouse delving]: https://delvingbitcoin.org/t/dos-disclosure-channel-open-race-in-cln/385 |
| 261 | +[morehouse blog]: https://morehouse.github.io/lightning/cln-channel-open-race/ |
| 262 | +[script wiki]: https://en.bitcoin.it/wiki/Script#Arithmetic |
| 263 | +[news166 tluv]: /en/newsletters/2021/09/15/#amount-introspection |
| 264 | +[news283 exits]: /cs/newsletters/2024/01/03/#davkovani-plateb-pri-odchodu-z-poolu-pomoci-dokladu-o-podvodu |
| 265 | +[daftuar cluster]: https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393/ |
| 266 | +[news280 cluster]: /cs/newsletters/2023/12/06/#diskuze-o-cluster-mempoolu |
| 267 | +[news267 compress]: /cs/newsletters/2023/09/06/#komprimovane-bitcoinove-transakce |
| 268 | +[briar compress]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2024-January/022274.html |
| 269 | +[compress spec]: https://github.com/bitcoin/bitcoin/blob/7e8511c1a8229736d58bd904595815636f410aa8/doc/compressed_transactions.md |
| 270 | +[news201 mev]: /cs/newsletters/2022/05/25/#debata-o-tezari-extrahovatelne-hodnote |
| 271 | +[news266 lnbugs]: /cs/newsletters/2023/08/30/#zverejneni-probehle-zranitelnosti-ln-spojene-s-falesnym-financovanim |
| 272 | +[race condition]: https://cs.wikipedia.org/wiki/Soub%C4%9Bh |
| 273 | +[morehouse full]: https://morehouse.github.io/lightning/cln-channel-open-race/ |
| 274 | +[black lnhance]: https://delvingbitcoin.org/t/lnhance-bips-and-implementation/376/ |
| 275 | +[stewart 64]: https://delvingbitcoin.org/t/64-bit-arithmetic-soft-fork/397/ |
| 276 | +[daftuar cluster]: https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393/ |
| 277 | +[sanders mev]: https://delvingbitcoin.org/t/ephemeral-anchors-and-mev/383/ |
| 278 | +[bip 64]: https://github.com/bitcoin/bips/pull/1538 |
| 279 | +[taproot internal key]: /en/newsletters/2019/05/14/#complex-spending-with-taproot |
| 280 | +[news56 carveout]: /en/newsletters/2019/07/24/#bitcoin-core-15681 |
| 281 | +[news269 rpc]: /cs/newsletters/2023/09/20/#bitcoin-core-28448 |
| 282 | +[news85 stuck]: /en/newsletters/2020/02/19/#c-lightning-3500 |
| 283 | +[news89 stuck]: /en/newsletters/2020/03/18/#eclair-1319 |
| 284 | +[ldk 0.0.119]: https://github.com/lightningdevkit/rust-lightning/releases/tag/v0.0.119 |
| 285 | +[rubin templating]: https://freenode.irclog.whitequark.org/bitcoin-wizards/2019-05-24#24661606; |
0 commit comments