|
| 1 | +--- |
| 2 | +title: 'Zpravodaj „Bitcoin Optech” č. 316' |
| 3 | +permalink: /cs/newsletters/2024/08/16/ |
| 4 | +name: 2024-08-16-newsletter-cs |
| 5 | +slug: 2024-08-16-newsletter-cs |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: cs |
| 9 | +--- |
| 10 | +Zpravodaj tento týden popisuje nový útok ohýbáním času postihující |
| 11 | +hlavně nový testnet4, shrnuje diskuzi o návrzích na zmírnění hrozby odepření |
| 12 | +služby onion zprávami, žádá o zpětnou vazbu k návrhu na volitelnou možnost |
| 13 | +sebeidentifikace plátců v LN a oznamuje velkou změnu v sestavovacím systému |
| 14 | +Bitcoin Core, která by mohla mít dopad na vývojáře a integrátory. Též |
| 15 | +nechybí naše pravidelné rubriky s oznámeními nových vydání a popisem |
| 16 | +významných změn v populárním bitcoinovém páteřním software. |
| 17 | + |
| 18 | +## Novinky |
| 19 | + |
| 20 | +- **Nová zranitelnost ohýbáním času v testnet4:** Mark „Murch” |
| 21 | + Erhardt zaslal do fóra Delving Bitcoin [příspěvek][erhardt warp] s popisem |
| 22 | + útoku [objeveného][zawy comment] vývojářem Zawy, který zneužívá nový |
| 23 | + algoritmus úpravy obtížnosti v [testnet4][topic testnet]. Testnet4 |
| 24 | + aplikoval řešení z mainnetového soft forku na [pročištění konsenzu][topic |
| 25 | + consensus cleanup], které má za cíl bránit [útokům ohýbáním času][topic time |
| 26 | + warp] (time warp attacks). Avšak Zawy popsal útok podobný ohýbání času, |
| 27 | + který by navzdory novému pravidlu mohl být použit ke snížení obtížnosti těžby |
| 28 | + na 1/16 normální hodnoty. Erhardt rozšířil Zawyho útok tak, aby |
| 29 | + umožňoval redukci obtížnosti až na její minimální hodnotu. Níže popisujeme |
| 30 | + několik souvisejících útoků ve zjednodušené podobě: |
| 31 | + |
| 32 | + Bitcoinové bloky jsou produkovány nahodile se zamýšlenou změnou obtížnosti každých |
| 33 | + 2 016 bloků tak, aby průměrný čas mezi dvěma bloky byl kolem deseti minut. |
| 34 | + Následující zjednodušená ilustrace ukazuje, jak by měla vypadat produkce |
| 35 | + bloků s konstantní měrou, pokud změna obtížnosti nastává každých pět bloků |
| 36 | + (sníženo z 2 016 bloků z důvodu čitelnosti): |
| 37 | + |
| 38 | +  |
| 39 | + |
| 40 | + Záškodnický těžař (nebo skupina těžařů) vlastnící o něco více než 50 % |
| 41 | + hashrate může cenzurovat bloky produkované ostatními méně než 50 % |
| 42 | + čestných těžařů. To by přirozeně vedlo nejprve k jednomu produkovanému bloku |
| 43 | + v průměru za dvacet minut. Po 2 016 blocích produkovaných touto měrou |
| 44 | + by byla obtížnost snížena na polovinu její původní hodnoty, aby se míra |
| 45 | + produkce bloků vrátila na jeden blok každých deset minut: |
| 46 | + |
| 47 | +  |
| 48 | + |
| 49 | + Útok ohýbáním času nastává, když záškodnický těžař použije svou většinu |
| 50 | + hashrate k protlačení časových razítek s minimální možnou hodnotou ve |
| 51 | + většině bloků. Na konci každé 2016blokové periody zvýší čas v hlavičce |
| 52 | + bloku na aktuální [skutečný čas][wall time], aby se doba mezi vyprodukovanými |
| 53 | + bloky jevila delší, než jaká byla ve skutečnosti. To vede ke snížení |
| 54 | + obtížnosti v následující periodě: |
| 55 | + |
| 56 | +  |
| 57 | + |
| 58 | + [Nové pravidlo][testnet4 rule] aplikované v testnet4 tomu brání tím, že |
| 59 | + nedovoluje prvnímu bloku nové periody mít časové razítko výrazně dřívější, |
| 60 | + než jaké má předchozí blok (poslední bok předchozí periody). |
| 61 | + |
| 62 | + Stejně jako původní útok ohýbáním času i Erhardtova verze Zawyho útoku |
| 63 | + inkrementuje většinu časových razítek v hlavičkách bloků minimálním |
| 64 | + možným přírůstkem. Avšak ve dvou z každých tří period posune dopředu čas |
| 65 | + posledního bloku periody a prvního bloku následující periody. To sníží |
| 66 | + obtížnost o největší možnou hodnotu (1/4 aktuální hodnoty). Ve třetí |
| 67 | + periodě používá nejnižší možný čas v každém bloku a také v prvním bloku |
| 68 | + následující periody, což zvýší obtížnost o maximální hodnotu (4×). |
| 69 | + Jinými slovy: obtížnost se sníží o 1/4, potom se opět sníží na 1/16 a potom |
| 70 | + zvýší na 1/4 původní hodnoty: |
| 71 | + |
| 72 | +  |
| 73 | + |
| 74 | + Tento tříperiodový cyklus může být opakován donekonečna. V každém cyklu se |
| 75 | + sníží obtížnost o 1/4, až nakonec bude snížená na úroveň, při které |
| 76 | + umožní těžařům produkovat až [šest bloků za sekundu][erhardt se]. |
| 77 | + |
| 78 | + Aby útočníci (těžaři) mohli snížit obtížnost o 1/4, musí na začátku |
| 79 | + útoku nastavit čas posledního bloku periody o osm týdnů dále do |
| 80 | + budoucnosti, než kolik měl blok na začátku aktuální periody. Udělat |
| 81 | + to dvakrát za sebou bude vyžadovat nastavení času některého bloku na |
| 82 | + 16 týdnů do budoucnosti. Plné uzly neakceptují bloky, které mají |
| 83 | + čas více než dvě hodiny v budoucnosti, což nedovolí záškodnickým |
| 84 | + blokům akceptování po osm týdnů, respektive 16 týdnů. Během čekání |
| 85 | + mohou útočníci vytvářet další bloky za ještě menší obtížnosti. Bloky |
| 86 | + vytvořené čestnými těžaři během těchto 16 týdnů, kdy útočníci připravují |
| 87 | + svůj útok, budou vyloučeny reorganizacemi, až plné uzly začnou akceptovat |
| 88 | + bloky útočníků. Kvůli tomu by mohly být všechny transakce z tohoto |
| 89 | + období v aktuálním blockchainu buď nepotvrzené nebo nevalidní (_konfliktní_). |
| 90 | + |
| 91 | + Erhardt navrhuje vyřešit tento druh útoku soft forkem, který by vyžadoval, |
| 92 | + aby časové razítko posledního bloku periody bylo větší než časové razítko |
| 93 | + prvního bloku stejné periody. Zawy navrhuje několik řešení, včetně |
| 94 | + zákazu poklesu časových razítek (to by mohlo způsobit problémy, pokud |
| 95 | + někteří těžaři vytváří bloky blízko dvouhodinového limitu vynucovaného |
| 96 | + uzly) nebo přinejmenším zákazu, aby klesly o více než dvě hodiny. |
| 97 | + |
| 98 | + Celkově je na mainnetu tento nový útok ohýbáním času podobný původní |
| 99 | + verzi útoku, co se týče požadavků na těžební vybavení, možnost včasného |
| 100 | + odhalení, dopadů na uživatele a řešení v podobě relativně jednoduchého |
| 101 | + soft forku. Vyžaduje, aby měl útočník k dispozici minimálně 50 % hashrate |
| 102 | + přinejmenším po dobu jednoho měsíce. To by uživatelům signalizovalo |
| 103 | + hrozící útok a někdo by si toho na mainnetu zřejmě povšiml. Jak Zawy |
| 104 | + [poznamenává][zawy testnet risk], útok lze mnohem snadněji provést |
| 105 | + na testnetu, neboť jen malé množství moderního vybavení postačuje na |
| 106 | + dosažení 50 % hashrate. Útočník by poté mohl teoreticky vytvořit |
| 107 | + přes 500 000 bloků za den. Zabránit by v tom mohl pouze někdo ochotný |
| 108 | + věnovat ještě větší množství hashrate. Nebo by mu v tom mohl zabránit |
| 109 | + soft fork. |
| 110 | + |
| 111 | + V době psaní zpravodaje byly kompromisy mezi řešeními stále diskutovány. |
| 112 | + |
| 113 | +- **Diskuze o hrozbě DoS onion zprávami:** Gijs van Dam zaslal do fóra |
| 114 | + Delving Bitcoin [příspěvek][vandam onion] odkazující na nedávný |
| 115 | + [článek][bk onion] od badatelů Amina Bashiriho a Majida Khabbaziana |
| 116 | + o [onion zprávách][topic onion messages]. Výzkumníci poznamenávají, |
| 117 | + že každá onion zpráva může být přeposlána mnoha uzly (dle van Damových |
| 118 | + kalkulací až 481), čímž může potenciálně plýtvat jejich přenosovým pásmem. |
| 119 | + Popisují několik metod snížení rizika zneužití přenosového pásma, včetně |
| 120 | + chytré metody vyžadování exponenciálně se zvyšujícího PoW za každý |
| 121 | + další skok, čímž by se staly dlouhé cesty nákladnými. |
| 122 | + |
| 123 | + Matt Corallo navrhuje, aby se před vynakládáním úsilí na něco složitějšího |
| 124 | + nejdříve vyzkoušel již představený návrh (viz [zpravodaj č. 207][news207 |
| 125 | + onion], _angl._), který by omezoval spojení k uzlům posílajícím příliš mnoho |
| 126 | + zpráv. |
| 127 | + |
| 128 | +- **Volitelná identifikace a autentizace LN plátců:** Bastien |
| 129 | + Teinturier zaslal do fóra Delving Bitcoin [příspěvek][teinturier auth] |
| 130 | + s návrhem způsobu, který by plátcům umožnil volitelně přidat k platbám |
| 131 | + dodatečná data, jež by příjemci pomohla tyto platby identifikovat |
| 132 | + jako pocházející od známého kontaktu. Například pokud by Alice vygenerovala |
| 133 | + [nabídku][topic offers], kterou by Bob zaplatil, mohla by požadovat |
| 134 | + kryptografický důkaz, že platba skutečně pochází od Boba a ne od nějaké |
| 135 | + třetí strany předstírající, že je Bob. Nabídky jsou navržené, aby |
| 136 | + skrývaly identitu plátců a příjemců, musel by tedy existovat dodatečný |
| 137 | + mechanismus, který by umožnil volitelnou identifikaci a autentizaci. |
| 138 | + |
| 139 | + Teinturier začíná popisem mechanismu volitelné distribuce _kontaktních |
| 140 | + klíčů_, kterým by Bob mohl odhalit svůj veřejný klíč Alici. |
| 141 | + Dále popisuje tři možné kandidáty na další volitelný mechanismus, který |
| 142 | + by Bob mohl použít k podepsání svých plateb Alici. Pokud by Bob tento |
| 143 | + mechanismus použil, Alicina LN peněženka by mohla podpis autentizovat |
| 144 | + jako Bobův a tuto informaci jí zobrazit. V neautentizovaných platbách |
| 145 | + by pole nastavována plátcem (jako libovolný obsah v `payer_note`) mohla |
| 146 | + být označena za nedůvěryhodná. Tím by byli uživatelé odrazováni |
| 147 | + od spoléhání na jejich hodnoty. |
| 148 | + |
| 149 | + Teinturier žádá o zpětnou vazbu k volbě kryptografických metod a plánuje |
| 150 | + vydat [BLIP42][blips #42] se specifikacemi vybraných způsobů. |
| 151 | + |
| 152 | +- **Bitcoin Core přechází na sestavovací systém CMake:** Cory Fields |
| 153 | + zaslal do emailové skupiny Bitcoin-Dev [příspěvek][fields cmake] |
| 154 | + s oznámením nadcházejícího přechodu Bitcoin Core ze sestavovacího systému |
| 155 | + GNU autotools na systém [CMake][cmake wiki]. Přechod byl veden |
| 156 | + Hennadijem Stepanovem za přispění Michaela Forda (modernizace a opravy |
| 157 | + chyb) a revidování kódu a příspěvky od několika dalších vývojářů (včetně |
| 158 | + Fieldse). Tato změna by neměla mít žádný dopad na uživatele binárních |
| 159 | + sestavení dostupných na BitcoinCore.org (podle našeho odhadu jsou používána |
| 160 | + většinou lidí). Avšak vývojáři a integrátoři, kteří sestavují své vlastní |
| 161 | + binárky za účelem testování nebo přizpůsobení, mohou změnu pocítit (obzvláště |
| 162 | + ti, kteří pracují s neobvyklými platformami či konfigurací sestavování). |
| 163 | + |
| 164 | + Fieldsův email poskytuje odpovědi na očekávané otázky a žádá kohokoliv, kdo |
| 165 | + Bitcoin Core sám sestavuje, aby otestoval [PR #30454][bitcoin core #30454] |
| 166 | + a nahlásil problémy. Očekává se, že PR bude během příštích týdnů začleněno |
| 167 | + a vydáno ve verzi 29 (zhruba za sedm měsíců). Čím dříve testování provedete, |
| 168 | + tím více času budou vývojáři Bitcoin Core mít na odstranění problémů |
| 169 | + před vydáním verze 29. Tím se zvýší šance, že změna nebude mít na |
| 170 | + vaši konfiguraci dopad. |
| 171 | + |
| 172 | +## Vydání nových verzí |
| 173 | + |
| 174 | +*Vydání nových verzí oblíbených páteřních bitcoinových projektů. Prosíme, |
| 175 | +zvažte upgrade či pomoc s testováním.* |
| 176 | + |
| 177 | +- [BDK 1.0.0-beta.1][] je kandidátem na vydání této knihovny pro budování |
| 178 | + peněženek a jiných bitcoinových aplikací. Původní rustový crate `bdk` |
| 179 | + byl přejmenován na `bdk_wallet` a moduly nižší úrovně byly extrahovány |
| 180 | + do vlastních crate: `bdk_chain`, `bdk_electrum`, `bdk_esplora` a `bdk_bitcoind_rpc`. |
| 181 | + `bdk_wallet` je „první verzí se stabilním 1.0.0 API.” |
| 182 | + |
| 183 | +- [Core Lightning 24.08rc2][] je kandidátem na vydání další hlavní verze této |
| 184 | + populární implementace LN uzlu. |
| 185 | + |
| 186 | +- [LND v0.18.3-beta.rc1][] je kandidátem na menší opravné vydání této oblíbené |
| 187 | + implementace LN uzlu. |
| 188 | + |
| 189 | +## Významné změny kódu a dokumentace |
| 190 | + |
| 191 | +_Významné změny z tohoto týdne v [Bitcoin Core][bitcoin core repo], [Core |
| 192 | +Lightning][core lightning repo], [Eclair][eclair repo], [LDK][ldk repo], |
| 193 | +[LND][lnd repo], [libsecp256k1][libsecp256k1 repo], [Hardware Wallet |
| 194 | +Interface (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [BTCPay |
| 195 | +Server][btcpay server repo], [BDK][bdk repo], [Bitcoin Improvement |
| 196 | +Proposals (BIPs)][bips repo], [Lightning BOLTs][bolts repo], |
| 197 | +[Bitcoin Inquisition][bitcoin inquisition repo] a [repozitáři BINANA][binana |
| 198 | +repo]._ |
| 199 | + |
| 200 | +- [Bitcoin Core #29519][] nastavuje po načtení [assumeUTXO][topic assumeutxo] snapshotu |
| 201 | + hodnotu `pindexLastCommonBlock`, aby uzel prioritizoval stahování bloků od posledního |
| 202 | + bloku v snapshotu. Tím se opravuje chyba, kvůli které uzel nastavoval `pindexLastCommonBlock` |
| 203 | + na základě existujících spojení ještě před načtením snapshotu a začal stahovat |
| 204 | + bloky od tohoto mnohem staršího bloku. I když starší bloky i nadále musí být |
| 205 | + stahovány (assumeUTXO je na pozadí validuje), nové bloky by měly mít prioritu, |
| 206 | + aby uživatelé viděli své potvrzené transakce. |
| 207 | + |
| 208 | +- [Bitcoin Core #30598][] odstraňuje z metadat [assumeUTXO][topic assumeutxo] snapshotu |
| 209 | + výšku bloku, neboť se nejedná o jedinečný identifikátor v nedůvěryhodném nezpracovaném |
| 210 | + souboru. Haš bloku, který je ve snapshotu též uložen, je vhodnějším identifikátorem |
| 211 | + a může být použit ke zjištění výšky bloku z jiných vnitřních zdrojů. |
| 212 | + |
| 213 | +- [Bitcoin Core #28280][] zrychluje prvotní stahování bloků (Initial Block Download, IBD) |
| 214 | + u ořezaných uzlů, protože uzel již nebude během zápisů do databáze vyprazdňovat mezipaměť |
| 215 | + UTXO. Za tímto účelem sleduje prvky v mezipaměti, které se od posledního zápisu do databáze |
| 216 | + změnily, a nemusí tak během zápisů skenovat celou mezipaměť. Optimalizace dosahuje až |
| 217 | + 32% zrychlení IBD u ořezaných uzlů s vysokou hodnotou `dbcache` a kolem 9% zrychlení |
| 218 | + s výchozím nastavením. Další informace ve [zpravodaji č. 304][news304 cache]. |
| 219 | + |
| 220 | +- [Bitcoin Core #28052][] přináší do souborů `blocksdir *.dat` [XOR][] kódování |
| 221 | + jako preventivní mechanismus proti nechtěnému a nahodilému poškození dat antivirem |
| 222 | + či podobným softwarem. Kódování nechrání proti záměrnému poškození dat a je možné |
| 223 | + jej vypnout. Stejný mechanismus byl v září 2015 implementován pro `chainstate` soubory |
| 224 | + ([Bitcoin Core #6650][]) a v listopadu 2023 pro mempool ([#28207][bitcoin core |
| 225 | + #28207], viz též [zpravodaj č. 277][news277 bcc28207]). |
| 226 | + |
| 227 | +- [Core Lightning #7528][] upravuje [odhad poplatků][topic fee estimation] používaný |
| 228 | + při jednostranném uzavření kanálu, které není citlivé na časování. Nová hodnota |
| 229 | + absolutního limitu je 2 016 bloků (kolem dvou týdnů) oproti 300 blokům v předchozí |
| 230 | + verzi. To dříve mohlo způsobit, že transakce se kvůli [spodní hranici poplatků][topic |
| 231 | + default minimum transaction relay feerates] v pravidlech pro přeposílání nikdy |
| 232 | + nepotvrdila. |
| 233 | + |
| 234 | +- [Core Lightning #7533][] upravuje interní notifikace o pohybu mincí a účetní |
| 235 | + systém transakcí (bookkeeper), aby braly do úvahy utrácení financujících výstupů |
| 236 | + [splicingových][topic splicing] transakcí. Dříve nebyly vůbec sledovány. |
| 237 | + |
| 238 | +- [Core Lightning #7517][] představuje nový experimentální plugin `askrene` a |
| 239 | + API pro hledání cest s minimálními náklady založené na pluginu `renepay` |
| 240 | + (viz [zpravodaj č. 263][news263 renepay]) zlepšující implementaci Pickhardtových |
| 241 | + plateb. RPC příkaz `getroutes` vrací množinu možných cest spolu s odhadem |
| 242 | + pravděpodobnosti úspěchu. Bylo též přidáno několik dalších RPC příkazů pro |
| 243 | + správu routovacích dat, přidávání kanálů, úpravu jejich dat, vylučování kanálů |
| 244 | + z hledání cest, prohlížení dat a správu probíhajících pokusů o platby. |
| 245 | + |
| 246 | +- [LND #8955][] přidává do příkazu `sendcoins` volitelné pole `utxo` (a `Outpoints` |
| 247 | + do odpovídajícího RPC příkazu `SendCoinsRequest`), které zjednoduší používání |
| 248 | + [výběru mincí][topic coin selection] na jediný krok. Dříve musel uživatel projít |
| 249 | + vícekrokovým procesem, který obsahoval výběr mincí, odhad poplatků, financování |
| 250 | + [PSBT][topic psbt], kompletaci PSBT a zveřejnění transakce. |
| 251 | + |
| 252 | +- [LND #8886][] přidává do funkce `BuildRoute` podporu pro [příchozí poplatky za |
| 253 | + přeposlání][topic inbound forwarding fees]. Obrací proces hledání cesty, nově |
| 254 | + bude hledat od příjemce k odesílateli, což umožní přesnější výpočet poplatků. |
| 255 | + [Zpravodaj č. 297][news297 inboundfees] obsahuje více podrobností o příchozích |
| 256 | + poplatcích. |
| 257 | + |
| 258 | +- [LND #8967][] přidává podporu pro zprávu `stfu` (SomeThing Fundamental is Underway |
| 259 | + čili „něco velkého se děje”; též zkratka vulgární žádosti o ticho) reprezentovanou |
| 260 | + novým typem `Stfu`. Tato zpráva je navržena ke zmrazení stavu kanálu před |
| 261 | + zahájením [upgradu parametrů kanálu][topic channel commitment upgrades]. Zpráva |
| 262 | + obsahuje pole pro ID kanálu, příznak iniciátora a data pro možná budoucí rozšíření. |
| 263 | + Jedná se o součást implementace protokolu Quiescence („chvíle ticha”; viz též |
| 264 | + [zpravodaj č. 309][news309 quiescence]). |
| 265 | + |
| 266 | +- [LDK #3215][] kontroluje, že transakce má nejméně 65 bajtů. Tato kontrola ochrání |
| 267 | + před [nákladným a nepravděpodobným útokem][spv attack] na lehké SPV klienty, |
| 268 | + u kterých může být vytvořena falešná 64bajtová transakce z hašů dvou vnitřních |
| 269 | + Merkleových uzlů. |
| 270 | + |
| 271 | +- [BLIPs #27][] přidává BLIP04 pro experimentální podporu [HTLC atestací][topic htlc |
| 272 | + endorsement]. Ty by měly částečně bránit [útokům zahlcením kanálu][topic channel |
| 273 | + jamming attacks]. Popisuje nové TLV záznamy, způsob nasazení a případný přechod |
| 274 | + z experimentální fáze, pokud by HTLC atestace byly začleněny mezi BOLTy. |
| 275 | + |
| 276 | +{% assign four_days_after_posting = page.date | date: "%s" | plus: 345600 | date: "%Y-%m-%d 14:30" %} |
| 277 | +{% include snippets/recap-ad.md when=four_days_after_posting %} |
| 278 | +{% include references.md %} |
| 279 | +{% include linkers/issues.md v=2 issues="29519,30598,28280,28052,7528,7533,7517,8955,8886,8967,3215,1658,27,30454,42,6650,28207" %} |
| 280 | +[BDK 1.0.0-beta.1]: https://github.com/bitcoindevkit/bdk/releases/tag/v1.0.0-beta.1 |
| 281 | +[erhardt se]: https://bitcoin.stackexchange.com/a/123700 |
| 282 | +[erhardt warp]: https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062 |
| 283 | +[zawy comment]: https://github.com/bitcoin/bitcoin/pull/29775#issuecomment-2276135560 |
| 284 | +[wall time]: https://en.wikipedia.org/wiki/Elapsed_real_time |
| 285 | +[testnet4 rule]: https://github.com/bitcoin/bips/blob/master/bip-0094.mediawiki#time-warp-fix |
| 286 | +[zawy testnet risk]: https://delvingbitcoin.org/t/zawy-s-alternating-timestamp-attack/1062/5 |
| 287 | +[vandam onion]: https://delvingbitcoin.org/t/onion-messaging-dos-threat-mitigations/1058 |
| 288 | +[bk onion]: https://fc24.ifca.ai/preproceedings/104.pdf |
| 289 | +[news207 onion]: /en/newsletters/2022/07/06/#onion-message-rate-limiting |
| 290 | +[teinturier auth]: https://delvingbitcoin.org/t/bolt-12-trusted-contacts/1046 |
| 291 | +[fields cmake]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 292 | +[cmake wiki]: https://cs.wikipedia.org/wiki/CMake |
| 293 | +[Core Lightning 24.08rc2]: https://github.com/ElementsProject/lightning/releases/tag/v24.08rc2 |
| 294 | +[LND v0.18.3-beta.rc1]: https://github.com/lightningnetwork/lnd/releases/tag/v0.18.3-beta.rc1 |
| 295 | +[news304 cache]: /cs/newsletters/2024/05/24/#bitcoin-core-28233 |
| 296 | +[news263 renepay]: /cs/newsletters/2023/08/09/#core-lightning-6376 |
| 297 | +[news309 quiescence]: /cs/newsletters/2024/06/28/#bolts-869 |
| 298 | +[spv attack]: https://web.archive.org/web/20240329003521/https://bitslog.com/2018/06/09/leaf-node-weakness-in-bitcoin-merkle-tree-design/ |
| 299 | +[news297 inboundfees]: /cs/newsletters/2024/04/10/#lnd-6703 |
| 300 | +[news277 bcc28207]: /cs/newsletters/2023/11/15/#bitcoin-core-28207 |
| 301 | +[xor]: https://cs.wikipedia.org/wiki/Vernamova_%C5%A1ifra |
0 commit comments