Dnes je oficiální vydání Bitcoinové jádro 0.21.0, 21. hlavní vydání původního softwarového klienta bitcoinu, který spustil Satoshi Nakamoto asi před 12 lety. 

Dohlíží Bitcoinové jádro vedoucí údržby Wladimir van der Laan, toto poslední hlavní vydání vyvinulo více než sto přispěvatelů v rozpětí asi šesti měsíců. Výsledkem více než 600 sloučených požadavků na vytažení je Bitcoin Core 0.21.0 jednou z největších verzí bitcoinového jádra za poslední roky, která přináší různé nové funkce i vylepšení ochrany osobních údajů a výkonu a zároveň dělá velký krok směrem k upgradu protokolu Schnorr / Taproot.

Níže uvádíme některé z nejvýznamnějších změn.

Peněženky deskriptorů

Když jsou mince zasílány na adresu bitcoinu, ve skutečnosti se pod kapotou stane to, že jsou „uzamčeny“ ve výstupu nevyčerpaných transakcí (UTXO), aby byly „odemčeny“ (utraceny) pouze v pozdější transakci, pokud jsou podmínky skryté v UTXO jsou splněny. Typickou podmínkou je zahrnutí platného podpisu odpovídajícího konkrétnímu veřejnému klíči. Podmínky však mohou například zahrnovat také zahrnutí tajného kódu, uplynutí časového limitu nebo kombinaci podpisů (multisig).

Až dosud bylo bitcoinové jádro navrženo pro správu UTXO ve své peněžence kolem jejich odpovídajících soukromých klíčů – i když soukromé klíče jsou jen jednou z několika potenciálních podmínek pro utrácení mincí. Bitcoin Core 0.21.0 místo toho zavádí „peněženky deskriptorů“. Peněženky deskriptorů umožňují uživatelům kategorizovat jejich UTXO na základě typů podmínek, které jsou nutné k jejich utrácení. (Například: jedna peněženka pro UTXO, která vyžaduje pouze platný podpis, a jedna peněženka pro multisig UTXO.)

Peněženky deskriptorů jsou užitečné zejména pro vývojáře aplikací, kteří navrhují software nad rámec bitcoinového jádra. Konkrétní aplikaci lze nyní snadno navrhnout tak, aby využívala pouze konkrétní typ UTXO, jako jsou multisig UTXO, a ignorovat všechny multisig UTXO.

Běžní uživatelé si také nyní mohou všimnout rozdílu, když jsou implementovány peněženky deskriptorů. Snad nejdůležitější je, že při spuštění nového uzlu Bitcoin Core nebude vytvořena žádná výchozí peněženka. Místo toho se nová peněženka vytvoří pouze tehdy, když se tak uživatel výslovně rozhodne udělat, což mu umožní vytvořit pouze konkrétně požadovaný typ peněženky. Peněženky deskriptorů také lépe podporují peněženky Watch Only: peněženky, které sledují určité UTXO, i když uzel nemá soukromé klíče potřebné k jejich utrácení.

Uživatelé Bitcoin Core, kteří upgradují na Bitcoin Core 0.21.0, budou prozatím stále moci používat svoji starší peněženku. (Starší peněženky budou nakonec zastaralé, což znamená, že uživatelé budou muset migrovat svou starší peněženku do peněženky deskriptorů, ale to nebude nezbytně nutné, dokud nebude vydáno budoucí bitcoinové jádro.)

Poskytování filtrů kompaktních bloků v síti peer-to-peer

„Lehkými klienty“ jsou bitcoinové peněženky a aplikace, které nestahují a neoverují celý bitcoinový blockchain, ale stahují a ověřují pouze části bloků a transakcí, které se jich konkrétně týkají. To není optimálně bezpečné, ale je to mnohem méně náročné na zdroje.

Jedním z populárních způsobů, jak toho dosáhnout, je Bloom Filters. Stručně řečeno, Bloom filtry jsou kryptografický trik pro vyžádání relevantních dat od více či méně náhodných uzlů peer v síti. Bohužel se však v průběhu let ukázalo, že Bloom filtry jsou spíše nepřátelské k soukromí: v podstatě odhalují všechny adresy uživatelů do (víceméně náhodného) peer uzlu, který by samozřejmě mohl být ovládán pomocí ochrany soukromí. snoop.

