Майнинг соединяет выбор транзакций с поиском заголовка, удовлетворяющего Proof of Work. Майнеры предлагают блоки; другие узлы независимо проверяют действительность и принадлежность ветви с наибольшей накопленной работой.
Единой центральной очереди нет. Узел майнера имеет свой mempool; getblocktemplate даёт транзакции, зависимости и параметры. Потомку, тратящему неподтверждённый выход, нужен предок раньше в том же блоке. Выбор ограничивают вес блока и стоимость проверок подписей. [Bitcoin Core v29.0: block assembler]
Первая транзакция распределяет не более разрешённой субсидии плюс включённые комиссии. Комиссия — разность входов и выходов, не новые биткоины. Завышенная награда делает блок недействительным несмотря на Proof of Work. Выход coinbase можно потратить не ранее чем через 100 высот. [Bitcoin Core v29.0: block validation]
Оборудование вычисляет двойной SHA-256 вариантов 80-байтового заголовка. Исчерпав четырёхбайтовый nonce, изменение extra nonce coinbase меняет Merkle Root и открывает новый поиск. Неудачи не приближают следующую попытку к гарантии; десять минут — средняя цель сети, не срок для машины. [Bitcoin Developer Guide: Mining]
Пул выдаёт работу и может оценивать вклад более лёгкой целью share. Только часть shares достигает сетевой цели. Выплата определяется моделью и комиссиями пула, не напрямую консенсусом. Доля найденных блоков не доказывает владение подключёнными машинами. [Bitcoin Developer Guide: Mining]
Узлы получают и проверяют распространённый блок. Одновременный действительный конкурент может вызвать развилку; оставленная ветвь не добавляет награду в активную историю. Скорость распространения и обновления работы при новой вершине влияет на результат наряду с найденным хешем. [Bitcoin whitepaper]
Доля hashrate и темп сети дают только ожидаемую частоту успехов. Прибыль зависит также от электричества, эффективности, охлаждения, простоев, покупки и условий пула. TH/s не являются ваттами, единичный успех не доказывает устойчивую рентабельность. [Bitcoin Developer Guide: Mining]
Сравните getblocktemplate с заголовком, coinbase и транзакциями найденного блока. submitblock передаёт блок узлу на проверку; местное принятие не гарантирует постоянного включения сетью. Различайте поданные shares, принятые блоки и фактически выплаченную сумму. [BIP 22: getblocktemplate]
Для полной картины прочитайте эту статью вместе с Proof of Work, Корректировка сложности, Эмиссионная награда за блок, Комиссии за транзакции, Mempool. На эту статью также ссылаются Proof of Work, Корректировка сложности, Эмиссионная награда за блок, Halving.
01Что на самом деле вычисляют майнеры Bitcoin?+
Они многократно вычисляют двойной SHA-256 хеш 80-байтового заголовка блока-кандидата. Меняют nonce и другие данные, влияющие на заголовок, и ищут хеш, числовое значение которого меньше или равно допустимому сетевому target.
02Проверяют ли майнеры правила Bitcoin вместо пользователей?+
При подготовке блока транзакции проверяются, но эта работа не заменяет собственную проверку пользователя. Каждый Full Node самостоятельно проверяет полученный блок и отвергает его при нарушении правил консенсуса, независимо от его Proof of Work.