Bitcoinové jádro Verze 0.13.0, třináctá generace referenčního klienta bitcoinu, kterou Satoshi Nakamoto poprvé spustil před téměř osmi lety, byla nyní označena k vydání. Toto je jeden z posledních kroků v procesu vydání softwaru a iniciuje proces sestavení Gitian.

Bitcoinové jádro 0.13.0 vyvinulo přibližně 100 přispěvatelů po dobu přibližně pěti měsíců. A zatímco velká část vývojového úsilí v této době byla také zaměřena na Segregated Witness, který bude aktivován pouze v budoucím malém vydání softwaru, Bitcoin Core 0.13.0 obsahuje zhruba tucet pozoruhodných vylepšení ve srovnání s Bitcoin Core 0.12.0.

Toto jsou nejdůležitější změny.

Dítě platí za rodiče

Počet transakcí v bitcoinové síti v průběhu času neustále rostl. Ve výsledku se zaplňovalo více bloků a těžaři obvykle účtují vyšší poplatky za zahrnutí transakcí do bloků. Transakce, které nezahrnují dostatečné poplatky, se obvykle potvrzují déle nebo dokonce vůbec nikdy. To se ukázalo jako poněkud problematické, zejména v obdobích, kdy se v síti prováděly takzvané „zátěžové testy“, s nárůstem celkového počtu transakcí v síti a značným zpožděním transakcí.

Jednotliví uživatelé mohou tento problém vyřešit zahrnutím vyššího poplatku do svých transakcí, což motivuje horníky k upřednostnění těchto transakcí. To je možné i po odeslání transakce pomocí Opt-in Replace-by-Fee (RBF); tuto možnost však zatím mnoho peněženek neobsahuje. RBF je navíc pouze možností odesílatele transakce. Až dosud příjemce neměl způsob, jak zvýšit poplatek za příchozí transakci, aby urychlil potvrzení.

Tento problém je efektivně vyřešen trikem zvaným „Child Pays for Parent“ (CPFP). CPFP je zásada používaná horníky k výběru transakcí, které mají být zahrnuty do bloků. S CPFP těžaři nemusí nutně vybírat nejlépe platící (a platné) transakce, ale místo toho si vyberou ty nejvýnosnější soubor transakcí. Jinými slovy: vyberou transakci s nízkými poplatky, pokud následná transakce bude spoléhá transakce s nízkým poplatkem nabízí dostatečně vysoký poplatek ke kompenzaci. Horník bude zahrnovat oba současně.

V praxi to znamená, že příjemce transakce s nízkým poplatkem může „připojit“ transakci s vysokým poplatkem a utratit stejné mince sám pro sebe. Horník, který je motivován novou transakcí s vysokými poplatky, zahrne sadu transakcí. Přijímač tedy nebude muset tak dlouho čekat na potvrzení, zatímco horník může zvýšit svůj příjem.

Podpora kompaktních bloků

Protokol peer-to-peer bitcoinů je v současné době poněkud neefektivní. Uzly si navzájem posílají většinu údajů o transakcích dvakrát: jednou jako transakce, protože se původně odesílala po síti, a jednou jako součást bloku, když se transakce potvrdí.

To má určité nevýhody. Za prvé, zasílání dat transakcí dvakrát vyžaduje větší šířku pásma, než by skutečně mělo, což zvyšuje náklady na provoz bitcoinového jádra. Za druhé, a co je možná ještě důležitější, předávání nových bloků několika vrstevníkům současně může způsobit výrazné výkyvy šířky pásma. To potenciálně narušuje používání internetu pokaždé, když se najde nový blok, což je pro uživatele potenciálně nepříjemné. A co je důležitější, může také zpomalit šíření bloků v síti. Pomalé šíření bloků může zase upřednostňovat větší těžební skupiny, a tím stimulovat centralizovanější těžební prostředí.

Kompaktní bloky (BIP 152), vyvinutý společností Bitcoin Core a Blockstream vývojář Matt Corallo, jsou navrženy tak, aby snižovaly nadměrný přenos dat. Když je nalezen nový blok, uzly zpočátku komunikují pouze velmi kompaktní hashe transakčních dat. Vzhledem k tomu, že uzly již obdržely úplná data transakce, když byla původně odeslána přes síť, mohou pomocí těchto hashů zjistit, které transakce jsou v bloku zahrnuty, a sami rekonstruovat blok.