Novější a mnohem více zachující soukromí alternativa řešení Bloom Filter se nazývá „kompaktní filtrování bloků na straně klienta“ (BIP 157/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 pro odesílání do plných uzlů, vytvářejí plné uzly filtry pro každý blok a na vyžádání je odesílají světelným klientům. Klienti Light pak pomocí těchto filtrů zjistí, zda transakce, které se jich týkají, mohly být zahrnuty do bloku. Pokud ano, světelná peněženka načte celý blok a vybere z něj veškerá relevantní transakční data. (Budou existovat některá falešná pozitiva; bloky, které v nich nebudou obsahovat relevantní údaje o transakcích, i když to filtr navrhl.)

Stávající vydání bitcoinového jádra by již mohla filtry vytvořit místně a zpřístupnit je prostřednictvím vzdáleného volání procedur (RPC) pro aplikace běžící na vrcholu uzlu (například peněženky). Bitcoin Core 0.21.0 nyní také zahrnuje možnost na požádání zpřístupnit tyto filtry v bitcoinové peer-to-peer síti. Díky tomu je nyní možné provozovat samostatné světelné klienty, kteří používají filtry Bloom.

Méně pokusů o opakované vysílání

Kromě Bloom Filters mohou snoops také narušit soukromí uživatelů bitcoinů prostřednictvím síťové analýzy. Pokud mohou zjistit, ze kterého uzlu konkrétní transakce pocházela, lze bitcoinové adresy nebo uzly tohoto uzlu spojit s jeho IP adresou, kterou lze následně spojit s identitou reálného světa.

Až dosud, když uzly Bitcoin Core vysílaly transakci do bitcoinové sítě, pokusily se transakci znovu vysílat každých patnáct minut, dokud nebude transakce zahrnuta do bloku. To znamenalo, že pokud by byly tyto uzly Bitcoin Core připojeny k snooping peer, bylo by pro snoop zřejmé, že uzel Bitcoin Core, který se snaží každých 15 minut znovu vysílat určitou transakci, byl také uzlem, kde tato transakce vznikla.

Bitcoinové jádro 0.21.0 výrazně snižuje frekvenci pokusů o opětovné vysílání transakcí: pouze jednou za 12 až 36 hodin. Méně časté opakované vysílání zvyšuje pravděpodobnost, že transakce byla potvrzena od počátečního vysílání, takže je méně pravděpodobné, že uzel bude muset znovu vysílat vůbec.

V budoucích verzích Bitcoin Core bude tento únik soukromí zcela opraven. Uzel bitcoinového jádra poté znovu vysílá pouze transakce, které měly být potvrzeny na základě jeho vlastních mempoolových a poplatkových výpočtů. Kromě toho bude znovu vysílat i další transakce, nejen své vlastní.

Podpora Tor V3

Kvůli nedávnému upgradu protokolu Tor zachovávajícího soukromí jsou nové Tor-adresy V3 (verze 3) delší než adresy V2 (verze 2), které byly před nimi. Adresy V2 se stále používají, ale jejich podpora bude ukončena přibližně za rok.

Ukončení podpory adres V2 by představovalo problém pro uživatele Bitcoin Core, kteří chtějí používat bitcoin v síti pro ochranu osobních údajů. Bitcoinové jádrové uzly najdou partnery vzájemným sdílením Tor adres známých bitcoinových uzlů využívajících Tor. Sdíleli to prostřednictvím stejné zprávy, kterou používají ke sdílení běžných adres IP jiných uzlů. Zatímco adresy Tor V2 mohou být „skryty“ v běžném formátu adresy IP (IPV6), adresy Tor V3 jsou na to příliš dlouhé; jinými slovy, aktuální zprávy jsou příliš omezené na to, aby byly kompatibilní s upgradem Tor.

Bitcoin Core 0.21.0 proto zavádí nový formát pro sdílení IP / Tor adres s kolegy. Tyto zprávy mohou být dostatečně velké, aby mohly sdílet adresy Tor V3.

Nasazení kódu Schnorr / Taproot a Signet / Regtest

Schnorr / Taproot je připraven být prvním upgradem protokolu bitcoinu od Segregated Witness (SegWit) v srpnu 2017. Schnorrův podpisový algoritmus, který byl vyvíjen již déle než dva roky, je považován za všestranné zlepšení oproti současnému podpisovému algoritmu ECDSA společnosti Bitcoin. V kombinaci s Taprootem – chytrým trikem, jak skrýt různé podmínky pro utrácení mincí v kryptografickém hash stromu – upgrade slibuje nabídnout větší flexibilitu inteligentních kontraktů škálovatelným a zachováním soukromí.

Kód Schnorr / Taproot je nyní součástí Bitcoin Core 0.21.0. Kromě neočekávaného vývoje to znamená, že již nebude podléhat žádné další změně, což například znamená, že vývojáři aplikací by mohli začít navrhovat software kolem upgradu. Kromě toho je Schnorr / Taproot nyní k dispozici na Signetu (novější a spolehlivější varianta testnet, kterou používají vývojáři k testování nového bitcoinového softwaru) a potenciálně také na Regtestech (další lokální varianty testnet).

Schnorr / Taproot však zatím nebude k dispozici na síti bitcoinů. Za tímto účelem bude nejprve nutné aktivovat upgrade, což vyžaduje aktivační logiku, která dosud není součástí tohoto vydání Bitcoin Core. Očekává se, že aktivační logika bude zahrnuta do menšího vydání Bitcoin Core, možná někde v příštích měsících.

Jiný…

Kromě výše uvedených změn obsahuje Bitcoin Core 0.21.0 různé opravy chyb a vylepšení výkonu, které nebudou pro běžné uživatele tak zjevné. Peněženka Bitcoin Core například přepne z používání Berkeley DB na databázi SQLite, která je vhodnější jako datový soubor aplikace a nabízí několik záruk, pokud jde o kompatibilitu, podporu a testování. Zajímavé je také to, že Bitcoin Core 0.21.0 obsahuje generální opravu požadavku na transakci: nový protokol zpráv, který bitcoinové uzly používají k získávání informací o nových transakcích, je lépe testován, lépe specifikován a snadněji udržován a kontrolován.

Rozsáhlejší seznam upgradů najdete také v Poznámky k verzi Bitcoin Core 0.21.0, nebo vidět tento blogový příspěvek přispěvatel Bitcoin Core Andrew Chow pro podrobnější vysvětlení deskriptorových peněženek (stejně jako starších peněženek) a SQLite (stejně jako Berkeley DB).

Díky Johnu Newberymu za informace a zpětnou vazbu.