227 / 736BTPL

Block Template

Návrh bloku před začátkem těžby

Než začne těžební stroj hledat úspěšný výsledek, musí vědět, pro jaký blok vlastně počítá. Software nejprve připraví podklady: na který blok navázat, které transakce zahrnout a jakou odměnu lze připsat. Tomuto návrhu říkáme Block Template. Je to podobné jako připravený rukopis před vydáním: obsah už existuje, ale ještě neprošel krokem, který z něj udělá součást společné historie. Samotná šablona žádné transakce nepotvrzuje.

Block Template je sada údajů pro sestavení kandidáta na nový blok v síti Bitcoin. Teprve nad jeho hlavičkou, stručným souhrnem dat bloku, těžař hledá platný důkaz práce. Šablona propojuje vybrané transakce, odměnu a pravidla sestavení; její získání neznamená, že byl blok vytěžen nebo přijat sítí.

Každý nový blok navazuje na určitého předchůdce. V podkladech ho označuje previousblockhash, jeho jedinečný otisk, zatímco height udává výšku připravovaného bloku, tedy jeho pořadí v řetězci. Další položky zahrnují version, verzi hlavičky, bits, stručný zápis cíle pro těžební výsledek, a časové údaje. Je to podklad pro sestavení konkrétního bloku, ne nezávislý seznam plateb. Stejné transakce vložené nad jiného předchůdce už tvoří jiné zadání. [1]

Anna obdrží bitcoin a následně jím zaplatí. Pokud mají být oba převody ve stejném bloku, nejprve musí být transakce, která jí prostředky přidělila, a až pak ta, která je utrácí. BIP 22, technický dokument popisující formát šablony, pro takové vztahy zavádí pole depends: odkazuje na dřívější položky seznamu transactions, číslované od jedničky. Ten neobsahuje coinbase, zvláštní první transakci připisující odměnu těžaři. Chybějící depends znamená neznámé závislosti, nikoli potvrzení, že žádné nejsou. Software si je tedy nesmí domyslet jako prázdné. [1]

Odměna zahrnuje nově vydávané bitcoiny podle pravidel dané výšky a poplatky skutečně zařazených transakcí. Tak ji sestavuje i zde odkazovaný Bitcoin Core v29.0. Tento software ověřuje bloky a transakce a umí také připravovat šablony pro těžbu. V našem příkladu přinášejí transakce 10000 sats; odebráním nezávislé transakce s poplatkem 3000 sats zbude 7000 sats poplatků. Sats jsou drobné jednotky bitcoinu. Pole coinbasevalue uvádí, jakou nejvyšší odměnu si těžař smí připsat při původním výběru transakcí. Po změně výběru je třeba tuto částku přepočítat. Je nutné vycházet ze skutečných poplatků, nikoli z částky spočítané pro starý obsah. [4] [1]

Blok obsahuje i kryptografické otisky, podle nichž lze ověřit jeho data. BIP 141 popisuje witness commitment: závazný otisk dat witness, kam patří například podpisy prokazující oprávnění utratit prostředky. Vychází z identifikátorů wtxid zahrnujících tato data. Bitcoin Core 29 poskytuje default_witness_commitment pro nezměněnou šablonu. Po změně příslušných transakcí či jejich pořadí je třeba tento otisk ověřit či přepočítat. Z konečných identifikátorů transakcí TXID, včetně identifikátoru upravené coinbase, se zároveň musí vypočítat správný Merkle root, tedy souhrnný otisk transakcí v hlavičce. Stará pečeť nepatří na změněný obsah. [5] [3]

Místo v bloku je omezené a těžař si vybírá, co do něj zařadí. Bitcoin Core v29.0 posuzuje balíčky propojených transakcí, jejich váhu, tedy míru datové zátěže, a sigops, počet operací ověřování podpisů započítávaných do limitu bloku. Nastavení blockmaxweight a blockmintxfee ovlivňují velikost sestavovaného bloku a požadovanou sazbu poplatku. To je výběrová politika. Pokud kvůli ní nějaká platba chybí, ještě nemusí být neplatná podle pravidel sítě. Vlastní nastavení těžaře zároveň nezvyšuje síťové limity, které ostatní uzly kontrolují. [4] [3]

V BIP 23 uvádí položka mutable úpravy, které server dovoluje, například změny času nebo přidávání transakcí. Je to dohoda o práci s konkrétní šablonou. Povolení serveru neruší konsenzus, tedy pravidla platnosti, která samostatně ověřují ostatní účastníci sítě. Stále musí sedět předchůdce, čas, obtížnost i transakce. Také samotný přístup k šabloně neznamená, že každý připojený těžební přístroj může libovolně měnit její obsah; záleží na použitém uspořádání a předávané úloze. [2]

Během výpočtů může jiný těžař rozšířit řetězec. Pokud má další práce navázat na nejnovější přijatý blok, nestačí v původní šabloně pouze přepsat otisk předchůdce. Některé transakce už mohou být potvrzené a mění se výška i další podmínky. BIP 23 popisuje expires jako časové omezení práce a prevblock jako povolení použít ji s jiným předchůdcem. Ani toto povolení nenahrazuje kontrolu: je nutné znovu posoudit transakce, odměnu a celý nový kontext. [2]

Chybu ve vlastním návrhu je lepší zjistit před dlouhým hledáním. Režim proposal podle BIP 23 dovoluje předložit návrh k posouzení bez požadavku na platný Proof of Work, tedy již nalezený výsledek prokazující potřebnou výpočetní práci. Kladné posouzení neznamená nalezený blok, jeho rozeslání ani zaručené trvalé místo v řetězci. Říká, že návrh vyhověl příslušné předběžné kontrole. Dokončený blok pak musí při odevzdání projít odpovídajícím ověřením, včetně důkazu práce. [2]

Pro nejúplnější obraz čtěte toto heslo společně s Mining Pool, Block Header, Extranonce, Merkle Tree, Bitcoin, Bitcoin Core. Opačným směrem na něj odkazují také Coinbase transakce, ASIC Miner, Mining Pool, Nonce.

DOC · 001BIP 22 — Block template structureSpecifikace DOC · 002BIP 23 — Mutations and proposalsSpecifikace DOC · 003Bitcoin Core 29 — getblocktemplate RPCDokumentace DOC · 004Bitcoin Core v29.0 — Block assemblerPrimární zdroj DOC · 005BIP 141 — Witness commitmentSpecifikace
Revidováno: Primární zdroje · Nejde o investiční doporučení