Перейти к содержанию

Майнинг Bitcoin: шаблоны блоков, proof of work, пулы и экономика

Майнинг Bitcoin строит блоки-кандидаты и ищет среди заголовков SHA-256d доказательство работы ниже цели сети. Разделяйте идентичность шаблона, валидность транзакций и coinbase, поиск nonce и extranonce, проверку узлами, распространение, устаревшие блоки, шары пула, выплаты, сложность, энергию и экономику.

Обновлено

Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.

Краткий ответ

Майнинг Bitcoin строит валидные блоки-кандидаты и многократно хеширует их 80-байтовые заголовки SHA-256d, пока не найдёт числовой результат не выше цели консенсуса. Успешный майнер лишь предлагает блок. Он не может сделать недействительную транзакцию действительной, определить внешний факт или управлять чужими монетами: каждый полный узел отдельно проверяет работу, заголовок, транзакции, скрипты, потраченные выходы, лимиты и разрешённую сумму coinbase.

Майнинговый узел или пул получает кандидатов через интерфейсы вроде getblocktemplate. Важные поля: version, previousblockhash, transactions, coinbasevalue, target, bits, height, weightlimit и sigoplimit. Шаблон — выбранная политикой отправная точка, а не обещание включить все транзакции или принять изменённый блок. Валидность консенсуса, политика mempool, выбор комиссий и правила пула — разные уровни.

Оборудование перебирает варианты заголовка. Исчерпав 32-битный nonce, ПО меняет extranonce coinbase, перестраивает корень Меркла и может обновить разрешённые время или версию, создавая новое пространство. Каждый хеш — независимая попытка. Большая совместимая мощность повышает ожидаемую частоту успеха, но не планирует блок и не гарантирует срок.

Соло-майнинг получает весь разрешённый выход coinbase, но имеет высокую дисперсию. Пул объединяет работу и применяет более лёгкие цели шар; только шара, достигшая также сетевой цели, может стать блоком. Пул снижает дисперсию выплат, но не увеличивает ожидаемую эмиссию. Хранение, контроль шаблонов, проверка шар и обязательства PPS, PPLNS или другие создают риски контрагента и концентрации.

Как анализировать майнинг

  1. Зафиксируйте идентичность и полномочия. Запишите chain, network, client version, правила, bestblockhash, поставщика шаблона, endpoint пула, получателя и время. Разделите узел, сборщика, оператора, прошивку, площадку и владельца оборудования.
  2. Воспроизведите отбор. Снимите mempool и UTXO set; проверьте валидность, зависимости, комиссии, вес, операции подписи, locktime и witness-обязательства. Пересоберите кандидата и объясните политику; ставка комиссии не является консенсусом.
  3. Сверьте coinbase и заголовок. Проверьте субсидию по высоте, комиссии, выходы, обязательства, предыдущий хеш и дерево Меркла. Отслеживайте nonce, coinbase-extranonce, Merkle root, time и version bits; отклоняйте превышающие лимиты шаблоны.
  4. Проверьте поиск и отправку. Декодируйте компактную цель и проверьте block_hash <= target с порядком байтов и хешированием сети. Найдя решение, восстановите блок, отправьте через submitblock или рабочий протокол и сохраните ответ.
  5. Проследите независимую проверку и распространение. Сравните полные узлы по заголовку, транзакциям, скриптам, coinbase и chainwork. Измерьте распространение, конкурирующие вершины, stale или orphan результаты и реорганизации; найденная работа не гарантирует каноничность.
  6. Сверьте награду и учёт пула. Разделите coinbase, subsidy + transaction fees, комиссию и резервы, pool target, network target, принятую share, устаревшие шары, метод, зрелость, минимум, хранение и контрагента.
  7. Проведите стресс-тест экономики и безопасности. Укажите эффективную мощность, доступность, эффективность, электричество, охлаждение, персонал, хостинг, обслуживание, амортизацию, финансирование, налоги, ограничение, субсидию, комиссии, цену и сложность. Проверьте дисперсию, сбой, шоки, задержку, дефолт, цензуру, концентрацию и реорганизацию.

Результат — предложение блока и свидетельство вычислительного поиска. Узлы определяют валидность; fork choice выбирает активную валидную ветвь; сложность меняет цель только на своей границе; приложения задают подтверждения. Майнинг участвует, но не заменяет эти функции.

Примеры расчётов

1. Nonce — не всё пространство

В 80-байтовом заголовке 32-битный nonce с 2^32 = 4,294,967,296 значениями. При 200 TH/s их перебор занимает примерно:

4,294,967,296 / 200,000,000,000,000 = 0.0000214748 seconds

Работа продолжается: смена extranonce coinbase, новый корень Меркла и обновление разрешённых полей открывают другое пространство nonce. Считать nonce всей возможностью устройства — категориальная ошибка.

2. Соло-дисперсия и электричество

