Proč chtějí vývojáři více verzí Bitcoinového jádra?

Z nedávných diskusí o tom, zda by měli mít lidé možnost provádět vlastní změny Bitcoinového protokolu vyplynulo, že změny v referenční verzi Bitcoinového jádra nejsou jediný způsob, jak mohou lidé přispět.

Nedávná změna v Bitcoinovém kódu pro linuxovou distribuci Gentoo mnoho lidí naštvala a posléze byla vývojářem defaultně vypnuta.

„Lidé je mohou používat, pokud chtějí, ale nikdy nedojde ke sloučení do Bicoinového repozitáře Github“, uvedl vedoucí vývojář Wladimir J van der Laan.

Co je Github, proč má van der Laan právo zvolit, co do něj bude včleněno a jak se Bitcoin vlastně vyrábí?

Bitcoin developing

Referenční implementace pro Bitcoinový protokol se nazývá Bitcoin Core (Bitcoinové jádro). Tento kód Satashi před svým zmizením přenechal skupině vývojářů.

Jeho „učedníci“ nyní kód spravují s pomocí širší komunity vývojářů. Kladou důraz na efektivnost kódu, při práci postupují pečlivě a s konzervativnějším přístupem.

Jádro řídí kontrolní systém Git, který lidem umožňuje sledovat, verzi kódu, na níž pracují a jaké změny je třeba provést. Vývojáři se pomocí systému Git připojují do centrální služby Github, aby mohli všichni současně pracovat na různých verzích téhož projektu. Github má řadu rozdílných projektů zpracovávaných různými skupinami lidí. Bitcoin patří k jedním z nich, má i vlastní Github stránku.

Kód projektu je umístěn na Github v tzv. repozitáři. Oficiální editovatelná verze úložiště se nazývá „nadřazený adresář“. Lidé, kteří chtějí pracovat na vlastních změnách si mohou vytvořit vlastní verzi repozitáře zkopírováním do „online fork“. Developeři mohou tuto kopii editovat dle libosti. Opětovné sloučení jejich práce do hlavního adresáře mohou uskutečnit požadavkem „pull“, který zpřístupní jejich verzi úložiště ostatním členům projektu a umožní jim hodnocení a ověření.

„Vývojáři v komunitě posoudí změny, potom předkladatel odstraní případné chyby “ Vysvětlil van der Laan. U složitějších případů je nutné najít testery, jedná se například o změny v uživatelském rozhraní nebo vzdáleném volání procedur. Pokud dostatek lidí změny schválí, dojde k začlenění do hlavního adresáře bitcoinového jádra.

Konečné rozhodnutí o začlenění do jádra mají správci – vedoucí výzkumu a bývalý hlavní developer van der Laan, Gavin Andresen, Jeff Garzik, Gregory Maxwell a Pieter Wuille. „Jednotlivé uložiště Github nejsou „demokratické“. Správci spolupracují na jeho vývoji a rozhodují co a kdy bude sloučeno do jádra. Obtížné technické záležitosti se nedají řešit oblíbeným hlasováním.“, vysvětlil van der Laan.

BIPS a požadavky pull

*BIPS (Bitcoin Payment System Provider)

Pokud je to možné, vývoj BTC probíhá díky konsensu. Obecně lze říci, že existují dva typy změn.

Van der Laan uvedl, že Bitcoinové jádro je záměrně udržováno konzervativním způsobem, a že většina změn je vratná. Zabývají se postupnými menšími změnami než o radikálními zásahy. Úpravy se týkají přehlednosti kódu a optimalizace využití paměti.

Další třídou změn má větší následky, řadí se k nim změna pravidel konsensu. Pro správné fungování bitcoinové sítě je nutné, aby všichni BTC klienti dodržovali technická pravidla konsensu. Ta musí být nejprve projednána, přezkoumána. Povětšinou se jednání táhnou a jsou dlouho předmětem diskusí.

