Утаивание блоков: атака, которую пул не видит в отдельной шаре
Майнер отправляет настоящие шары и скрывает ту, что стала бы блоком. Чего это стоит, кто платит и как это выявляют.
Что это за атака
Каждая шара, которую вы отправляете в пул, является настоящим решением, не дотянувшим до цели блока. Время от времени решение оказывается ниже и цели блока, и такая шара является целым блоком. Она выглядит так же, как любая другая шара, до самого момента, когда пул её проверит.
Атака с утаиванием блоков устроена так: майнер, который честно выполняет работу, отправляет каждую обычную шару и тихо выбрасывает ту единственную, которая стала бы блоком. Пул учитывает шары и платит за них. Блок, который пул должен был получить, так и не приходит.
Почему одна шара никогда его не выдаёт
Именно это делает атаку интересной, а не просто грубой. Ни в одной отдельной шаре атакующего нет ничего подозрительного. Оборудование настоящее, хешрейт настоящий, шары валидные и приходят с правильной частотой. Пул не может изучить одну шару и увидеть хоть что-нибудь.
Признак атаки это отсутствие чего-то, а отсутствие становится видно только со временем. Майнер с определённой долей хешрейта пула должен находить примерно такую же долю его блоков. За час это ничего не говорит, потому что поиск блоков случаен и затишья обычны. За достаточно длинное окно это говорит очень многое.
Чего это стоит и кто на самом деле платит
Пул теряет награду за блок, которую должен был получить. Но на самом деле потеря ложится не на пул, и эту часть стоит понимать, если вы майните в любом пуле.
При пропорциональной схеме раунд просто продолжается, пока кто-то другой не найдёт блок. Все участники раунда вложили работу в раунд, который длился дольше, чем должен был, поэтому каждый получает чуть меньше за единицу работы. Затраты распределяются между честными майнерами.
При схеме оплаты за каждую шару хуже приходится оператору, потому что пул уже оплатил каждую шару из своего кармана и рассчитывает на приход блоков. Продолжительная атака на пул с оплатой за шару прямо истощает оператора, и исторически именно этот случай вызывал больше всего опасений.
Зачем кому-то это делать
Атакующий тоже выбрасывает награду за блок, поэтому на первый взгляд это чистый вред самому себе. Смысл есть, только если атакующий выигрывает где-то там, где пул не видит.
Обычный мотив: конкуренция. Оператор собственного пула может арендовать или направить хешрейт на соперника, подавлять его результаты и выставить свой пул на этом фоне более удачливым. За саботаж атакующий платит из шар, которые всё равно получает.
Есть более тонкий вариант, когда атакующий не выбрасывает блок, а придерживает его, тайно продолжает майнить поверх него и отправляет позже, в удобный для себя момент. Это сложнее провернуть, и чтобы оно того стоило, нужна большая доля хешрейта.
Как её на самом деле обнаруживают
Обнаружение статистическое, и иначе быть не может, потому что других сигналов нет. Измерение сформулировать просто: сравнить блоки, которые нашёл данный участник, с блоками, которые он должен был найти судя по числу его шар, на окне, достаточно длинном, чтобы удача усреднилась.
Сложнее всего с окном. Сделайте его коротким, и обычное невезение будет выглядеть как атака, то есть честных майнеров будут обвинять постоянно. Сделайте длинным, и настоящий атакующий успеет поработать, прежде чем цифры заговорят. Хитрого способа обойти этот компромисс нет; это свойство случайности, а не программы.
Поэтому серьёзный детектор передаёт вопрос человеку, а не действует сам. Автоматический бан на основе статистики рано или поздно забанит того, кому просто не повезло, а отключение честного майнера хуже самой атаки.
Что это значит, если вы честный майнер
Почти ничего, и именно поэтому стоит сказать это прямо.
Ваши шары учитываются и оплачиваются одинаково в любом случае. Невезение не является нарушением и не может им быть, потому что на любом коротком окне большинству майнеров не везёт. Серия раундов, в которых вы вложили много, а пул ничего не нашёл, является обычной дисперсией, и показатель удачи в статистике пула существует именно для того, чтобы вы видели, насколько это обычно.
Единственное, что стоит знать: это одна из причин, по которым пулам важно, кто направляет на них хешрейт, и причина, по которой пулу, честно публикующему свои блоки и удачу, доверять проще, чем тому, кто этого не делает. Всё необходимое для проверки пула есть на странице «Блоки».