Selfish Mining — стратегия удержания допустимых блоков и выбора момента их публикации. Цель — получить долю принятых блоков выше своей доли вычислительной мощности. Это не позволяет создавать биткоины вопреки правилам и не гарантирует прибыль: важны также связи, поведение остальных и затраты.
Пётр управляет Mining Pool — группой майнеров, объединяющих мощность и делящих награды. Блок объединяет транзакции в пакет, добавляемый в общую историю. Группа находит допустимый блок. Обычно она сообщила бы о нём, чтобы другие могли продолжить цепь. На этот раз блок скрывают и ищут его продолжение. Анна и остальные всё ещё работают над старым общим блоком. Они не знают, что Пётр уже нашёл другой путь развития истории. Так начинается частная ветвь, а не новая валюта. [1] [2]
Следующий блок может найти Пётр, но Анна тоже может успеть раньше. Майнинговые устройства повторяют вычисления с изменёнными данными блока, пока не найдут числовой результат, удовлетворяющий заданному порогу. Майнинг — не равномерная гонка, где быстрая машина всегда побеждает: каждая находка случайна. Стратегия реагирует на обе ветви: продолжает тайную работу, публикует блоки либо отказывается от своей ветви. Hashrate обозначает скорость вычислительных попыток. Большая доля повышает шанс найти блок, но не гарантирует следующую находку. [1] [4]
Предположим, Пётр скрыл один блок, а Анна опубликовала собственный с тем же предшественником. Пётр показывает свой, и возникает ничья. Разные майнеры могут первыми узнать о разных блоках и начать продолжать разные ветви. Последующие находки и распространение сообщений влияют на исход. Решает накопленная работа допустимой ветви, а не число сторонников; при одинаковой сложности больше блоков означает больше работы. Сложность показывает, насколько трудно в среднем найти такой результат. При более высокой сложности в среднем требуется больше попыток, но время нахождения каждого блока не задано заранее. [1] [3] [4]
Если победит ветвь Петра, конкурирующий блок Анны может остаться вне принятой истории как Stale Block. Он был допустимым, но его награду нельзя потратить в принятой цепи. Пётр стремится сделать так, чтобы пропала большая доля чужой работы, чем его собственной. Транзакции покинутого блока не обязательно исчезают навсегда: если они по-прежнему допустимы и совместимы с принятой историей, их можно включить позже. [1] [4]
Ittay Eyal и Emin Gün Sirer описали известную стратегию в работе 2013 года. Они сравнивали долю принятых блоков майнера с его долей мощности. Это не то же самое, что почасовой доход после оплаты электричества. Удержание блоков может замедлить публичную цепь, а последующий пересчёт сложности меняет экономику стратегии. Cyril Grunspan и Ricardo Pérez-Marco позже подчеркнули значение времени и этого пересчёта. Большая относительная доля наград поэтому не обещает немедленной чистой прибыли. [1] [7]
В исходной модели α — доля мощности атакующего. γ — доля мощности остальных майнеров, переходящая при ничьей на его ветвь. При γ = 0 порог относительного преимущества равен 1/3, при γ = 1/2 — 1/4. В модели преимущество появляется выше соответствующего порога. Это не универсальные границы безопасности реальной сети. Другие стратегии, задержки и предположения меняют результат. Важно и количество мощности, и то, какую ветвь продолжают остальные. [1] [6]
Быстро доставленный блок с большей вероятностью привлечёт майнеров при ничьей. Сетевое преимущество может дополнять вычислительную мощность. Группа с устойчиво лучшей доходностью могла бы привлекать новых участников и усиливать концентрацию. Это описание стимула, а не доказательство атаки каждого крупного пула или неизбежного присоединения остальных. Параметр модели также нельзя приписывать конкретному оператору, не проверив его на реальных данных. [1] [6] [8]
Анна может вырваться вперёд раньше, чем план Петра сработает. Тогда Пётр не получит награду, хотя потратил энергию и использовал оборудование. Порог для долгосрочного среднего не обещает победу в каждом раунде. Несколько удачных раундов тоже не доказывают прибыльность с учётом затрат и меняющихся условий. Удерживаемый блок — рискованная возможность, а не награда, надёжно спрятанная в ящике. [1] [7]
Full Node — программа, самостоятельно проверяющая правила Bitcoin. Она по-прежнему отклоняет недопустимые транзакции и запрещённое создание монет. Пётр обязан предоставить настоящий Proof of Work, подтвердить требуемую вычислительную работу и выполнить те же правила, что и Анна. Стратегия направлена на то, чтобы именно его допустимая история возобладала. Она не даёт чужих закрытых ключей — секретных числовых значений для подписи транзакций — или права тратить чужие монеты. Преимущество в майнинге следует отличать от взлома правил владения. [2] [5]
Быстрая передача блоков сокращает задержки и некоторые сетевые неравенства. Например, Compact Blocks использует уже известные транзакции, чтобы передать блок с меньшим объёмом данных. Это не устраняет Selfish Mining полностью. Исследуются также ничьи и экономические стимулы. Покинутый блок сам по себе не доказывает атаку: две честные группы могут найти блоки почти одновременно. Подозрения требуют более широкого контекста. Главный вопрос — поощряют ли правила быстрый обмен в этих условиях или выгоднее что-то скрыть? [6] [8] [9]
Для полной картины прочитайте эту статью вместе с Block Propagation, Compact Blocks, Nakamoto Consensus, Sybil Attack, Bitcoin, Майнинг. На эту статью также ссылаются Byzantine Generals Problem, Sybil Attack, Block Propagation, Block Withholding Attack.