При сети 600 EH/s и эффективном майнере 200 TH/s упрощённая доля равна 200 TH/s / 600 EH/s = 0.0000333333%. Для 144 блоков в день ожидание lambda = 144 * 0.000000333333 = 0.000048 blocks/day, средний срок 1 / 0.000048 = 20,833.33 days. Пуассон даёт P(0) = exp(-0.000048) = 99.9952001152% вероятности нуля блоков за день.

Устройство 3,5 кВт при 0,06 USD/кВт·ч стоит 3.5 kW * 24 * USD 0.06/kWh = USD 5.04/day прямой электроэнергии. Не учтены охлаждение, хостинг, простой, ремонт, амортизация, финансирование и налоги. Ожидание — не срок оплаты, редкий успех — не дневная дебиторская задолженность.

3. Учёт coinbase и зрелость

Пусть субсидия 3.125 BTC, валидные комиссии 0.42 BTC. Максимум coinbase равен 3.125 + 0.42 = 3.545 BTC; больше делает блок невалидным, меньше отдаёт стоимость.

Выход coinbase требует зрелости 100 blocks до расходования. Блок может устареть или реорганизоваться. Баланс пула, незрелый coinbase и итоговая внешняя выплата — разные требования и риски.

4. Шары пула и допущения выплат

При одинаковой сложности принятых шар пул записал 2,000,000, майнер — 50,000: доля 50,000 / 2,000,000 = 2.5%. При блоке 3,545 BTC и комиссии 2% распределяется 3.545 * (1 - 0.02) = 3.4741 BTC, доля равна 3.4741 * 2.5% = 0.0868525 BTC.

Если цель пула в 1,000 раз легче, принятая шара имеет упрощённый шанс 1 / 1,000 достичь сетевой цели. Реальный учёт нормализует переменную сложность, отклоняет дубликаты и stale, применяет PPS, FPPS, PPLNS или договор и отделяет ожидаемую выплату пула от дохода при блоке.

Риски и ошибки проверки

Ошибки протокола и шаблона

  • Говорить, что майнеры валидируют транзакции, а не выбирают кандидатов для проверки узлами.
  • Смешивать цепочку, сеть, fork, вершину, клиент, поставщика или пул.
  • Считать mempool или шаблон консенсусом, полным набором или гарантированным блоком.
  • Выбирать по отдельной комиссии без предков, потомков, веса, подписей, блокировок и обязательств.
  • Ошибаться в высоте субсидии, комиссиях, выходах coinbase, witness или корне Меркла.
  • Искать на старом хеше, цели, времени или версии после новой вершины.
  • Сравнивать хеш и цель с неверными кодировкой, порядком байтов или алгоритмом.

Ошибки пула и эксплуатации

  • Приравнивать принятую шару к сетевому блоку или считать шары без нормализации сложности.
  • Превращать ожидаемую долю в гарантированные блоки, доход или даты, игнорируя дисперсию.
  • Считать долю пула постоянной собственностью на оборудование или упускать концентрацию.
  • Не учитывать stale и отклонённые шары, задержку, прошивку, температуру, доступность, ограничение и сбой.
  • Игнорировать метод, базу комиссии, резервы, минимум, зрелость, хранение, вывод и дефолт.
  • Считать найденный блок финальным до приёма, распространения, выбора и реорганизации.
  • Повторно применять учётные данные, адреса или удалённую прошивку без аутентификации, контроля и реагирования.

Ошибки экономики и безопасности

  • Называть ожидаемые валовые BTC фиатной прибылью без цены, сложности, комиссий, энергии, охлаждения, труда, амортизации, финансирования и налогов.
  • Выводить электричество или выбросы из мощности без эффективности, загрузки, охлаждения, места, времени и энергобаланса.
  • Предполагать мгновенную реакцию сложности или плановые десятиминутные блоки.
  • Заявлять, что халвинг гарантирует цену, капитуляцию или постоянные расходы безопасности.
  • Заявлять, что большинство хешей подделывает подписи, крадёт монеты или навязывает невалидную инфляцию.
  • Использовать высокую мощность как доказательство отсутствия концентрации пула, производителя, прошивки, географии, энергии, сети или ПО.

Распространённые заблуждения

  • Майнеры могут одобрить любую транзакцию. Они выбирают и упорядочивают; честные узлы отклоняют нарушения консенсуса.
  • Меняется только nonce. Extranonce меняет coinbase и корень Меркла; разрешённые время и версия тоже расширяют пространство.
  • Шара пула — часть блока. Она доказывает работу под более лёгкой целью; большинство не достигает сетевой цели.
  • Ожидаемый дневной доход гарантирован. Находка случайна, а выплата зависит от договора, зрелости и контрагента.
  • Больший хешрейт автоматически даёт больше прибыли. Доля, сложность, комиссии, цена, эффективность, энергия и затраты определяют итог.

Связанные темы

Источники

Навигация

Поиск по вики...