Лучший соло-шар без блока: eCash RTT
Ваш соло-шар на eCash побил сетевую сложность и ничего не выиграл. Причина — Real-Time Targeting: официальная формула, проверенная на реальных логах ноды.
Real-Time Targeting в eCash, известный как Heartbeat, — правило консенсуса, которое поднимает требуемый майнинговый таргет примерно на две минуты после каждого блока, а затем даёт ему затухнуть до опубликованной сложности. Шар, побивший сложность из обозревателя, является валидным блоком только если приходит после этого затухания. Это, безусловно, самая частая причина, по которой соло-майнер на XEC видит рекордный шар и ничего не выигрывает.
Ключевые выводы
- eCash требует сложность выше опубликованной примерно 115 секунд после каждого блока при стабильном ритме.
- Требование стартует астрономически высоко и падает как пятая степень прошедшего времени. Оно никогда не может быть легче стандартной сложности.
- Обозреватели показывают сложность каждого блока в том виде, в каком он намайнен — нижнюю границу. Публичного потока текущего требования не существует.
- Мы воспроизвели официальную формулу по логам продакшен-ноды на 15 измерениях: максимальное отклонение 0,002%.
- Крутая ранняя рампа, на которую соло-майнеры натыкаются сегодня, существует исключительно из-за обновления 15 ноября 2025 года, добавившего однопблоковое окно фильтра.
Почему мой шар побил сетевую сложность и не нашёл блок?
Майнер написал нам с точной и совершенно обоснованной претензией. Он решил блок eCash шаром сложностью около 8,0 миллиарда против опубликованной сетевой сложности примерно 7,36 миллиарда. Спустя часы его майнер зафиксировал гораздо лучший шар — около 11,87 миллиарда — и ничего не произошло. Он проверил каждый блок цепочки с того момента. Опубликованная сложность всю ночь держалась между 7,1 и 7,4 миллиарда. По правилам Bitcoin тот шар был блоком.
Он был прав насчёт чисел и неправ насчёт правила. В eCash сложность, которую публикует обозреватель, — не та сложность, которую нужно побить в момент отправки. Это пол.
Его шар на 11,87 миллиарда пришёл примерно через 100 секунд после предыдущего блока — всё ещё внутри рампы. В тот момент сеть требовала 14,85 миллиарда, так что шар стоил около 80% от необходимого. Пятнадцатью секундами позже рампа завершилась, требование упало до 7,33 миллиарда, и точно такой же шар выиграл бы. Ему не хватило не хешрейта. Ему не хватило четверти минуты.
Что такое Real-Time Targeting в eCash?
Real-Time Targeting активировался с обновлением Heartbeat 15 ноября 2024 года. Проблема, которую он решает, специфична для небольших SHA-256-цепочек.
eCash использует тот же алгоритм, что Bitcoin и Bitcoin Cash, поэтому хешрейт перетекает между ними в погоне за доходностью. Когда сложность eCash падает, внешний хешрейт хлынет внутрь и намайнивает несколько блоков подряд — турбо-блоки. Стандартный алгоритм сложности реагирует её повышением; гостевой хешрейт уходит; цепочка остаётся на мели с высокой сложностью и долей хешрейта, порождая разрывы между блоками длиной в часы. Депозиты застревают. Подтверждения становятся непредсказуемыми.
Heartbeat атакует первую половину этого цикла. Делая невалидными блоки, намайненные слишком быстро после предшественника, он убирает награду за пакетный майнинг, так что базовый алгоритм вообще не успевает перекорректировать. Дизайн вдохновлён исследованием Тома Хардинга по Real-Time Block Rate Targeting.
Механизм работает только благодаря Avalanche. Таргетинг реального времени зависит от собственного измерения каждой нодой момента прихода блока, а это по природе субъективно. Пост-консенсус Avalanche согласует эти субъективные картины в единое сетевое решение, не трогая заголовок блока и консенсус Накамото.
Как рассчитывается таргет реального времени в eCash?
Правило реализовано в Bitcoin ABC как политика парковки, а не как правило валидности. Нужный код лежит в src/policy/block/rtt.cpp, а основная формула изложена в комментарии самого файла:
target(t) = target(prev_block) * RTT_CONSTANT_FACTOR * t^(RTT_K - 1)
RTT_CONSTANT_FACTOR = RTT_K * gamma(1 + 1/RTT_K)^RTT_K / T^(RTT_K - 1)
RTT_K равно 6, поэтому таргет масштабируется как пятая степень прошедшего времени. T — целевой интервал для данного окна фильтра. Прошедшее время отсчитывается с момента, когда нода получила каждый предыдущий заголовок блока, а не от отметки времени, записанной в заголовке.
Формула вычисляется по пяти окнам одновременно, и побеждает самый строгий результат:
| Окно | Интервал T | Постоянный множитель |
|---|---|---|
| 1 блок | 150 с | 5.0372626864e-11 |
| 2 блока | 600 с | 4.9192018423e-14 |
| 5 блоков | 2400 с | 4.8039080491e-17 |
| 11 блоков | 6000 с | 4.9192018423e-19 |
| 17 блоков | 9600 с | 4.6913164542e-20 |
Длины окон — простые числа, с пропуском одного между соседними записями. Исходный код объясняет почему: это осознанная попытка избежать резонансных частот при сцеплении серии фильтров. Ряд обрывается на 17 блоках, потому что дальнейшие окна уже сколько-нибудь заметно не меняют избирательность фильтра.
Два свойства важны для майнеров. Применяется самый низкий таргет по всем окнам, то есть правит самое жёсткое ограничение. И результат ограничен сверху: таргет реального времени никогда не выше — никогда не легче — стандартного таргета. Сложность можно только толкать вверх, но не вниз.
Восстановление констант из gamma(1 + 1/6) = 0.9277193336 воспроизводит все пять опубликованных коэффициентов до десяти значащих цифр.
Насколько тяжелее блок eCash сразу после предыдущего?
Это таблица, которой нет больше нигде, рассчитанная по официальной формуле при стабильном десятиминутном ритме. Множитель применяется к сложности, которую опубликовал бы обозреватель.
| Время с последнего блока | Требуемая сложность |
|---|---|
| 5 с | 6 352 657× |
| 10 с | 198 521× |
| 20 с | 6 204× |
| 30 с | 817× |
| 45 с | 107,6× |
| 60 с | 25,5× |
| 75 с | 8,37× |
| 90 с | 3,36× |
| 105 с | 1,56× |
| 115 с | 1,00× |
| 300 с | 1,00× |
Блоку, найденному через секунду после предшественника, понадобилось бы примерно в двадцать миллиардов раз больше опубликованной сложности. На десятой секунде — в двести тысяч раз. Кривая зверски крутая, а потом просто обрывается: примерно через 115 секунд требование в точности равно опубликованной сложности и там остаётся.
Когда недавние блоки приходили быстрее десяти минут, каждое окно стартует от меньшего прошедшего времени, и рампа и начинается выше, и держится дольше. Это не побочный эффект. Это антитурбо-механизм за работой.
Совпадает ли формула с тем, что реально делает нода?
Мы проверили. Ниже значения, залогированные одной из наших нод eCash за две с половиной минуты после блока, рядом со значениями, которые предсказывает опубликованная формула, используя только времена прихода блоков, видимые в том же логе.
| Время | Сообщено нодой | Предсказано формулой | Отклонение |
|---|---|---|---|
| +9 с | 2 394 590 057 379 161 | 2 394 589 432 518 570 | 0,000% |
| +29 с | 6 893 721 996 585 | 6 893 719 674 153 | 0,000% |
| +59 с | 197 780 812 534 | 197 780 536 483 | 0,000% |
| +79 с | 45 952 404 186 | 45 952 395 103 | 0,000% |
| +99 с | 14 868 517 720 | 14 868 516 386 | 0,000% |
| +109 с | 10 200 095 597 | 10 200 094 382 | 0,000% |
| +129 с | 8 113 651 430 | 8 113 457 205 | 0,002% |
| +149 с | 7 130 533 560 | 7 130 533 560 | 0,000% |
По всем пятнадцати залогированным измерениям максимальное отклонение составило 0,002%. Опубликованная формула — не приближение того, что делают ноды: это ровно то, что они делают.
Одну деталь стоит вынести отдельно. Первые 99 секунд связывающим ограничением было однопблоковое окно. Только на 109-й секунде эстафету приняло двухблоковое окно, а ещё через 40 секунд пол задала стандартная сложность.
Что изменилось 15 ноября 2025 года?
До того обновления окон было четыре, начиная с двух блоков. Обновление 15 ноября 2025 года добавило однопблоковое окно с его интервалом 150 секунд.
Прогон обеих конфигураций через формулу при стабильном десятиминутном ритме даёт разительный результат:
| Время с последнего блока | 4 окна (раньше) | 5 окон (сегодня) |
|---|---|---|
| 30 с | 1,00× | 817× |
| 60 с | 1,00× | 25,5× |
| 90 с | 1,00× | 3,36× |
| 105 с | 1,00× | 1,56× |
| 115 с | 1,00× | 1,00× |
При нормальном ритме конфигурация из четырёх окон не создавала никакой рампы вообще. Она включалась, только если блоки уже шли слишком быстро, — в этом и состояла её узкая задача. Крутая ранняя рампа, на которую соло-майнер натыкается сегодня на в остальном здоровой цепочке, существует исключительно из-за однопблокового окна, добавленного в ноябре 2025 года.
Если вы майнили eCash соло до этой даты и никогда такого не видели — вот почему.
Почему сложность, которую показывает мой пул, не совпадает с обозревателем?
Потому что в eCash это разные числа, и майнинговое ПО прямо об этом говорит.
Соло-майнинговое ПО для eCash от Bitcoin ABC читает rtt.nexttarget при каждом вызове getblocktemplate, переводит его в сложность и — только для eCash — использует это значение как сетевую сложность, которую сообщает и логирует. Любая другая SHA-256-цепочка вместо этого берёт биты сложности из заголовка блока.
Одна эта ветка объясняет поведение, которое видит каждый оператор пула eCash: после прихода блока сообщаемая сетевая сложность астрономически высока, падает на порядок каждые десять секунд около двух минут, а затем выходит на плато на значении, которое обозреватель в итоге и опубликует.
У операторов нод есть второй путь: вычислить таргет локально из rtt.prevheadertime, rtt.prevbits и rtt.nodetime, которые все присутствуют в шаблоне блока. Оба маршрута описаны на странице майнинга eCash.
Что происходит с блоком, нарушившим таргет реального времени?
Он паркуется, а не отклоняется. Нода помечает его нарушением политики с меткой policy-bad-rtt и откладывает в сторону, затем опрос Avalanche решает, согласна ли остальная сеть. Если нода в меньшинстве, она меняет позицию. Заголовок блока всё это время остаётся нетронутым, а консенсус Накамото не изменяется.
Запуск getchaintips на ноде eCash показывает такие блоки рядом с активной цепочкой, с пометкой status: parked. На одной из наших нод вызов вернул 262 припаркованные вершины ветвей на высотах блоков с 940 265 по 960 666 — около 20 400 блоков, то есть примерно 1,3% блоков в этом диапазоне парковались хотя бы раз.
Это число — верхняя граница нарушений таргета реального времени, а не их подсчёт. eCash паркует блоки по нескольким причинам, и Avalanche также паркует проигравшую сторону обычной гонки форков. Но в цепочке, где два конкурирующих блока на одной высоте редки, доля припаркованных вершин выше одного процента говорит, что механизм активен и работает, а не простаивает.
Относится ли это к Bitcoin, Bitcoin Cash или другим SHA-256-цепочкам?
Нет. Среди SHA-256-цепочек это поведение уникально для eCash, потому что опирается на слой Avalanche для согласования субъективного тайминга.
| Цепочка | Пересчёт сложности | Требование внутри интервала |
|---|---|---|
| Bitcoin | Каждые 2016 блоков | Постоянное |
| Bitcoin Cash | ASERT, каждый блок | Постоянное |
| eCash | ASERT плюс RTT | Растёт после каждого блока, затем затухает |
В Bitcoin и Bitcoin Cash шар выше сетевой сложности — это блок, и точка. Если вы майните несколько цепочек и сравниваете между ними свои показатели лучшего шара, колонка eCash — единственная, где в расчёт входит тайминг. Наш разбор шансов соло-майнинга и Сетевой радар оба используют опубликованную сложность, и это правильная база для долгосрочной вероятности: рампа усредняется со временем.
Насколько велика мёртвая зона для соло-майнера?
Любой шар, приземлившийся до окончания рампы, потрачен впустую, каким бы хорошим он ни был. При стабильном ритме:
| Сила шара | Действителен с | Мёртвая зона |
|---|---|---|
| Равен опубликованной сложности | 1м 55с | 19,2% интервала |
| 1,5× | 1м 46с | 17,7% |
| 2× | 1м 40с | 16,7% |
| 5× | 1м 24с | 14,0% |
| 10× | 1м 13с | 12,2% |
| 100× | 0м 46с | 7,7% |
Примерно пятая часть каждого интервала блока непригодна для шара, который едва превышает сложность. Более сильные шары проходят рампу раньше, поэтому по-настоящему огромный шар почти никогда не пропадает зря.
Это никак не меняет вашу ожидаемую доходность в том смысле, на который вы могли бы повлиять. Оно уже отражено в реальном производстве блоков цепочкой, а значит и в самой сложности. Ничто в настройках вашего майнера на это не влияет.
Что соло-майнеру на самом деле с этим делать?
Для большинства честный ответ — ничего, но читайте свои числа правильно.
- Индикатор лучшей сложности вашего майнера считается локально, в момент нахождения хеша, до ответа пула. Он фиксирует значение независимо от того, был ли шар вообще способен оказаться валидным. К тому же это показатель за всё время, который не сбрасывается, когда вы находите блок.
- Лучший за всё время шар выше опубликованной сложности в eCash не является доказательством упущенного или украденного блока. Если хотите подтвердить, что блок существует, посмотрите транзакцию coinbase в блокчейне. В некастодиальном пуле ваш адрес записывается в coinbase до начала хеширования, поэтому настоящий блок виден на ваше имя и никто не сможет его увести.
- Если вам интересно, насколько близко вы были, наша статья лучший шар: объяснение разбирает, как читать эти цифры, а калькулятор шансов переводит хешрейт в реалистичные ожидания. Страница пула eCash содержит текущую сложность и все региональные точки подключения, генератор конфигурации собирает настройки stratum, а живые данные по блокам и воркерам — на панели пула.
Если вы держите собственную ноду eCash для соло-майнинга, есть один важный пункт конфигурации. Ноде нужно 17 блоков записанных времён прихода заголовков, прежде чем она сможет вычислить таргет реального времени. Пока их нет, она может собирать шаблоны со слишком низкой сложностью и получать припаркованные блоки. Параметр persistrecentheaderstime=1 сохраняет эти опорные времена на диск и перезагружает их при рестарте, закрывая этот пробел.
Источники
- Документация по майнингу eCash — поля RTT в шаблоне блока, эталонная реализация расчёта таргета и опубликованные коэффициенты фильтра
- Heartbeat Upgrade: A Steady Pulse for eCash — обоснование, проблема перебегающего майнинга и роль пост-консенсуса Avalanche
- Исходный код Bitcoin ABC —
src/policy/block/rtt.cpp, где содержатся формула, константы окон и политика парковки - Соло-майнинговое ПО для eCash — как таргет реального времени становится сообщаемой сетевой сложностью в eCash
Проверочные цифры в этой статье получены вычислением опубликованной формулы по логам работающей ноды eCash 2 августа 2026 года и сравнением результатов значение за значением.
Часто задаваемые вопросы
Почему мой шар побил сетевую сложность eCash, но не нашёл блок?
Потому что eCash применяет Real-Time Target поверх опубликованной сложности. Примерно первые две минуты после каждого блока требуемая сложность выше числа, которое показывают обозреватели. Шар, превысивший опубликованную сложность в этом окне, не является валидным блоком.
Что такое Real-Time Targeting в eCash?
Real-Time Targeting, также называемый Heartbeat, — правило консенсуса, действующее с обновления сети 15 ноября 2024 года. Оно поднимает майнинговый таргет в зависимости от того, насколько недавно приходили предыдущие блоки, а затем даёт ему затухнуть до стандартной сложности. Его цель — не дать перебегающим между цепочками майнерам выдавать серии турбо-блоков.
Сколько длится рампа RTT в eCash?
При стабильном десятиминутном ритме рампа длится около 115 секунд, после чего требование в точности равно опубликованной сложности. Когда недавние блоки приходили быстрее десяти минут, рампа стартует выше и затухает дольше — это и есть то самое антитурбо-поведение, ради которого её создали.
Сложность, которую показывает мой пул, совпадает с обозревателем?
В eCash нет. Соло-майнинговое ПО, сделанное под eCash, сообщает таргет реального времени из шаблона блока вместо стандартной сложности. Поэтому значение движется каждые десять секунд после блока, а затем устаканивается. Обозреватели публикуют сложность каждого блока в том виде, в каком он был намайнен, — это нижняя граница.
Действует ли Real-Time Targeting в Bitcoin или Bitcoin Cash?
Нет. RTT специфичен для eCash и опирается на его слой Avalanche, чтобы согласовывать между нодами субъективные времена прихода блоков. Bitcoin пересчитывает сложность каждые 2016 блоков, а Bitcoin Cash использует ASERT на каждом блоке, но ни один из них не поднимает требование внутри интервала блока. На тех цепочках шар выше сложности всегда является блоком.
Может ли пул скрыть блок, нарушивший таргет реального времени?
Скрывать нечего, потому что блока не существует. Шар ниже таргета реального времени никогда не отправляется в сеть как блок. В некастодиальном пуле адрес выплаты записывается в coinbase до начала хеширования, поэтому любой настоящий блок виден в блокчейне на имя самого майнера.
Что происходит с блоком, нарушившим таргет реального времени?
Он паркуется, а не отвергается сразу. Нода применяет RTT как политику парковки, затем опрос Avalanche согласует решение по всей сети. Поскольку каждая нода измеряет времена прихода блоков субъективно, именно этот шаг консенсуса и делает таргетинг реального времени работоспособным.
Меняет ли RTT мои шансы найти блок eCash?
Он слегка уменьшает полезную долю каждого интервала блока, потому что шары, попадающие в рампу, не могут выиграть. При стабильном ритме около 19 процентов десятиминутного интервала — мёртвая зона для шара, равного опубликованной сложности. Ничто в настройках вашего майнера этого не изменит.