Tento trik však ne vždy vyjde dokonale. Pokud uzel ještě před přijetím hodnot hash neobdržel počáteční transakci, tento uzel samozřejmě nemůže transakci vybrat. Ve výjimečných případech navíc a špatně transakce může hash do a že jo hash, oklamání uzlu, aby věřil, že obdržel správnou transakci, dokud se nepokusí rekonstruovat blok a zjistí, že se nesčítá.

V obou těchto případech selhání uzel koneckonců jednoduše požaduje konkrétní data transakce. I když jsou v nich pouze některé úplné transakce, kompaktní bloky budou přenášet po síti mnohem rychleji a vyžadují výrazně menší šířku pásma.

Hierarchická deterministická generace klíčů

Až dosud generovalo bitcoinové jádro nový a zcela náhodný pár veřejných a soukromých klíčů pro každou novou adresu bitcoinu. I když je to důležité z důvodu bezpečnosti a ochrany osobních údajů, může to být pro uživatele také trochu zátěž. Aby bylo možné zabezpečit všechny soukromé klíče před ztrátou, musí si pravidelně zálohovat.

Hierarchická deterministická (HD) generace klíčů (BIP 32), kryptografický trik vyvinutý v letech 2012 a 2013 vývojáři Bitcoin Core Gregory Maxwell a Dr. Pieter Wuille a vývojářem Armory Alanem Reinerem, tento problém řeší. Díky generování klíčů HD vytváří bitcoinové jádro zcela nový pár klíčů pro každou novou adresu, ale všechny tyto klíče jsou odvozeny z jediného semene se 12 slovy. Pokud si uživatelé pamatují toto 12slovné semeno, mohou znovu vygenerovat všechny soukromé klíče a přistupovat ke všem svým fondům.

Je třeba poznamenat, že HD Key Generation není ve světě bitcoinů nová funkce. Mnoho peněženek již tuto možnost obsahovalo několik let. V referenčním klientovi bitcoinu prostě nikdy neexistoval – až dosud.

Výkon & Bezpečnostní

A samozřejmě Bitcoin Core 0.13.0 zavádí významný seznam upgradů výkonu a zabezpečení. Celý rozsah těchto vylepšení přesahuje rámec tohoto článku (viz Bitcoin Core 0.13.0’s Poznámky k vydání pro všechny podrobnosti), ale ve zkratce …

Byla zvýšena paměť mezipaměti databáze, což umožňuje uzlům zrychlit ověřování transakcí a další. Nástroj příkazového řádku Bitcoin nyní umožňuje uživatelům interaktivně psát přístupová hesla a další citlivé informace, což zvyšuje bezpečnost tím, že tyto informace neukládáte do prostého textu. Software je aktualizován tak, aby používal novější verze programovacích jazyků C ++ 11 a Python 3, které umožňují výkonnější funkce. Součástí vydání jsou nyní binární soubory ARM (specifická architektura mikroprocesorů) pro Linux, takže uživatelé to nemusí sestavovat sami. Data týkající se toho, které transakce v mempoolu se navzájem spoléhají (jak se používají s CPFP), lze sdělit externím programům. Uzly v síti mohou požadovat, aby přijímaly pouze transakce, které splňují určitou hranici poplatku, aby se zabránilo útokům DoS. A konečně došlo k mnoha vylepšením na nízké úrovni protokolů peer-to-peer, vzdáleného volání procedur a systému zasílání zpráv (ZMQ).

Díky vedoucímu bitcoinového jádra Wladimir van der Laan a vývojáři bitcoinového jádra a Ciphrex CEO Eric Lombrozo pro informace a zpětnou vazbu.

Poznámka: Bitcoin Core 0.13.0 byl oficiálně vydán 23. srpna; původní název tohoto článku oznamující jeho vydání 22. srpna byl nesprávný. Byl označen k vydání, což obvykle znamená, že bude vydán během několika dní. Bitcoin Core 0.13.0 lze nyní stáhnout na bitcoincore.org a bitcoin.org. (Ale před stažením si to všimněte bezpečnostní varování na bitcoin.org.)