ASERT Объяснён

ASERT (Absolutely Scheduled Exponentially Rising Targets, реализованный как aserti3-2d) — это алгоритм корректировки сложности Bitcoin Cash, действующий с ноября 2020 года, который пересчитывает сложность майнинга для каждого отдельного блока вместо каждых 2 016 блоков, как Bitcoin.

ASERT (Absolutely Scheduled Exponentially Rising Targets, реализованный как aserti3-2d) — это алгоритм корректировки сложности Bitcoin Cash, действующий с ноября 2020 года, который пересчитывает сложность майнинга для каждого отдельного блока вместо каждых 2 016 блоков, как Bitcoin. Он измеряет, насколько реальная временна́я шкала цепочки отклонилась от идеального расписания 10 минут на блок с фиксированной точки привязки, и корректирует сложность экспоненциально с двухдневным периодом полураспада. Эффект, важный для соло-майнеров: непрерывная, без скачков корректировка, стирающая прибыльные окна, которыми оппортунистический хешрейт пользуется для набегов на цепочку, — защищая шансы всех, кто майнит стабильно.

Ключевые выводы

  • Поблочно, а не поэпочно. Bitcoin держит сложность фиксированной ~2 016 блоков и затем прыгает; ASERT подстраивает её каждый блок. Без плато — без окон: единственное наиважнейшее следствие для майнеров.
  • Формула — одна строка. next_target = anchor_target × 2^((actual_time − scheduled_time) / half_life). Сложность — это просто сложность якоря, масштабированная по тому, насколько цепочка отклонилась от расписания.
  • Двухдневный период полураспада — регулировочный рычаг. Два дня опережения расписания — сложность удваивается; два дня отставания — делится пополам. Достаточно быстро для отслеживания реального хешрейта, достаточно медленно для игнорирования шума случайных блоков.
  • Создан для вознаграждения стабильных майнеров. Явные цели дизайна ASERT включали минимизацию преимущества свитч-майнеров, прыгающих между цепочками, — именно та защита, которую хочет соло-майнер на цепочке меньшинства.
  • Тот же дизайн может поймать в ловушку слишком маленькую цепочку. Кратковременный наплыв хешрейта разгоняет сложность; когда он уходит, крошечная цепочка может восстанавливаться от пика 10× ~6,6 дней. Потому поведение ASERT на малых цепочках — одновременно фича и угроза.

Эта статья входит в наш кластер о науке сложности — вместе с профилем Bitcoin Cash, где ASERT — броня цепочки, и гайдом по окнам ретаргета BC2, исследующим противоположный мир — цепочку, где окна ещё существуют и могут быть разыграны. Понять ASERT — значит понять, почему у одних цепочек есть эти окна, а у других нет.

Проблема, для которой создан ASERT

Каждая цепочка с доказательством работы должна непрерывно отвечать на один вопрос: по мере прихода и ухода хешрейта, как удерживать блоки, приходящие примерно каждые десять минут? Оригинальный ответ Bitcoin — пересчитывать каждые 2 016 блоков по темпу предыдущей эпохи — прекрасно работает, когда хешрейт огромен и стабилен. На меньшей цепочке он ломается специфическим и эксплуатируемым способом.

Bitcoin Cash усвоил это на собственном горьком опыте. Его первый алгоритм сложности после форка 2017 года, а до него аварийная корректировка, порождал жестокие колебания: сложность падала, оппортунистические «свитч-майнеры» набегали чеканить лёгкие блоки, сложность резко возвращалась, они уходили, цепочка замирала до следующего падения — пилообразный паттерн, вредивший всем, кто майнил стабильно. Схема имела название и жертву: прибыльное окно и лояльный майнер, чья доля в нём разбавлялась. ASERT разрабатывался — после обширных симуляций против конкурирующих алгоритмов — специально для сглаживания этой пилы; заявленные цели включали удержание времени блоков близко к цели, удержание времени подтверждений близко к цели и снижение разрыва в прибыльности между стабильными майнерами и свитч-майнерами.

Как реально работает aserti3-2d

Весь алгоритм — одна изящная формула:

next_target = anchor_target × 2((time_delta − ideal_block_time × (height_delta + 1)) / half_life)

