Solanaメインネットは2026年10月9日、epoch 1053から目標スロット時間200msへ移行しました。最も切迫する変化は、recent blockhashの最大処理年齢150スロットが維持されたまま、目標値による名目上の猶予が従来の60秒(150×400ms)から30秒(150×200ms)へ縮むことです。実際の期限は30秒固定ではありませんが、ハードウェアウォレットやマルチシグのように署名・承認が長引く処理では、期限切れや再承認が増える恐れがあります。
移行後に見直す対象は、優先順に①期限管理、②RPC再送、③インデクサーの処理量、④時刻推定、⑤監視の5つです。まず利用者の取引失敗に直結する①②を確認し、次にデータ欠損につながる③、誤表示を招く④、継続検証に必要な⑤へ進みます。
200msは各スロットの固定保証でも、取引が0.2秒で確定する約束でもありません。また、スロット当たりの上限は比例調整されるため、実効性能が必ず2倍になるという意味でもありません。この記事は技術変更の解説であり、SOLの売買を勧めるものではありません。
1. 期限管理:150スロット基準のblockhash有効時間は短くなる

まなぶ「150スロットの期限が同じなら、アプリは直さなくても大丈夫ですか?」
クリプ「スロット数は同じでも、時計で見た時間は短くなり得るよ。署名や承認に時間がかかる流れほど先に点検しよう。」
Solanaの取引にはrecent blockhashが含まれます。これは取引の鮮度を確認し、同じ署名済み取引がいつまでも有効であり続けることを防ぐ役割を持ちます。検証時にはBlockhashQueueと照合され、最大処理年齢である150スロット以内かが確認されます。
recent blockhashは150スロット以内かを検証される
期限が秒ではなくスロットで表される点が重要です。目標値だけの単純計算では、150×400msは60秒、150×200msは30秒です。ただし、これは説明用の名目値であり、実際の有効時間を30秒と保証するものではありません。スロットの進み方、blockhashを取得した時点、RPCから見える状態によって余裕は変わります。
アプリは「取得から25秒経ったら必ず期限切れ」「30秒までは必ず有効」といった秒数だけの判定を避けるべきです。blockhash取得時に返されるlastValidBlockHeightを保持し、現在のblock heightと比較して期限を判断します。画面のカウントダウンを出す場合も、確定的な残秒ではなく目安であることを伝える設計が安全です。
ハードウェア署名とマルチシグは期限切れに注意
通常のオンラインウォレットは、blockhash取得から署名、送信までを短時間で進められます。しかし、ハードウェアウォレットで内容を確認する、複数人の承認を集める、別端末へ署名要求を渡す、バックエンドの審査を通すといった流れでは時間がかかります。200ms化後は、同じ操作時間でも消費するスロット数が増えやすくなります。
点検では、平均時間だけでなく遅いケースを確認します。署名要求の生成から最初の送信まで、利用者の確認待ち、承認者間の受け渡し、キュー待ちを分けて計測してください。期限切れが発生したら、古い署名をそのまま送り続けるのではなく、利用者へ状態を示して再構築の必要性を案内します。
長時間・オフライン署名ではdurable nonceも選択肢
即時送信できない取引ではdurable nonceが選択肢になります。durable nonceはrecent blockhashの短い有効窓に依存せず、オフライン署名や長い承認フローを成立させるための仕組みです。ただし、nonce accountの作成・管理や、nonceを進める命令など別の運用が必要になります。
すべての取引をdurable nonceへ変える必要はありません。通常の高速な送信にはrecent blockhashが簡潔です。署名に要する時間、失敗時の再承認コスト、資産管理方針を踏まえ、時間が読めないフローだけを候補にします。導入前にはテストネットで、同時実行、再試行、nonce更新失敗の扱いまで確認してください。
2. RPC再送:block height基準で組み直す
短い有効窓では、取引を作る処理だけでなく、RPCがどの状態を見てblockhashを返し、どの経路で取引を送るかが重要になります。エラー時に同じ取引を何秒おきに何回送るかという固定タイマーだけでは、期限を超えて無意味な再送を続ける恐れがあります。
blockhash取得とpreflightCommitmentをそろえる
RPCノードは同じ瞬間でも観測しているslotやcommitment(どの確認段階の状態を返すかという指定)が異なる場合があります。あるRPCから取得したblockhashを、状態の遅れた別のRPCへ送ると、そのノードのBlockhashQueueに見つからず「blockhash not found」になる可能性があります。逆に、事前検証と送信で異なるcommitmentを使うことも、判断のずれを生みます。
blockhash取得、シミュレーション、送信でpreflightCommitmentを整合させることが基本です。複数RPCを使う場合は、単にエンドポイントを無作為に切り替えるのではなく、各ノードのslot差を監視し、取得元と送信先の組み合わせを管理します。フェイルオーバー時ほど、blockhashと取得元、取得時のblock heightをログへ残すと原因を追いやすくなります。
maxRetriesとlastValidBlockHeightで再送を制御する
送信APIのmaxRetriesは、RPCが取引転送を再試行する上限を調整するために使えます。しかし、大きな値を設定すれば成功が保証されるわけではありません。期限切れの取引を再送しても有効には戻らず、混雑やRPC障害の原因も解決しません。
アプリ側はlastValidBlockHeightを保持し、現在のblock heightがその値を超える前だけ同じ署名済み取引を再送します。確認APIの一時的な失敗だけで即座に別の取引を作ると、先の取引が実は採用されていた場合に二重の意図を生む恐れがあります。まず署名を使って状態を追跡し、有効期間内は同じ取引の確認と再送を管理します。
期限切れ後は新しいblockhashで取引を再構築する
lastValidBlockHeightを超え、取引が成立していないことを確認したら、新しいblockhashで取引を再構築し、再署名します。blockhashは署名対象に含まれるため、blockhashだけを差し替えて古い署名を使うことはできません。利用者署名が必要なウォレットでは、なぜ再承認が必要なのかを画面上で説明します。
再構築前には、先の取引が確定していないかを改めて確認します。送金や注文など、重ねて実行すると結果が増える非冪等な操作では特に重要です。アプリ内部の要求IDとオンチェーン署名を対応づけ、同じ業務要求から複数の有効な取引を作る場合のルールを決めます。エラー文言も「失敗」と「確認中」と「期限切れ」を分けてください。
RPCの遅延と複数リーダーへの転送品質を確認する
RPC事業者の評価では、応答時間だけでなく、最新slotへの追従、複数リーダーへの接続、取引再送の能力、標準メソッドへの対応を確認します。HTTPの応答が速くても、古いblockhashを返したり、取引がリーダーまで届かなかったりすれば、利用者の成功率は上がりません。
本番監視では、エンドポイント別にblockhash取得遅延、送信受付、初回確認、期限切れ、blockhash not found、slot差を記録します。主系と副系を同じ事業者・地域だけに置くと共通障害を避けられないため、必要性に応じて経路の独立性も検討します。ただし、複数送信が負荷や重複意図を増やさないよう、期限と署名単位で制御します。
3. 処理量:インデクサーは単位時間当たり約2倍のブロックに備える

