ソロ最高シェアがブロックにならない:eCash RTT
eCashのソロシェアがネットワーク難易度を超えたのに何も得られなかった。理由はReal-Time Targeting。公式の数式を実ノードのログで検証した。
eCashのReal-Time Targeting、通称Heartbeatは、各ブロックの後およそ2分間、要求されるマイニングターゲットを引き上げ、その後公開難易度まで減衰させるコンセンサスルールだ。エクスプローラーに表示された難易度を超えたシェアは、その減衰の後に到着した場合にのみ有効なブロックとなる。XECのソロマイナーが記録的なシェアを見て何も得られない、最も一般的な理由がこれだ。
重要なポイント
- eCashは安定した間隔において、各ブロックの後およそ115秒間、公開難易度より高い難易度を要求する。
- 要求は天文学的に高く始まり、経過時間の5乗で下がる。標準難易度より易しくなることは決してない。
- エクスプローラーは各ブロックの難易度をマイニングされた時点のもの、つまり下限値として表示する。現在の要求値を示す公開フィードは存在しない。
- 本番ノード自身のログに対して公式の数式を15回の測定にわたって再現した:最大偏差0.002%。
- 今日のソロマイナーが直面する急峻な初期ランプは、2025年11月15日のアップグレードによって完全に生じたものだ。このアップグレードが1ブロックのフィルターウィンドウを追加した。
なぜ私のシェアはネットワーク難易度を超えたのにブロックを見つけられなかったのか?
あるマイナーが、正確でまったく理にかなった苦情を寄せてきた。彼は約73.6億の公開ネットワーク難易度に対し、約80億の難易度のシェアでeCashのブロックを解いていた。数時間後、彼のマイナーははるかに優れたシェア——約118.7億——を記録したが、何も起こらなかった。彼はそれ以降のチェーン上のすべてのブロックを確認した。公開難易度は一晩中71億から74億の間にとどまっていた。Bitcoinのルールの下では、そのシェアはブロックだった。
彼は数字については正しく、ルールについては間違っていた。eCashでは、エクスプローラーが公開する難易度は、あなたが送信する瞬間に超えなければならない難易度ではない。それは床だ。
彼の118.7億のシェアは、前のブロックからおよそ100秒後に到着した——まだランプの中だった。その瞬間ネットワークは148.5億を要求しており、シェアは必要量のおよそ80%の価値しかなかった。15秒後にランプは終わり、要求は73.3億まで下がった。まったく同じシェアなら勝っていたはずだ。彼に足りなかったのはハッシュレートではない。4分の1分だった。
eCashのReal-Time Targetingとは何か?
Real-Time Targetingは2024年11月15日、Heartbeatアップグレードで有効化された。それが解決する問題は、少数派のSHA-256チェーン特有のものだ。
eCashはBitcoinおよびBitcoin Cashとアルゴリズムを共有しているため、ハッシュレートは収益性を追ってそれらの間を移動する。eCashの難易度が下がると外部のハッシュレートが流れ込み、立て続けに数ブロックをマイニングする——ターボブロックだ。標準の難易度アルゴリズムは難易度を上げて反応する。訪れていたハッシュレートは去る。チェーンは高い難易度とわずかなハッシュレートで取り残され、何時間も続きうるブロックの空白を生む。入金が滞る。承認は予測不能になる。
Heartbeatはこのサイクルの前半を攻撃する。前のブロックの直後にマイニングされたブロックを無効にすることで、バーストマイニングの見返りを取り除き、基礎となるアルゴリズムがそもそも過剰補正しないようにする。この設計はTom Hardingの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なので、ターゲットは経過時間の5乗でスケールする。Tはそのフィルターウィンドウの目標間隔だ。経過時間は、ヘッダーに書かれたタイムスタンプからではなく、ノードが直前の各ブロックヘッダーを受信した時点から測定される。
数式は5つのウィンドウで同時に評価され、最も厳しい結果が採用される:
| ウィンドウ | 間隔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 |
ウィンドウの長さは素数で、連続する項目の間で1つずつ飛ばされている。ソースコードがその理由を説明している:一連のフィルターを連結することで生じる共振周波数を避けるための、最善の試みだ。17ブロックで打ち止めになるのは、それ以上のウィンドウではフィルターの選択性がもはや意味のある変化をしないためである。
マイナーにとって2つの性質が重要だ。全ウィンドウの中で最も低いターゲットが適用されるので、最も厳しい制約が支配する。そして結果には上限がある:リアルタイムターゲットが標準ターゲットより高く——つまり易しく——なることは決してない。難易度は上に押し上げられるだけで、下がることはない。
gamma(1 + 1/6) = 0.9277193336から定数を再構成すると、公開された5つの係数すべてが有効数字10桁まで再現される。
前のブロックの直後、eCashのブロックはどれだけ難しいのか?
これは他のどこにも存在しない表で、安定した10分間隔における公式の数式から計算したものだ。乗数はエクスプローラーが公開するであろう難易度に適用される。
| 前ブロックからの経過時間 | 要求される難易度 |
|---|---|
| 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× |
前のブロックの1秒後に見つかったブロックは、公開難易度のおよそ200億倍を必要とするだろう。10秒後で20万倍。曲線は残酷なほど急峻で、そして単に止まる:約115秒後、要求は公開難易度と正確に一致し、そこにとどまる。
直近のブロックが10分より速く到着していた場合、すべてのウィンドウがより短い経過時間から始まり、ランプはより高く始まると同時により長く続く。これは副作用ではない。アンチターボブロックのメカニズムが仕事をしているのだ。
この数式は実際のノードの挙動と一致するのか?
検証した。以下は、あるブロックの後2分半の間に我々のeCashノードの1台が記録した値と、同じログに見えるブロック到着時刻だけを使って公開された数式が予測する値を並べたものだ。
| 時刻 | ノードの報告値 | 数式の予測値 | 偏差 |
|---|---|---|---|
| +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% |
記録された15回の測定すべてを通じて、最大偏差は**0.002%**だった。公開された数式はノードの挙動の近似ではない——それはノードがやっていることそのものだ。
一つ取り出す価値のある詳細がある。最初の99秒間、拘束条件となっていたのは1ブロックウィンドウだった。109秒でようやく2ブロックウィンドウが引き継ぎ、その40秒後に標準難易度が床を定めた。
2025年11月15日に何が変わったのか?
そのアップグレード以前は、2ブロックから始まる4つのウィンドウがあった。2025年11月15日のアップグレードが、150秒の間隔を持つ1ブロックウィンドウを追加した。
両方の構成を安定した10分間隔で数式に通すと、際立った結果が出る:
| 前ブロックからの経過時間 | 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× |
通常の間隔では、4ウィンドウ構成はランプをまったく生じさせなかった。ブロックがすでに速く到着しすぎているときにのみ作動した——それが本来の限定的な目的だった。他の点では健全なチェーンで今日ソロマイナーがぶつかる急峻な初期ランプは、2025年11月に追加された1ブロックウィンドウによって完全に生じている。
その日付以前にeCashをソロマイニングしていて、こんなことが起きたことがなかったなら、理由はこれだ。
なぜプールが示す難易度はエクスプローラーと一致しないのか?
eCashではそれらが別の数字であり、マイニングソフトウェアがそう言っているからだ。
Bitcoin ABCのeCashソロマイニングソフトウェアは、各getblocktemplate呼び出しからrtt.nexttargetを読み取り、それを難易度に変換して——eCashに限り——その値を報告およびログ記録するネットワーク難易度として使用する。他のあらゆるSHA-256チェーンでは、代わりにブロックヘッダーの難易度ビットを使う。
この一つの分岐が、あらゆるeCashプール運営者が目にする挙動を説明する:ブロックが到着した後、報告されるネットワーク難易度は天文学的に高く、約2分間10秒ごとに一桁ずつ下がり、そしてエクスプローラーが最終的に公開する値で平らになる。
ノード運営者には第2の選択肢がある:ブロックテンプレートにすべて存在するrtt.prevheadertime、rtt.prevbits、rtt.nodetimeからローカルにターゲットを計算することだ。どちらの経路もeCashマイニングページに記載されている。
リアルタイムターゲットに違反したブロックはどうなるのか?
拒否されるのではなくパークされる。ノードはpolicy-bad-rttというラベルのポリシー違反として印を付けて脇に置き、その後Avalancheのポーリングがネットワークの他の部分が同意するかどうかを判断する。ノードが少数派であれば、自らの立場を反転させる。その間ブロックヘッダーは手つかずのままであり、ナカモトコンセンサスは変更されない。
eCashノードでgetchaintipsを実行すると、これらがアクティブチェーンと並んでstatus: parkedと印されて表示される。我々のノードの1台では、この呼び出しがブロック高940,265から960,666にわたる262個のパークされたブランチチップを返した——およそ20,400ブロックなので、その範囲のブロックの約1.3%が少なくとも一度はパークされたことになる。
この数値はリアルタイムターゲット違反の上限であり、その件数ではない。eCashはいくつかの理由でブロックをパークし、Avalancheは通常のフォーク競争の敗者側もパークする。しかし同じ高さの競合ブロックがまれなチェーンにおいて、1パーセントを超えるパークチップ率は、メカニズムが遊んでいるのではなく稼働して働いていることを示している。
これは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% |
難易度をぎりぎり超える程度のシェアにとって、各ブロック間隔のおよそ5分の1は使い物にならない。より強いシェアはランプをより早く抜けるので、本当に巨大なシェアがほとんど無駄にならないのはそのためだ。
これはあなたが行動できるいかなる形でも期待収益を変えるものではない。すでにチェーンの実際のブロック生成に反映されており、したがって難易度そのものに織り込まれている。マイナーの設定でこれに影響を与えられるものは何もない。
ソロマイナーは実際どうすべきなのか?
ほとんどの人にとって、正直な答えは何もしないだ——ただし自分の数字は正しく読むこと。
- マイナーのベスト難易度の表示は、ハッシュが見つかった瞬間、プールが応答する前にローカルで計算される。そのシェアが有効になり得たかどうかに関係なく値を記録する。またこれは全期間の数値で、ブロックを見つけてもリセットされない。
- 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でリアルタイムターゲットが報告ネットワーク難易度になる仕組み
本記事の検証数値は、2026年8月2日に稼働中のeCashノードのログに対して公開された数式を評価し、結果を値ごとに比較することで得られた。
よくある質問
なぜ私のシェアはeCashのネットワーク難易度を超えたのにブロックを見つけられなかったのか?
eCashが公開難易度の上にReal-Time Targetを課しているからだ。各ブロックの後およそ最初の2分間、要求される難易度はエクスプローラーが表示する数値より高い。そのウィンドウ内で公開難易度をクリアしたシェアは、有効なブロックではない。
eCashのReal-Time Targetingとは何か?
Real-Time Targeting(Heartbeatとも呼ばれる)は、2024年11月15日のネットワークアップグレード以降有効なコンセンサスルールだ。直前のブロックがどれだけ最近到着したかに基づいてマイニングターゲットを引き上げ、その後標準難易度まで減衰させる。目的は、利益を追って移動するマイナーがターボブロックの連続を生み出すのを止めることだ。
eCashのRTTランプはどれくらい続くのか?
安定した10分間隔では、ランプは約115秒続き、その後要求は公開難易度と正確に一致する。直近のブロックが10分より速く到着していた場合、ランプはより高く始まり減衰にも時間がかかる。これこそが、まさに設計目的であるアンチターボブロックの挙動だ。
プールが報告する難易度はエクスプローラーと同じか?
eCashでは同じではない。eCash向けに作られたソロマイニングソフトウェアは、標準難易度ではなくブロックテンプレートからのリアルタイムターゲットを報告する。ブロック後に数値が10秒ごとに動き、その後落ち着くのはこのためだ。エクスプローラーは各ブロックがマイニングされた時点の難易度を公開するが、それは下限値である。
Real-Time TargetingはBitcoinやBitcoin Cashにも適用されるのか?
いいえ。RTTはeCash固有であり、ノード間で主観的なブロック到着時刻を調整するためにAvalancheレイヤーに依存している。Bitcoinは2016ブロックごとに再調整し、Bitcoin CashはブロックごとにASERTを使うが、どちらもブロック間隔の内部で要求を引き上げることはない。それらのチェーンでは、難易度を超えたシェアは常にブロックだ。
プールはリアルタイムターゲットに違反したブロックを隠せるのか?
隠すものは何もない。ブロックが存在しないからだ。リアルタイムターゲットを下回るシェアがブロックとしてネットワークに送信されることはない。非カストディアルのプールでは、ハッシュ計算が始まる前に支払いアドレスがcoinbaseに書き込まれるため、本物のブロックはマイナー自身の名義でオンチェーンに見える。
リアルタイムターゲットに違反したブロックはどうなるのか?
即座に拒否されるのではなく、パークされる。ノードはRTTをパーキングポリシーとして適用し、その後Avalancheのポーリングがネットワーク全体で判断を調整する。各ノードがブロック到着時刻を主観的に測定するため、このコンセンサスの段階こそがリアルタイムターゲティングを実用的にしている。
RTTはeCashのブロックを見つける確率を変えるのか?
各ブロック間隔の使える割合をわずかに減らす。ランプ内に着地したシェアは勝てないからだ。安定した間隔では、10分間隔のおよそ19パーセントが、公開難易度と等しいシェアにとってのデッドゾーンとなる。マイナーの設定でこれを変えられるものは何もない。