Читаем простым языком. Возьмём фиксированный блок-якорь из прошлого цепочки — для Bitcoin Cash это блок прямо перед активацией ASERT. Его сложность — постоянная базовая линия. Для любого нового блока вычислим две вещи: time_delta — сколько реального времени прошло с якоря — и запланированное время, которое есть просто ideal_block_time (600 секунд) умножить на число блоков с якоря. Разница между ними — цепочка впереди или позади своего идеального расписания? — идёт в показатель степени, делённый на период полураспада. Если цепочка точно по расписанию, показатель равен нулю, 20 = 1, и сложность равна сложности якоря. Опережение делает показатель положительным, удваивая сложность за каждый период полураспада опережения. Отставание делает его отрицательным, деля сложность пополам за каждый период полураспада отставания.

Два решения делают его надёжным. Поскольку якорь абсолютный (фиксированная точка, никогда не скользящее окно), погрешность округления не может накапливаться месяцами — каждый блок считается заново от того же начала. И поскольку арифметика с плавающей точкой даёт разные результаты на разных процессорах — консенсусная катастрофа в ожидании — ASERT аппроксимирует экспоненту целочисленной арифметикой фиксированной точки и кубическим полиномом, так что каждый узел на каждой машине вычисляет байтоидентичную сложность. Это контур обратной связи системы управления, замаскированный под три строки целочисленного кода.

Двухдневный период полураспада: число, которое имеет значение

Период полураспада — это характер ASERT. Bitcoin Cash выбрал два дня (технически идеальное время 288 блоков), и версия для понимания человеком столь же чёткая: за каждые два дня опережения расписания сложность удваивается; за каждые два дня отставания сложность делится пополам.

Почему именно два дня? Это точка равновесия, найденная в симуляции. Слишком короткий период полураспада — и сложность дёргается при каждой удачной серии быстрых блоков, реагируя на статистический шум: цепочка никогда не стабилизируется. Слишком длинный — и она реагирует вяло на реальные изменения хешрейта, уходя от цели на дни и вновь открывая те самые окна, которые должна была закрыть. Два дня — оптимальная точка: отзывчивая примерно в течение дня на реальные сдвиги, глухая к случайному джиттеру отдельных блоков. Практическая арифметика: восстановление от пика сложности 2× занимает 2 дня, от пика 4× — 4 дня, а от пика 10× — около 6,6 дня; эти числа становятся очень важными, когда цепочка мала.

Что ASERT значит для соло-майнера

Три следствия, в порядке важности.

Ваши стабильные шансы защищены. Это главное. На цепочке с поэпочным ретаргетом майнер-налётчик может дождаться падения сложности, ворваться в лёгком окне и уйти до коррекции — каждый лёгкий блок, который он чеканит, это блок, который не начеканил ты, разбавляя твою долю манипулированного интервала. ASERT стирает это окно: сложность растёт в момент их прихода и падает в момент ухода, блок за блоком, так что нечего фармить. Ожидаемая доля лояльного майнера остаётся чистой.

Сложность, которую вы видите, честная. На Bitcoin сегодняшняя сложность отражает сеть до двух недель назад; на ASERT-цепочке — сеть последних нескольких блоков. Когда считаешь свои шансы — в калькуляторе или вручную — число ASERT-цепочки это живая цена, не запаздывающая средняя, и оценка вероятности столь же актуальна, как сама цепочка.

Нельзя угадать момент — и никто другой тоже. Обратная сторона защиты: ASERT не предлагает умной точки входа. Нет падения сложности, на которое можно набежать, потому что любое падение уже учтено для всей сети одновременно. Это полная противоположность играбельной динамики на цепочках с окнами ретаргета, и это честный обмен: ты отказываешься от шанса играть по расписанию в обмен на гарантию, что никто не играет по расписанию против тебя.

Парадокс малых цепочек: острейший край ASERT

Здесь изящество становится обоюдоострым. Отзывчивость ASERT предполагает, что у цепочки достаточно стабильного хешрейта для отслеживания реального устойчивого сигнала. Дай ему цепочку с очень малым хешрейтом — и один крупный майнер становится оружием: не всегда злонамеренно, иногда просто появившись.

