412 / 736GARZIK

Jeff Garzik

Vývojář bitcoinových nástrojů a autor návrhů BIP

Jeff Garzik psal nástroje pro těžbu a bitcoinové aplikace a navrhoval změny komunikace i velikosti bloků. Na jeho práci je dobře vidět, jak se liší užitečný program, technický návrh a pravidlo, které přijmou účastníci sítě.

Jeff Garzik je vývojář známý pod účtem jgarzik. Věnoval se bitcoinovému softwaru a návrhům BIP, tedy dokumentům popisujícím konkrétní změny nebo postupy. Jeho příspěvky pomáhají pochopit, jak se Bitcoin vyvíjí: autor může napsat kód a navrhnout pravidlo, ale nemůže sám přikázat celé síti, aby ho přijala.

Na GitHubu vystupuje Jeff Garzik jako jgarzik. Jeho práci lze sledovat v jednotlivých repozitářích, tedy veřejných úložištích kódu a jeho historie. To je užitečnější než přisuzovat jednomu člověku obecnou roli „toho, kdo řídí Bitcoin“. U programu nás zajímá, co dělá a v jaké verzi; u návrhu zase to, co chtěl změnit. Samotný vývojářský profil neurčuje, které vydání softwaru si ostatní lidé spustí. [1]

Garzikův cpuminer je podle úvodního souboru README program pro těžbu Bitcoinu pomocí CPU, tedy procesoru počítače. Vícevláknový provoz znamená, že může rozdělit výpočetní práci mezi více současně běžících vláken. Z tohoto programu vychází pooler/cpuminer pro Litecoin a Bitcoin, který svůj původ výslovně uvádí. Takové převzetí a další rozvíjení kódu se nazývá fork projektu. Neznamená samo o sobě rozdělení bitcoinové sítě a funkce přidané v odvozené verzi nemusely existovat v Garzikově originálu. [2] [3]

Dalším příkladem je Picocoin. Obsahuje libccoin, knihovnu v jazyce C, jejíž funkce mohou programátoři využít při stavbě bitcoinových aplikací. README ale označuje přidruženou HD peněženku a uzel brd jako WIP, tedy rozpracované. HD peněženka odvozuje soustavu klíčů ze společného základu; uzel má komunikovat s bitcoinovou sítí. Repozitář byl 15. února 2024 archivován. Pro zájemce o historii je to cenný zdroj, samotná dostupnost kódu však nestačí k závěru, že jde o hotový, udržovaný a bezpečný produkt pro vlastní úspory. [4]

Představme si uzel, který chce zjistit, jaké nepotvrzené transakce zná jeho protějšek. K tomu slouží Garzikův BIP 35: zpráva mempool žádá seznam, odpověď inv obsahuje identifikátory transakcí, tedy jejich hashe, a pomocí getdata lze následně požádat o samotná data. Mempool je místní „čekárna“ transakcí před potvrzením. Není to společný seznam pro celý svět. I příkaz getrawmempool v dokumentaci Bitcoin Core vrací obsah konkrétního uzlu; nalezená transakce tím ještě nezískala potvrzení v bloku. [5] [8]

Otázka velikosti bloků se týká místa pro transakce i nároků na jejich přenos a ověřování. Garzik, Tom Harding a Dagur Valberg Johannsson v BIP 100 navrhli, aby se limit mohl měnit podle hlasů zapsaných těžaři do bloků. Přepočet měl probíhat po 2016 blocích, s požadavkem 75% podpory v blocích a s omezením velikosti jednotlivých změn. Nešlo tedy o hlasování podle počtu osob. Registr vede návrh jako Closed, tedy uzavřený; jeho popis nelze číst jako důkaz, že tento mechanismus přijala celá bitcoinová síť. [6]

Zkusme do návrhu dosadit obyčejný uzel, který stále kontroluje původní limit 1 MB. Když dostane větší blok, odmítne ho, i kdyby jej vytěžil těžař podporující vyšší limit. Přesně na toto rozdělení upozorňuje BIP 100. Hlas v bloku je údaj, který může nový software vyhodnotit; není to příkaz k přepsání starého programu. Změna umožňující bloky, které stará pravidla odmítají, je Hard Fork. Tento význam slova fork je jiný než pouhé založení odvozeného projektu na GitHubu. [6]

Garzikův BIP 102 nabízel jiný postup: jednorázově zvýšit limit na 2 MB. Aktivace měla vyžadovat současně stanovenou časovou podmínku a signalizaci podpory v 95% z posledních 1000 bloků. Ani splnění těchto podmínek by samo nezměnilo pravidla starších ověřovacích programů, které by větší blok odmítaly. Také tento návrh má stav Closed. Je to dokument o navrhované změně, nikoli návod, podle něhož lze určit dnešní pravidla velikosti bitcoinových bloků. [7]

U každého BIP je proto důležité číst obsah i stav. BIP 35 je veden jako Deployed, tedy nasazený, ve vrstvě Peer Services: řeší služby a komunikaci mezi uzly. BIP 100 a BIP 102 jsou Closed ve vrstvě Consensus (hard fork), protože se týkají toho, které bloky uzly považují za platné. Stejný autor může mít práci v obou oblastech a různý výsledek. Úspěšné zavedení síťové zprávy neznamená, že se současně zavedly všechny jeho návrhy na změnu pravidel. [5] [6] [7]

Pro nejúplnější obraz čtěte toto heslo společně s Cynthia Lummis, Mike Hearn, Válka o velikost bloků. Opačným směrem na něj odkazují také Mike Hearn.

DOC · 001Garzik — public developer profileDokumentace DOC · 002Garzik — reference cpuminer READMEDokumentace DOC · 003Pooler — cpuminer ancestryDokumentace DOC · 004Garzik — Picocoin archive and READMEDokumentace DOC · 005BIP 35 — mempool messageDokumentace DOC · 006BIP 100 — dynamic block-size proposalDokumentace DOC · 007BIP 102 — two-megabyte proposalDokumentace DOC · 008Bitcoin Core 29.0 — local mempool RPCDokumentace
Revidováno: Primární zdroje · Nejde o investiční doporučení