Block Withholding Attack — атака, при которой майнер передаёт пулу обычные доказательства работы, но намеренно не отправляет найденное решение действительного блока. Пул может учитывать его работу, не получая соответствующих возможностей заработать награды за блоки.
Mining Pool объединяет работу майнеров и распределяет награды по согласованным правилам. Он не может ждать, пока каждый небольшой участник найдёт целый блок. Как объясняет Bitcoin Developer Guide, для этого используются shares: результаты, удовлетворяющие более простому условию и регулярно подтверждающие выполненную работу. Редкий результат соответствует и более строгому условию сети Bitcoin. Атакующий отправляет обычные shares, но отбрасывает эту более ценную находку. Устройство действительно вычисляет и расходует электричество; это не бесплатная имитация майнинга. [3]
Это зависит от модели выплат. Meni Rosenfeld различает Pay Per Share (PPS), где оператор платит за принятые shares, и Pay Per Last N Shares (PPLNS), где фактические награды за блоки распределяются по недавно принятым shares в заданном диапазоне. При PPS недобор дохода из-за скрытых блоков несёт оператор, если выполняет обещанные платежи. При PPLNS для участников, включая атакующего, остаётся меньше денег. Одна и та же отброшенная находка может поэтому затронуть разных людей. Важны конкретные правила пула, а не одна лишь надпись «майнинг» на панели. [1]
Само отбрасывание находок может быть дорогим саботажем. Атакующий платит за оборудование и электричество и отказывается от дохода, который мог бы получить честно. Ittay Eyal рассматривает и более сложный случай: конкурирующий пул частью мощности майнит честно, а другую направляет против чужого пула. При определённых предположениях такое распределение может повысить его совокупный доход. Однако математическая модель не обещает прибыли после всех расходов. Сам убыток жертвы не показывает, заработал ли атакующий на операции в целом. [2]
В обоих случаях встречается неопубликованный блок, но его дальнейшая судьба различна. Eyal и Emin Gün Sirer описывают Selfish Mining как майнинг на частной ветви цепочки со стратегической публикацией её блоков. Атакующий хочет сделать свою ветвь основной и получить награды. Классический Block Withholding Attack внутри пула, напротив, отбрасывает найденные блоки; строить побеждающую частную ветвь ему не нужно. Есть и варианты, лишь задерживающие отправку. Поэтому при чтении анализа необходимо понять, какую именно стратегию он исследует. [4]
Представим период, за который честный майнер при заданных мощности и сложности находил бы в среднем 1 блок. Модель Poisson, которую также использует Rosenfeld, описывает независимые случайные находки с постоянной ожидаемой частотой. Она даёт около 37% вероятности не найти ни одного. При ожидаемых 3 блоках вероятность составляет примерно 5%. Это не вероятность вины: мы считаем шанс нулевого результата при честном майнинге, а не шанс обмана после наблюдения нуля. Пример предполагает подходящие стабильные условия и заранее заданный период. Среднее — не срок, к которому блок обязан появиться. [1]
Eyal подчёркивает, насколько трудно связать атаку с конкретным небольшим майнером. Одного аккаунта без найденных блоков недостаточно. Нужно сравнить принятые shares и блоки за одинаковый период, учитывая сложность shares, то есть объём представленной ими работы. Hashrate означает скорость вычислений; её оценка по таким доказательствам тоже колеблется. Следует проверить сбои, пропущенные записи и изменения условий. У пула могут быть основания исследовать проблему, но ещё не быть достаточных доказательств для обвинения конкретного человека. [2]
Eyal обсуждает бонус за найденный блок, накопление репутации и проверочные задания с известным решением. Но каждое предложение что-то меняет. Бонус передаёт больше награды нашедшему блок и может усилить колебания доходов небольших майнеров. Репутационные правила усложняют переход между пулами; проверочные задания требуют обслуживания и надёжной оценки. Это не универсальная защита, которую достаточно включить. Оператор должен оценить эффективность и побочные последствия и честно объяснить, что его меры способны обнаружить. [2]
Bitcoin Developer Guide разделяет нахождение блока и его проверку сетью. Сокрытие находки не меняет правил действительности транзакций и само по себе не позволяет тратить чужие монеты или переписывать подтверждённую историю. Оно вредит прежде всего экономике и доверию внутри совместного майнинга. Полезно держать в уме три вопроса: что скрыли, кто потерял деньги по согласованным правилам и какие доказательства имеются? Описание этого механизма не обвиняет ни один действующий пул. [3]
Для полной картины прочитайте эту статью вместе с Mining Pool, Pay Per Last N Shares, Hashrate, Selfish Mining.