Сценарий отказа: крупный майнер несколько часов направляет серьёзный хешрейт на крохотную цепочку. Блоки летят, цепочка далеко уходит вперёд по расписанию, и ASERT добросовестно разгоняет сложность — скажем, в 10×. Затем крупный майнер уходит. Теперь обычный, скромный хешрейт цепочки встречает сложность, рассчитанную на десятикратный размер, и блоки замедляются до черепашьего шага. При стандартном периоде полураспада в два дня восстановление от пика 10× займёт около 6,6 дней — почти неделя, в течение которой цепочка фактически заморожена, подтверждения стоят, а лояльные майнеры, которых алгоритм должен был защищать, оказываются теми, кто вынужден молоть. Это версия стрессовой травмы в алгоритмах сложности: мышца, делающая здоровую цепочку сильной, может разорвать слабую.

Именно поэтому более новые и меньшие SHA-256-цепочки, принимающие ASERT, нередко запускаются с укороченным периодом полураспада — восстанавливаясь от пиков за часы, а не дни, — принимая чуть больше чувствительности к шуму в обмен на выживаемость. Это также немалая часть причины, по которой очень малые цепочки рискованнее майнить, чем их привлекательные шансы подсказывают, — компромисс, который стоит полностью понять, прежде чем направлять хешрейт к нижним ступеням лестницы.

Заключение

ASERT — один из тихих шедевров доказательства работы: однострочная формула, целочисленное приближение экспоненты и двухдневный период полураспада, вместе превращающие жестокую пилу сложности в плавную, без скачков кривую. Для соло-майнера на Bitcoin Cash он работает невидимо и в твою пользу — защищая твою долю от свитч-майнеров, удерживая твои шансы честными поминутно и требуя лишь отказа от игровой возможности, которую ты всё равно никогда не выиграл бы.

А в своём острейшем краю — ловушке пиков на малых цепочках — он преподаёт самый глубокий урок кластера о науке сложности: один и тот же механизм может быть бронёй или угрозой — целиком в зависимости от того, сколько хешрейта за ним стоит. Знай, на какой цепочке ты майнишь, — и будешь знать, какой ASERT у тебя.


Майни цепочку, защищающую стабильных майнеров

SoloFury управляет Bitcoin Cash на собственных нодах — под защитой ASERT, сложность поблочная, без окон для налётчиков, разбавляющих твою долю. Некастодиальные выплаты coinbase, комиссия 1%, TLS-эндпоинты в каждом регионе, живая сложность в калькуляторе. Стабильный хешрейт — именно то, для чего создан этот алгоритм.

Майнить BCH соло →Посмотреть живую сложность и шансы →

Читайте далее

Часто задаваемые вопросы

Что такое ASERT и чем он отличается от корректировки сложности Bitcoin?

ASERT (aserti3-2d) пересчитывает сложность для каждого блока, измеряя, насколько цепочка отклонилась от идеального расписания 10 минут на блок с фиксированной точки привязки. Bitcoin пересчитывает каждые 2 016 блоков. Результат: у ASERT нет плато и окон — лёгких возможностей майнинга, которые эксплуатируют свитч-майнеры, — а у Bitcoin есть эксплуатируемые окна в конце каждой эпохи.

Что такое двухдневный период полураспада в ASERT?

Период полураспада определяет скорость реагирования ASERT. При двух днях: если цепочка опережает расписание на два дня, сложность удваивается; если отстаёт на два дня — делится пополам. Достаточно быстро для отслеживания реальных изменений хешрейта, достаточно медленно для игнорирования статистического шума случайных блоков.

Как ASERT защищает соло-майнеров?

Свитч-майнеры ждут падения сложности, заходят во время лёгкого окна и уходят до коррекции — каждый лёгкий блок, который они чеканят, это блок, который не начеканил ты, разбавляя твою долю манипулированного интервала. ASERT стирает это окно: сложность растёт в момент их появления и падает в момент ухода, блок за блоком.

В чём парадокс малых цепочек с ASERT?

Отзывчивость ASERT предполагает достаточный стабильный хешрейт. Крупный майнер, направивший серьёзный хешрейт на малую цепочку на несколько часов, может поднять сложность в 10× и уйти. При стандартном периоде полураспада в два дня восстановление от пика 10× занимает около 6,6 дней — неделя, в течение которой цепочка фактически заморожена.