Extranonce

ExtraNonce — произвольные байты в coinbase-транзакции блока (и/или её witness-поле в SegWit), которые майнер/пул меняет для расширения пространства поиска хеша при PoW. Изменение ExtraNonce меняет txid coinbase → Merkle root → заголовок блока, позволяя продолжать перебор после исчерпания стандартного поля nonce в заголовке.

Базовые моменты

  • Где находится. До SegWit — обычно в scriptSig coinbase-транзакции; после SegWit дополнительно используется «witness reserved value» coinbase как ещё одно место для вариации.
  • Зачем нужен. Поле nonce в заголовке ограничено (32 бита). ExtraNonce даёт дополнительную энтропию: меняя coinbase, мы получаем новый Merkle root и совершенно иное пространство хешей.
  • Связь с заголовком. Любая правка в coinbase → иной txid → иной Merkle root → иной заголовок блока → новый поиск PoW.
  • Идентификаторы пулов. Пулы часто включают в coinbase метку/ID и счётчики выплат; часть этих байтов может являться/содержать ExtraNonce.
  • Не про «биржу Coinbase». Термин относится к протоколу формирования блока и не связан с одноимённой площадкой.

Как это работает / по шагам

1. Узел формирует список транзакций и coinbase-транзакцию (см. coinbase-транзакция).

2. Строится Merkle-дерево и вычисляется Merkle root (см. Merkle tree).

3. Майнер перебирает 32-битный nonce в заголовке.

4. Когда пространство nonce исчерпано (или раньше), ПО увеличивает ExtraNonce внутри coinbase (и/или меняет witness-резерв), тем самым меняя Merkle root.

5. Цикл повторяется: новый заголовок → новый диапазон хешей. Дополнительно майнер может сдвигать nTime в допустимых пределах.

Итог: ExtraNonce — «внешняя ручка» для генерации новых уникальных заголовков без пересборки всего блока с нуля.

Структура и ограничения

Сценарии размещения

  • scriptSig coinbase: произвольные байты (с учётом лимита длины).
  • SegWit: 32-байтовое witness reserved value в coinbase-tx может использоваться как расширенный счётчик.
  • BIP34. Высота блока обязательна к включению в coinbase, поэтому ExtraNonce размещают вдобавок к ней (не вместо).
  • Лимиты. Слишком «тяжёлая» coinbase нарушит правила размера/весa; также сумма выходов coinbase не может превышать subsidy+fees.

Плюсы и ограничения

Аспект Плюсы Минусы/ограничения
Пространство поиска Драматически расширяет число уникальных заголовков без смены набора транзакций. Увеличение coinbase влияет на размер/вес блока, требует аккуратной реализации.
Инструмент пулов Удобно шифровать метки выплат/ID сменщиков, диагностические данные. Метаданные могут облегчать атрибуцию пулов и поведенческий анализ.
Производительность Позволяет эффективные внутренние циклы майнинга (nonce → ExtraNonce → время). Ошибки в реализации могут привести к «повтору» пространства и потере эффективности.

Практика / чек-лист (для майнеров/пулов)

1. Корректно инкрементируйте ExtraNonce. Держите счётчики достаточной длины; избегайте «переполнений» и повторов при многопоточности.

2. Следите за форматом coinbase. Соблюдайте BIP34 (высота блока), ограничения длины scriptSig, корректность witness-коммитмента (BIP141).

3. Проверяйте сумму вознаграждения. Выходы coinbase ≤ subsidy + fees; изменение ExtraNonce не должно ломать расчёт.

4. Диагностика и приватность. Учтите, что ваши метки в coinbase видны всем: публикуйте только необходимое.

5. Совместимость. Тестируйте с разными версиями узлов и софта; любые изменения coinbase меняют Merkle root — убедитесь, что это ожидаемо для всех компонентов.

Аналитика и история

  • Patoshi pattern. Последовательный рост ExtraNonce в ранних блоках Bitcoin (2009–2010) использовался как один из признаков для выделения «кластеров» добычи единым субъектом (см. Patoshi pattern).
  • Атрибуция пулов. По шаблонам coinbase/ExtraNonce исследователи и обозреватели атрибутируют найденные блоки конкретным пулам. Это полезно для статистики, но влияет на приватность операторов.

Частые вопросы (FAQ)

Чем ExtraNonce отличается от поля nonce в заголовке? nonce — фиксированное 32-битное поле заголовка. ExtraNonce живёт в coinbase-транзакции, меняет Merkle root и тем самым опосредованно влияет на заголовок.

Где именно хранится ExtraNonce? Чаще — в scriptSig coinbase; в эпоху SegWit дополнительно используют 32-байтовое witness-резервное поле coinbase. Точное размещение — реализация пула.

Можно ли писать «сообщения» в ExtraNonce? Да, в разумных пределах. Но помните об атрибуции и лимитах размера/веса транзакции.

Повлияет ли ExtraNonce на комиссии/награду? Нет напрямую: он лишь меняет txid coinbase. Главное — чтобы сумма выходов не превышала subsidy+fees и транзакция оставалась валидной.

Есть ли ExtraNonce в Ethereum? Нет аналога coinbase-транзакции; «coinbase» там — адрес получателя наград в заголовке. В Ethereum «nonce» обычно означает счётчик транзакций аккаунта (см. Nonce).

См. также

Coinbase-транзакция

Nonce

Merkle tree

Proof-of-Work

Difficulty adjustment

UTXO

Bitcoin (BTC)

Двойная трата

Комиссии

Task Runner