При Solo Mining майнер получает награду за блоки, найденные его собственными вычислительными мощностями и принятые в цепочку. Блок — группа транзакций, добавленная в блокчейн, публичную историю Bitcoin. «Найти блок» означает получить результат вычисления, позволяющий предложить эту группу остальной сети. Другие участники всё равно проверяют соблюдение всех правил. Находки других не приносят ему регулярного дохода. Можно использовать свою инфраструктуру или внешний соло-сервер с платой за услуги. «Соло» прежде всего описывает распределение наград.
Ян покупает ASIC — устройство для специализированных вычислений при майнинге. Панель показывает работу, но в кошелёк ничего не поступает. При Solo Mining это само по себе не признак поломки. Мощность даёт шанс найти блок, а не почасовую оплату. Обычный Mining Pool делит награды по своим правилам; в соло-режиме Ян ждёт собственной находки. Подключение к серверу через Stratum, протокол связи для майнеров, тоже не означает автоматического участия в общих выплатах. [1] [6]
Для простоты представим постоянную долю в 1% мощности сети. Это большая доля для наглядного примера, не предположение о домашнем устройстве. Среди следующих 100 блоков сети ожидаемое число собственных находок равно одному. Но вероятность найти хотя бы один составляет лишь 1 − 0,99^100, примерно 63,4%. Формула сначала вычисляет вероятность того, что все эти блоки найдут другие майнеры, а затем вычитает её из полной вероятности. Остаётся шанс, что хотя бы один найдёт Ян. Находок может быть несколько или ни одной. Долгое ожидание не улучшает следующую попытку: майнинг не помнит прошлых неудач. Изменения сложности, относительной мощности и перерывы в работе также меняют условия модели. [1]
Ян платит за электричество независимо от результата, а также за оборудование, охлаждение и обслуживание. Средний ожидаемый доход — не сумма, доступная каждый месяц для оплаты счетов. Раздел доходов в пуле уменьшает колебания, но не добавляет той же машине Hashrate, то есть вычислений в секунду. Комиссии и правила выплат тоже различаются. Для домашнего эксперимента Ян может заранее определить расходы, которые выдержит даже без единой находки. История чужого успеха не прогнозирует его заработок. [1]
Solo CKPool — пример сервиса, предоставляющего задания, связь с сетью и статистику. Награда за блок Яна не делится между другими участниками, как в обычном пуле, хотя сервис может удержать свою плату. Нужно знать адрес выплаты, условия и порядок действий при сбое. С другой стороны, Full Node, узел проверки правил Bitcoin, сам не заменяет мощность ASIC. Инфраструктура и распределение наград — разные решения. Список найденных блоков показывает победителей, а не шансы каждой подключённой машины. [6]
Устройство многократно вычисляет хеш — числовой отпечаток заголовка предлагаемого блока. Заголовок — краткий набор данных о блоке, связывающий предложенный блок с предыдущим и с включёнными транзакциями. Bitcoin Core проверяет, меньше ли он сетевой цели target или равен ей; цель закодирована в поле nBits. Сервер может принимать результаты, соответствующие более лёгкой цели: shares. В соло-сервисе share помогает следить за работой машины, но сам не является найденным блоком или правом на небольшую выплату. Снижение сложности shares даёт больше сообщений, а не больший шанс каждого вычисления достичь сетевой цели. Даже лучший share не доказывает наличие действительного блока. [2] [6]
Перед поиском программа готовит проект блока — шаблон. BIP 22 описывает интерфейс getblocktemplate: он предоставляет, среди прочего, previousblockhash, ссылку на предыдущий блок, транзакции и coinbasevalue, максимальную сумму для награды. Программа собирает coinbase, особую первую транзакцию выплаты награды, и заголовок; ASIC пробует варианты вычислений. Когда сеть продвигается дальше, ему нужна актуальная работа. Быстрая машина с неверным получателем награды или устаревшим шаблоном не является правильно настроенной системой. [3]
Одного хеша, удовлетворяющего сетевой цели, ещё недостаточно. Другие узлы проверяют транзакции, coinbase и связь блока с цепочкой. Два майнера могут найти конкурирующие блоки, а сеть продолжить другую ветку. Блок вне активной цепочки называют stale; его награду в этой цепочке потратить нельзя. Поэтому быстрая передача и актуальная работа действительно важны. Ян проверяет принятие целого блока и последующие подтверждения, а не только зелёное сообщение о принятом share. [3] [4]
Награда может включать вновь созданный bitcoin, субсидию блока, и комиссии включённых транзакций. Высота блока обозначает его место в последовательности блоков. В основной сети от высоты 840000 до блока перед 1050000 субсидия равна 3,125 BTC. Комиссии меняются, а сервис может вычесть свою долю. Coinbase не должна выплачивать больше суммы субсидии и этих комиссий. Также действует COINBASE_MATURITY: награду можно потратить лишь в блоке, высота которого как минимум на 100 больше высоты блока, создавшего её. Речь о блоках, а не о 100 минутах. Находка, подтверждённая награда и сразу доступные деньги — разные вещи. [4] [5] [7]
Для полной картины прочитайте эту статью вместе с Майнинг, Mining Pool, getblocktemplate, Hashrate, Pay Per Share, Pay Per Last N Shares. На эту статью также ссылаются Mining Pool, Pay Per Share.