228 / 691GBT

getblocktemplate

Інтерфейс вузла для отримання шаблону майнінгу

getblocktemplate розділяє отримання даних, попередню перевірку пропозиції та подання блоку. Клієнт має розуміти правила, ідентифікатори транзакцій і відповіді вузла; успішний RPC-виклик сам нічого не видобуває.

getblocktemplate — метод JSON-RPC для отримання даних складання кандидата на блок або оцінювання пропозиції. Опис ґрунтується на Bitcoin Core 29; особливості реалізації не поширюються автоматично на всі сервери цього протоколу.

Типовий mode — template. Відповідь надає дані майнінговому ПЗ, а не знайдений proof of work. Цей запит не приймає адресу виплати як параметр; складання coinbase й пошук розв’язку є подальшими кроками. [Bitcoin Core 29 — getblocktemplate RPC]

Bitcoin Core v29.0 вимагає segwit у rules запиту, а в мережі signet також signet. Запис рядка не замінює реалізацію відповідних правил. capabilities описує функції інтерфейсу й не замінює обов’язкові rules. [Bitcoin Core v29.0 — Mining RPC implementation]

BIP 145 розрізняє txid без witness і hash із witness. Основний Merkle root використовує txid, а не witness-хеш. Поле data містить серіалізовану транзакцію в шістнадцятковому записі; лише ідентифікатор не містить усіх її байтів. [BIP 145 — SegWit template fields]

Клієнт повертає отриманий longpollid у наступному запиті очікування. BIP 22 забороняє припускати його конкретний зміст, тож переносимий клієнт не має розбирати його як власний формат. Long polling потребує тривалого тайм-ауту й пауз після повторних помилок, а не безперервних негайних повторів. [BIP 22 — Long polling]

Bitcoin Core v29.0 кешує шаблон: змінює його при зміні попередника або зміні mempool більш ніж через п’ять секунд після створення. Час заголовка оновлюється окремо. Отже, не кожен виклик включає найновішу транзакцію чи створює незалежну майнінгову роботу. [Bitcoin Core v29.0 — Mining RPC implementation]

У режимі proposal поле data містить цілий кандидатний блок у шістнадцятковому записі. Core перевіряє Merkle root, але не вимагає чинного proof of work. inconclusive-not-best-prevblk означає іншого попередника, ніж поточна вершина; це не повна оцінка чинності пропозиції. [Bitcoin Core v29.0 — Mining RPC implementation]

submitblock отримує цілий блок як hexdata, а не лише хеш. Bitcoin Core 29 повертає null при прийнятті; інакше може повернути рядок результату. Необов’язковий dummy ігнорується. Прийняття вузлом не гарантує постійного підтвердження в активному ланцюзі. [Bitcoin Core 29 — submitblock RPC]

У mainnet Bitcoin Core v29.0 не надає шаблон без підключених пірів або під час initial block download. Це описує готовність вузла, а не недійсність конкретного блоку. Такі помилки слід відрізняти від відмов під час валідації та від звичайного очікування long polling. [Bitcoin Core v29.0 — Mining RPC implementation]

Для повної картини прочитайте також Block Template, Майнінг, Stratum V2, Extranonce. На цю статтю також посилаються ASIC Miner, Solo Mining, Job Negotiation.

DOC · 001Bitcoin Core 29 — getblocktemplate RPCДокументація ↗DOC · 002Bitcoin Core v29.0 — Mining RPC implementationПервинне джерело ↗DOC · 003BIP 145 — SegWit template fieldsСпецифікація ↗DOC · 004BIP 22 — Long pollingСпецифікація ↗DOC · 005Bitcoin Core 29 — submitblock RPCДокументація ↗
Спочатку джерела · Не інвестиційна порада