Dne 24. listopadu 2019 je oficiálním vydáním Bitcoinové jádro 0.19.0, 19. hlavní vydání původního softwarového klienta bitcoinů, které zahájil Satoshi Nakamoto před téměř 11 lety, a stále dominantní implementace bitcoinů v síti dnes. (Ačkoli kvůli problému, který vyšel najevo v pozdní fázi procesu vydání Bitcoin Core 0.19.0, je verze vydaná ke stažení ve skutečnosti 0.19.0.1.) Bitcoinové jádro vedoucí údržby Wladimir van der Laan, toto nejnovější hlavní vydání vyvinulo více než sto přispěvatelů v rozpětí přibližně šesti měsíců.

Výsledek 550 sloučených požadavků na vytažení, Bitcoin Core 0.19.0 obsahuje řadu vylepšení výkonu, modernizace a opravy chyb, jakož i další změny.

Zde je přehled některých z těchto změn.

Adresy Bech32 ve výchozím nastavení v grafickém uživatelském rozhraní

Formát adresy „bech32“ (BIP 173) již byl představen v bitcoinovém jádru 0.16.0, vydaném na začátku roku 2018, ale nyní je poprvé nastaven jako výchozí možnost v peněžence bitcoinového jádra Grafické uživatelské rozhraní (GUI).

Adresy Bech32 jsou adresy začínající na „bc1“ (na rozdíl od adres začínajících číslicí 1 nebo a 3.) Tyto adresy jsou také o něco delší, ale používají méně různých znaků než aktuální formát adresy, protože již není rozdíl mezi malými a velkými písmeny. (To snižuje možnost lidských chyb, například když je adresa nahlas přečtena.) Adresy Bech32 jsou také navrženy tak, aby omezovaly chyby způsobené překlepy.

Bech32 navíc nabízí výhody v kontextu SegWit. Některé peněženky, které nabízejí SegWit – včetně výchozí peněženky Bitcoin Core až dosud – tak činí „zabalením“ do P2SH výstupů (s adresami začínajícími „3“). Aby uživatelé mohli utratit bitcoiny z takové adresy, musí odhalit část kódu – „skript pro uplatnění“ – aby ukázali, že bitcoiny byly skutečně uzamčeny ve výstupu SegWit. S novými adresami bech32 lze tento krok přeskočit, což znamená, že výdaje z výstupu SegWit budou vyžadovat o něco méně dat, která se budou přenášet přes bitcoinovou síť a zahrnout do blockchainu. Díky tomu jsou transakce z výstupu bech32 ještě levnější než transakce SegWit z výstupu P2SH.

Vzhledem k tomu, že ne všechny bitcoinové peněženky zatím podporují odesílání na adresy bech32, uživatelé bitcoinového jádra 0.19.0 budou stále moci místo toho volitelně generovat přijímací adresu PS2H prostřednictvím přepínání v grafickém uživatelském rozhraní.

Ve výchozím nastavení navíc dvě odchozí připojení pouze blokována

Bitcoinové uzly se připojují k několika dalším bitcoinovým uzlům a společně tvoří síť peer-to-peer. V této síti sdílejí uzly bloky, transakce a některá další data transakcí.

Síť peer-to-peer však může být vystavena útokům, například „útokům na oddíly“. Pokud útočník ovládá dostatečně velký počet bitcoinových uzlů, může potenciálně „odříznout“ určité části bitcoinové sítě (nebo dokonce konkrétní uzly) tím, že zachytí veškerý provoz do ní. Rozdělená část sítě by pak mohla být například oklamána přijetím menšinového řetězce – nikoli nejdelšího – jako platného, ​​což by zase mohlo otevřít dveře útokům s dvojitým výdajem.

Proti útokům na oddíly se bojuje, pokud má uzel v rozdělené části sítě dokonce jen jedno připojení k čestnému uzlu v hlavní síti. Poté by přijal a předal všechny transakce a bloky a odmítl by menšinový řetězec ve prospěch většinového řetězce.

Jedním ze způsobů, jak si to uvědomit, a snazší zvládnutí útoků na oddíly, je zajistit, aby uzly navzájem navazovaly více spojení. Více připojení však přichází s většími požadavky na paměť a šířku pásma; existuje kompromis.

Bitcoin Core 0.19.0 zvyšuje výchozí hodnotu pro odchozí připojení o dvě, ale – chytře – tato dvě další připojení se používají pouze k přenosu bloků – nepřenášejí transakce ani další údaje o transakcích. Tím se minimálně zvyšují přidané požadavky na šířku pásma, přičemž stále dochází k tomu, že útoky na oddíly jsou těžší úspěšně úspěšně dokončit.

Bloom filtry zastaralé

Bitcoin Core je implementace celého uzlu, což znamená, že stahuje a ověřuje všechny bitcoinové bloky. I když je to optimálně bezpečné, není to příliš vhodné pro výpočetní zařízení s nízkými zdroji, jako jsou mobilní telefony. Mobilní peněženky (stejně jako některé stolní peněženky) jsou proto obvykle „lehcí klienti“: jedná se pouze o stahování transakcí a (částí) bloků, které se jich konkrétně týkají..