200ms化でブロックのデータ形式が別物になるわけではありません。しかし、目標値で比べれば同じ時間に到着するスロットとブロックの機会は約2倍になります。インデクサーは一件を処理できるかだけでなく、継続的に到着する流量へ追従できるかを見直す必要があります。
取り込み処理と履歴DBの容量を再見積もりする
見積もりの対象はCPUだけではありません。RPCから取得するリクエスト数、WebSocket通知、ネットワーク帯域、デシリアライズ、キュー、データベース書き込み、インデックス更新、ログ、バックアップが含まれます。各ブロックが小さく調整されても、ブロック単位で発生する固定処理は高頻度になります。
保存容量は「1ブロックの平均サイズ×ブロック数」だけでなく、行ごとのメタデータ、索引、パーティション、レプリカを含めて測ります。既存の実測データを使い、通常時とピーク時の到着率で負荷試験を行います。形式変更がないことと、容量追加が不要なことは同義ではありません。
バックログと欠損を単位時間ベースで監視する
処理件数だけを見ると、入力が増えたときに遅れを見逃します。最新のオンチェーンslotと取り込み済みslotの差、最古キュー項目の滞留時間、再取得件数、欠損slot、データベースの書き込み遅延を組み合わせます。slot差が同じ100でも、400ms時代と200ms時代では壁時計上の意味が異なる点にも注意が必要です。
アラートのしきい値を固定slot数だけで設定している場合は、秒換算の遅延も併記します。逆に秒だけではスロット進行の異常を見落とすため、両方を残すのが実用的です。復旧手順では、リアルタイム取り込みを守りながら過去の欠損を埋めるか、順序を優先するかを決めておきます。
4. 時刻推定から固定400msの定数を除く
epoch境界、取引期限、履歴の推定時刻、UIのカウントダウンに400ms定数が埋め込まれていないか検索します。設定ファイルだけでなく、SQL、ダッシュボード、モバイルアプリ、キャッシュTTL、テストの期待値、運用手順書にも残る可能性があります。
単に400を200へ置換するだけでは、実測のばらつきに対応できません。過去ブロックの時刻にはgetBlockTimeを使い、将来予測には直近の進行率を使ったうえで推定と表示します。期限判定はlastValidBlockHeightのようなプロトコル側の基準を優先し、秒換算は利用者への目安に限定します。
5. 監視:実測値を見ながら運用設定を更新する
移行完了後の運用では「200msだからこうなるはず」という計算と、実際のネットワークや自社システムの観測を分けます。公式RPCには、最近の性能、ブロック時刻、ブロック生成状況を確認するメソッドがあります。単一の数値だけで結論を出さず、ネットワーク指標とアプリ指標を対応づけます。
getRecentPerformanceSamplesで実効スロット率を追う
getRecentPerformanceSamplesは、60秒単位のサンプルとしてトランザクション数、スロット数、期間などを取得できます。サンプル内のnumSlotsをsamplePeriodSecsで割れば、その期間の実効スロット率を観測できます。目標200msなら理論上は1秒5スロットですが、実測は常に同じとは限りません。
監視では瞬間値だけでなく、時間帯ごとの分布と変化を保存します。性能サンプルが悪化したときに、自社の期限切れ率や確認遅延も同時に増えたかを比較してください。相関があっても原因と断定せず、RPC固有の遅延、アプリのリリース、データベース負荷など他の変化も確認します。
getBlockTimeとgetBlockProductionで時刻と生成状況を確かめる
getBlockTimeは指定slotのおおよその生成時刻を確認するために使えます。履歴画面や集計で、slot番号へ固定時間を掛けて時刻を作る代わりになります。getBlockProductionは、指定範囲のブロック生成情報を確認する入口です。公式モニターと合わせれば、目標値と実際の到着状況を別々に観測できます。
RPC応答にも欠損や遅延があり得るため、一回の取得結果だけで異常と断定しません。監視対象RPC、観測時刻、commitment、取得範囲をログに残し、必要なら別経路で照合します。ダッシュボード上では、ネットワーク全体の指標と自社RPCから見た指標を混ぜずに表示すると切り分けやすくなります。
短期データだけで混雑時や障害時の安定性を断定しない
移行直後に平常運転が続いたとしても、それだけであらゆる条件の安定性が証明されたとは言えません。高負荷、バリデーターの偏り、広域ネットワーク障害、RPC事業者の障害、インデクサー再同期などでは別の挙動が現れる可能性があります。
評価期間を定め、通常時とイベント時の双方を記録します。変更前の基準値があるなら、成功率、確認時間、再送、期限切れ、取り込み遅延を同じ定義で比較します。
5項目の完了条件をそろえる
- 期限管理:対象=署名・承認フロー。確認方法=blockhash取得から初回送信までの上位分位と期限切れ率を測る。完了条件=lastValidBlockHeight超過前に再送を止め、必要時に再構築できる。
- RPC再送:対象=送信・確認・フェイルオーバー。確認方法=RPC別のslot差、初回確認、blockhash not foundを障害試験で記録する。完了条件=期限内は同じ署名を追跡し、期限後は成立有無を確認してから再署名できる。
- 処理量:対象=RPC、キュー、インデクサー、履歴DB。確認方法=通常時とピーク時の到着率で負荷試験する。完了条件=バックログが許容時間内に解消し、欠損を検知・再取得できる。
- 時刻推定:対象=コード、SQL、UI、TTL、テスト、手順書。確認方法=固定400msを検索し、履歴値と将来予測を照合する。完了条件=履歴はgetBlockTimeなどの実データ、将来は推定と明示して表示できる。
- 監視:対象=ネットワーク指標とアプリ指標。確認方法=実効スロット率、生成状況、成功率、確認遅延、期限切れ、欠損を同じ時間軸で比較する。完了条件=しきい値、担当者、切り分け手順が定義され、通常時と障害時に通知を検証できる。
最初に直すべきなのは、利用者の資金操作を失敗させやすい期限と再送です。次に、遅れが蓄積するデータ基盤、最後に誤解を招く表示や予測を見直します。もちろん各システムの重要度で順序は変わりますが、チェック項目を担当者、期限、検証結果と結びつければ、200ms対応を一度きりの設定変更で終わらせず継続運用へ移せます。
仕組みを知りたい人向け:200ms移行の背景
Solanaは2026年10月9日に目標200msスロットへ移行した
スロットとは、Solanaのネットワークで特定のバリデーターがリーダーとなり、ブロックを提案できる時間の区切りです。Solanaそのものの基礎はSolanaの仕組みを解説した記事でも確認できます。従来の目標は400msでしたが、SIMD-0525という改善提案に沿って段階的に短縮され、最終段階の200msが有効になりました。ここでいうSIMDはSolana Improvement Documentの略で、ネットワーク変更の目的や設計を共有する文書です。
epoch 1053からメインネットの目標値が200msに
公式の移行案内によると、最終段階は2026年10月9日のepoch 1053から始まりました。移行は一度に400msから200msへ切り替えたのではなく、350ms、300ms、250ms、200msの4段階です。各段階でネットワークの挙動を確認しながら進めることで、短い間隔が伝播やブロック生成へ与える影響を観測できるようにしました。
「200msになった」というニュースを読む際は、変更対象を正確に切り分ける必要があります。短くなったのはブロックを作る機会の目標間隔です。ウォレットが送信準備に使う時間、RPCまでの通信時間、バリデーター間の伝播時間、アプリが確認を待つ方針まで一律に200msになるわけではありません。
200msはすべてのスロットに対する固定保証ではない
まなぶ「クリプ先生、200msなら送信ボタンを押して0.2秒後には必ず完了するんですか?」
クリプ「200msはスロットの目標値だよ。通信、混雑、ブロックへの採用、確認方針があるから、取引完了の保証時間とは分けて考えよう。」
実際のスロットにはばらつきがあり、リーダーがブロックを生成できずスキップされる場合もあります。そのため、アプリのタイムアウトを「スロット数×0.2秒」という固定式だけで決めると、現実の進み方とずれる可能性があります。公式モニターはブロック到着とバリデーター別の生成状況を表示しており、目標と実測を分けて見る入口になります。
スロット、確認、finality(取引が覆りにくい最終状態)は同じ言葉ではありません。スロットが短くなればブロック提案の機会は増えますが、特定のcommitmentで確認されるまでの挙動や、アプリが安全とみなす条件まで単純に半分になるとは限りません。利用者向け表示では「200msで確定」と言い切らず、何を測った時間なのかを示すことが重要です。
SIMD-0525は4段階でスロット時間を短縮した
SIMD-0525は、400msから200msへの変更をネットワーク全体へ導入するための設計をまとめています。短縮幅だけでなく、リーダー区間、epochのスロット数、スロットごとの処理上限をどう扱うかも対象です。運用者にとっては「速度の設定を一つ変えた」のではなく、時間に依存する複数の前提が更新されたと捉える方が正確です。
350ms・300ms・250ms・200msの順に移行
段階移行には、問題が起きたときに影響範囲と原因を切り分けやすい利点があります。350msで安定性を観測し、次に300ms、250ms、200msへ進めば、伝播の余裕やスキップの変化を段階ごとに比較できます。アプリ側でも移行日だけを待つのではなく、各段階の実測を記録すれば、処理遅延やエラー率がどこで変化したかを追いやすくなります。
段階導入だったことは、200msが実験的な数字という意味ではありません。メインネットの目標値として有効化されています。ただし、導入完了と長期的な安定性の評価は別です。混雑時、地域間通信の遅延、障害復旧など、短期間の平常データだけでは判断できない場面が残ります。
skip rateとオンチェーン指標を見ながら段階評価
skip rateは、割り当てられたスロットでリーダーがブロックを作れなかった割合を見る指標です。短いスロットでは、受信、処理、提案、伝播に使える余裕も短くなるため、スキップの変化は次段階へ進む判断材料になります。公式の短縮効果分析は、仕様だけではなくオンチェーンの指標を使って段階を評価したことを示しています。
ただし、skip rateだけでネットワーク全体を評価するのも不十分です。取引の成功率、確認までの分布、RPCのエラー、地域別の遅延、インデクサーの追従など、利用者に近い指標も必要です。ネットワークがブロックを作れていても、あるRPC経路だけが遅ければ、その経路を使う利用者には失敗として見えるからです。
AgaveとFiredancer系を機能ゲートで管理
ネットワークには異なるクライアント実装が参加します。SIMD-0525の移行は機能ゲートで管理され、AgaveとFiredancer系の対応版が追跡されました。機能ゲートは、対応コードを先に配布し、ネットワークが合意した境界で機能を有効にするための仕組みです。
ノード運用者は「自分のソフトが起動するか」だけでなく、該当機能へ対応した版かを確認する必要があります。アプリ開発者も、自社RPCや委託先がどのクライアントと版を使い、200ms対応を終えているかを把握すると、障害時の切り分けがしやすくなります。複数実装があることは耐障害性に役立ちますが、版管理を不要にするものではありません。
200ms化で変わる時間感覚と変わらない基本構造
200ms化を理解する近道は、「スロット数として維持される値」と「壁時計で短くなる値」を分けることです。4スロットのリーダー区間と432,000スロットのepochは維持されます。一方、1スロットの目標時間が半分になるので、それらを秒や時間へ換算した長さは短くなります。
| 項目 | 400ms目標 | 200ms目標 | 読み方 |
|---|---|---|---|
| 1スロット | 目標400ms | 目標200ms | 保証値ではない |
| リーダー区間 | 4スロット、名目1.6秒 | 4スロット、名目0.8秒 | スロット数は維持 |
| 1 epoch | 432,000スロット、目標約48時間 | 432,000スロット、目標約24時間 | 実時間は進行状況で変わる |
| recent blockhash | 150スロット基準 | 150スロット基準 | 壁時計上の猶予は短くなり得る |
リーダー占有時間は名目1.6秒から0.8秒へ
リーダーは連続する4スロットを担当する構造が維持されます。したがって、目標値だけで計算した担当時間は、4×400msの1.6秒から、4×200msの0.8秒へ短くなります。リーダー交代の機会が壁時計上で増える一方、一人のリーダーが連続して処理できる時間も短くなるという両面があります。
この変化は、取引の転送経路を考えるうえでも重要です。RPCが現在または近い将来のリーダーへ取引を届けるのに時間がかかれば、短い担当区間を逃す可能性があります。アプリ側でスロット時間を短くしただけでは解決せず、RPC事業者の接続、再送、遅延の品質も合わせて確認する必要があります。
epochのスロット数は維持され目標所要時間は約24時間に
epochはバリデーターのスケジュールなどに関わるまとまりで、432,000スロットという長さは変わりません。目標どおりなら、400ms時代の約48時間から200ms時代の約24時間へ短くなります。ただし、スキップや実際の生成間隔があるため、カレンダー上で常にちょうど24時間になるという意味ではありません。
「次のepochまであと何時間」と表示するサービスが、残りスロット数へ固定400msを掛けている場合、表示は大きくずれます。移行後は実際のブロック時刻や直近の進行率から推定し、推定値であることも明示すべきです。バッチ処理をepoch境界の予想時刻に合わせている場合は、単なる表示の問題ではなく実行時刻のずれにつながります。
壁時計当たり処理量を保つため上限は比例調整
SIMD-0525では、スロット当たりの計算量やブロックデータを配る小さな単位であるshredの上限を比例して縮小し、壁時計当たりの処理量を概ね維持する設計が採られています。スロットが2倍の頻度になっても、各スロットへ従来と同じ最大量をそのまま詰め込めるわけではありません。
この調整があるため、「ブロック機会が2倍だからスループットも必ず2倍」とは言えません。一方で、取引がブロックへ入る機会が細かくなることは、待ち時間の分布に影響し得ます。取引形式とデータ量の別の変更はSolanaトランザクションv1の解説で確認できます。容量と頻度を分けて説明すれば、性能倍増という誤解を避けながら、利用者体験の改善可能性を正しく捉えられます。
スロット短縮はfinalityや実効性能の倍増を意味しない
finalityは、十分な投票や合意が積み重なり、取引が覆りにくいと判断できる状態に関係します。スロット時間はその過程の一要素ですが、同義ではありません。また、実効性能は取引構成、計算量、ネットワークの混雑、バリデーターやRPCの状態にも左右されます。
したがって、効果測定では「1秒当たりのスロット数」だけでなく、成功取引数、確認遅延の中央値や上位分位、失敗理由、再送回数を見ます。200msは重要な基盤変更ですが、アプリのボトルネックがデータベースや外部署名にあれば、その部分は自動では速くなりません。
まとめ:5項目を期限管理から順に完了させる
最優先は、lastValidBlockHeightによる期限管理と、期限内外を分けたRPC再送です。続いてインデクサーの処理量、固定400msを除く時刻推定、実測に基づく監視を、担当者と完了条件を付けて点検してください。
背景として、200msは取引確定時間の保証ではなく、SIMD-0525に基づく目標スロット時間です。移行後の設計では、スロット数と壁時計時間を分け、ネットワークの実測と自社システムの結果を継続して照合することが要点です。
