Skip to content

Commit 0631dec

Browse files
jirijakesbitschmidty
authored andcommitted
Newsletter-316: Translate into Czech
1 parent 2348ee1 commit 0631dec

File tree

1 file changed

+301
-0
lines changed

1 file changed

+301
-0
lines changed
Lines changed: 301 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,301 @@
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+
![Ilustrace čestné těžby s konstantním hashrate (zjednodušeno)](/img/posts/2024-time-warp/reg-blocks.png)
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+
![Ilustrace cenzurování bloků útočníkem majícím mírně přes 50 % celkového hashrate (zjednodušeno)](/img/posts/2024-time-warp/50p-attack.png)
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+
![Ilustrace klasického útoku ohýbáním času (zjednodušeno)](/img/posts/2024-time-warp/classic-time-warp.png)
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+
![Ilustrace Erhardtovy verze Zawyho nového útoků ohýbáním času (zjednodušeno)](/img/posts/2024-time-warp/new-time-warp.png)
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

Comments
 (0)