Jedním ze způsobů, jak toho dosáhnout, jsou Bloom filtry, které dnes používá několik peněženek. Stručně řečeno, Bloom filtry jsou kryptografický trik používaný lehkými klienty k vyžádání relevantních dat od více či méně náhodných plných uzlů v síti. Bohužel však v průběhu let vyšlo najevo, že Bloom filtry jsou vůči soukromí nepřátelské: v podstatě odhalují všechny své adresy do celého uzlu. Kromě toho podpora požadavků na Bloom Filter přichází za cenu CPU a místa na disku pro plné uzly – bez přímého přínosu pro celý uzel samotný.

Zejména kvůli druhému důvodu bitcoinové jádro 0.19.0 již ve výchozím nastavení nepodporuje požadavky Bloom Filter. Uživatelé se mohou i nadále rozhodnout pro výchozí nastavení podpory Bloomových filtrů.

Za zmínku stojí také to, že bitcoinová síť jako celek bude téměř jistě i nadále podporovat Bloom filtry pro nadcházející roky, i když nikdo nepřepne své výchozí hodnoty, jednoduše proto, že starší uzly bitcoinového jádra se obvykle používají i roky po vydání nových verzí byl propuštěn.

Více podpory pro kompaktní filtrování bloků na straně klienta

Alternativou k Bloom Filters je novější řešení s názvem „kompaktní filtrování bloků na straně klienta“ (BIP 158). Kompaktní filtrování bloků na straně klienta v podstatě otočí trik Bloom Filter na hlavu. Místo toho, aby světelné peněženky vytvářely filtry k odesílání do plných uzlů, vytvářejí plné uzly filtry pro každý blok. Klienti Light pak mohou pomocí těchto filtrů zjistit, zda se transakce, které se jich týkají, mohly stát v bloku. Pokud ano, světelná peněženka načte celý blok a vybere z něj veškerá relevantní transakční data.

Bitcoin Core 0.19.0 pokračuje v podpoře kompaktního filtrování blokování na straně klienta. Uzly bitcoinového jádra již mohly filtry vytvářet lokálně, ale uživatelé bitcoinového jádra 0.19.0 je nyní mohou také zpřístupnit prostřednictvím vzdáleného volání procedur (RPC) pro aplikace běžící na vrcholu uzlu (jako peněženka).

Filtry však zatím nejsou dostupné v síti peer-to-peer. To znamená, že uzel Bitcoin Core 0.19.0 nebude automaticky odesílat filtry do peněženek ostatních uživatelů bitcoinů. Tuto funkci lze přidat do budoucího vydání bitcoinového jádra – nebo se uživatelé bitcoinového jádra 0.19.0 mohou rozhodnout nabídnout tuto funkci prostřednictvím vlastní aplikace spuštěné nad jejich uzlem bitcoinového jádra.

Podpora platebního protokolu deaktivována z grafického uživatelského rozhraní

Platební protokol (BIP 70) byl navržen před několika lety, aby zlepšil platební zkušenost bitcoinu. Kromě pravidelné platby vysílané do sítě bitcoinů by uživatel a obchodník sdělili další podrobnosti o platbě, například cílovou adresu čitelnou člověkem (jméno obchodníka) a adresu pro vrácení peněz v případě, že se něco pokazí s nákupem.

Zatímco bitcoinové jádro integrovalo platební protokol do svého grafického uživatelského rozhraní, standard nebyl nikdy široce přijat. Místo toho většina peněženek stále používá základní schéma URI (BIP 21) pro příjem plateb: Klikatelný odkaz nebo skenovatelný formát QR kódu, který například komunikuje platební adresu a částku. (Jedinou významnou výjimkou je dnes platební procesor BitPay, který nepodporuje schéma URI, ale používá upravenou verzi BIP 70.)

Snad ještě důležitější než nedostatečné přijetí utrpěl platební protokol BIP 70 řada chyb zabezpečení a soukromí v průběhu let. Některé peněženky proto aktivně fungují zamítnuto implementovat protokol. Také bitcoinové jádro už nějakou dobu plánovalo odmítnout BIP 70, protože jeho údržba se nepovažovala za námahu – ale jeho přijetí společností BitPay tento proces zastavilo.

V bitcoinovém jádru 0.19.0 byl BIP 70 ve výchozím nastavení odstraněn z grafického uživatelského rozhraní. Uživatelé Bitcoin Core 0.19.0 by museli svůj uzel zkompilovat se speciální konfigurací, aby tuto funkci mohli i nadále využívat.

Jiný…

Kromě výše zmíněných změn přichází Bitcoin Core 0.19.0 s dlouhým seznamem menších vylepšení a modernizací. 

Nyní je například možné spustit prořezaný uzel okamžitě z instalace, což umožňuje uživatelům s malým prostorem na disku snadno spustit nový bitcoinový uzel. Bitcoin Core 0.19.0 také obsahuje nové funkce pro protokol Částečně podepsané bitcoinové transakce (PSBT), který je užitečný pro transakce s více podpisy a CoinJoin. Podobně existuje několik vylepšení v doméně deskriptorů peněženek, což je zvláště užitečné pro programátory pracující na bitcoinových aplikacích. Uzly Bitcoin Core 0.19.0 budou také přijímat a předávat transakce, které používají budoucí verzi SegWit, aby bylo zajištěno, že nadcházející upgrady budou probíhat hladce.

Rozsáhlejší seznam upgradů najdete také v Poznámky k verzi Bitcoin Core 0.19.0.1.

Děkujeme společnosti Sjors Provoost za zpětnou vazbu k tomuto článku.