227 / 691BTPL

Block Template

Данные для сборки кандидата на блок

Block Template описывает кандидата на следующий блок, его транзакции и условия изменений. При изменении содержимого недостаточно скопировать старую награду и хеши: все зависимые данные должны соответствовать итоговому блоку.

Block Template — набор данных для сборки блока, для заголовка которого ищут proof of work. Он связывает предыдущий блок, транзакции, coinbase и ограничения майнинга, но не доказывает нахождение или принятие блока.

Поля previousblockhash и height определяют положение кандидата в цепи. Также включены version, bits и временные данные. Шаблон служит основой для сборки блока, а не просто готовым заголовком для слепого повторения одного вычисления. [BIP 22 — Block template structure]

В BIP 22 depends ссылается индексами от единицы на предыдущие элементы transactions; coinbase в этот список не входит. Если дочерняя транзакция тратит выход родительской в том же блоке, родительская должна стоять раньше. Отсутствие depends означает неизвестные зависимости, а не их отсутствие. [BIP 22 — Block template structure]

Bitcoin Core v29.0 формирует coinbase из субсидии на данной высоте и фактических комиссий включённых транзакций. После их удаления нельзя автоматически оставлять прежнее coinbasevalue как допустимую награду. Изменение отбора требует пересчёта доступных комиссий. [Bitcoin Core v29.0 — Block assembler]

По BIP 141 witness commitment фиксирует witness-данные через wtxid. Bitcoin Core 29 предоставляет default_witness_commitment для неизменённого шаблона. После изменения соответствующих транзакций или их порядка нужно проверить либо пересчитать обязательство и учесть итоговые TXID в Merkle root заголовка. [BIP 141 — Witness commitment] [Bitcoin Core 29 — getblocktemplate RPC]

Bitcoin Core v29.0 выбирает пакеты с зависимостями и соблюдает ограничения веса и sigops. blockmaxweight и blockmintxfee влияют на сборку. Исключение транзакции этой политикой само по себе не доказывает нарушения консенсуса; настройки майнера не повышают сетевые лимиты. [Bitcoin Core v29.0 — Block assembler]

BIP 23 описывает через mutable допустимые изменения, например времени или транзакций. Разрешение сервера не отменяет консенсус: предшественник, время, сложность и транзакции должны оставаться корректными. Доступ к шаблону также не гарантирует конечному устройству неограниченного выбора содержимого. [BIP 23 — Mutations and proposals]

BIP 23 может ограничить работу через expires и задать право менять prevblock. При смене вершины цепи простая замена хеша предшественника не гарантирует действительность остальных данных. Высоту, транзакции, награду и другие контекстные условия следует оценить заново. [BIP 23 — Mutations and proposals]

Режим proposal в BIP 23 проверяет кандидата без требования действительного proof of work. Положительный результат не означает нахождения, публикации или постоянного места блока в цепи. Готовый блок должен пройти соответствующую проверку при отправке. [BIP 23 — Mutations and proposals]

Для полной картины прочитайте эту статью вместе с Mining Pool, Заголовок блока, Extranonce, Дерево Merkle. На эту статью также ссылаются Coinbase-транзакция, ASIC Miner, Mining Pool, Nonce.

DOC · 001BIP 22 — Block template structureСпецификация ↗DOC · 002BIP 23 — Mutations and proposalsСпецификация ↗DOC · 003Bitcoin Core 29 — getblocktemplate RPCДокументация ↗DOC · 004Bitcoin Core v29.0 — Block assemblerПервичный источник ↗DOC · 005BIP 141 — Witness commitmentСпецификация ↗
Сначала источники · Не является инвестиционной рекомендацией