BIP (Bitcoin Improvement Proposal) je dokument navrhující globální změnu některých aspektů Bitcoinu. Může se týkat i věcí mimo Jádro včetně mobilních peněženek, nebo generování kódů v hardwarových peněženkách. Může například upravovat předpisy kolem bitcoinu, například změnu v procesu rozhodování. BIP může vytvořit kdokoliv. Změna BIP 62 se zabývala transakčními chybami.  K realizaci změn v protokolu pomáhají autorovi BIP zkušební verze kódu pro testery a jejich následné recenze, dodal van der Laan.

Kontrola a schválení

Bitcoinový poradce a bezpečnostní auditor Sergio Lerner by rád uvítal větší formalizaci při procesu schvalování kódu.

„Když vidíte sloučený požadavek pull, těžko říct, kdo ho schválil a v jakém  rozsahu byly změny zkontrolovány. Musíte pročíst spoustu komentářů, hodnocení a nějaké „+1″, které lze interpretovat jako „ano souhlasím“, či „líbí se mi to, ale kód jsem příliš nezkoumal“.

Lerner by si přál schvalování změn digitálním podpisem, vývojáři by tedy formálně souhlasili podepsáním recenze. Tento proces v současnosti využívají některé multi-sig peněženky, jež používají více podpisů k autorizaci použití dané adresy. Dále by zahrnul záznam zjištěných chyb a analýzu, proč nebyly odhaleny včas, externí bezpečnostní revizi kódu, dokumentaci (change log) patche  a popis přezkoumání.

„Znamená to kontroly zdrojového kódu řádek po řádku? Znamená to kontrolovat úplnost dokumentace změn? Znamená to analyzování známých způsobů útoků?“ Problém je, že všechno vyžaduje čas a lidské zdroje“, uvedl Lerner.

„Implementace zmíněných věcí vyžaduje údržbu, vyšší rozpočet a další základní vývojařské zdroje (kterých je nedostatek). Ale software, který udržuje průmysl v hodnotě 6 mld. USD, to vyžaduje.“

Zatímco Lerner uvádí některé požadavky revize kódu, van der Laan opakuje hlavní Andersenův projev na konferenci Bitcoin 2014, kde řekl, že by bylo třeba zapracovat na schvalování BIP.

„Byl bych rád, kdyby i vývojáři jiných částí systému byli více aktivní v hodnocení návrhů, nebo s nějakými řešeními přišli.“, uvedl.

BIP jsou celosvětové a neorganizované, měly by tedy být spravovány lidmi a organizacemi, které mají zájem spolupracovat. Neměla by Bitcoinová nadace hledat právě takové? Ne, protože změny ve světě bitcoinu postupují rychle a týmy vývojářů uvítají i odlišné změny.

“ Ve svém projevu na Bitcoin 2014 dal Gavin jasně najevo, že klade důraz na diverzifikaci. Dokonce řekl „čím více, tím lépe.“ I když je údržba Bitcoinového jádra má práce, do značné míry souhlasím.“, řekl van der Lann.

V raných začátcích bylo Jádro možná až příliš důležité,  developeři museli stále udržovat uzlovou infrastrukturu a po nocích řešit chyby. Podle předpokladů se postupně z Bitcoinu stává globální systém a je čas se posunout dále.

Konečné rozhodnutí o tom, co bude zahrnuto do systému sice zůstává na malé skupině lidí. Neznamená to však, že chtějí, aby se rozhodování bylo bráno jako výhradně elitářské.

 Někteří z hlavních vývojářů aktivně podporují ostatní v rozšiřování sítě vlastními projekty za předpokladu, že se většina z nich bude řídit pravidly konsensu. Ti, kteří vypadnou z rytmu jsou majoritní skupinou nuceni napravit nedostatky.

Bitcoin se ubírá směrem, který by mohl znamenat příležitosti pro vytvoření nových rozdílných strategií při zachování pravidel konsensu, která dělají Bitcoin tím, čím je. Měl by být rovněž zmírněn tlak na lidi, kteří podporují tento rychle rostoucí business. Správně by dojít k zavedení i nových procesů autorizace, přesně jak řekl Lerner.  Otázkou zůstává, zda bude vývoj Bitcoinu pokračovat efektivně bez komplikací i v takovém množství alternativních možností.

Share Button