Signal
📡 Signal|Solana、Drift 流出に使われた durable nonce を廃止へ
Anza のエンジニアが durable nonce を廃止する SIMD-0723 を提案。有効化は早くても2027年5月5日で、オフライン署名の事業者は移行を迫られる。

Solana のバリデータ・ソフトを開発する Anza のエンジニアが 11 月 5 日、署名済みの取引を期限なしで有効に保つ「durable nonce (永続ナンス)」を廃止する改善提案 SIMD-0723 を出した。メインネット・ベータで廃止を有効にするのは、早くても 2027 年 5 月 5 日だと提案は定めている。
durable nonce は、4 月 1 日に Solana 上の取引所 Drift から少なくとも 2 億 7,000 万ドルが流出した事件で攻撃者が使った仕組みだ (CoinDesk)。2019 年から続く利便機能を、ネットワークの側が手放す。オフラインで署名するカストディアンや取引所は、半年余りで承認の流れを作り直すことになる。
30 秒で切れる取引と、切れない取引
Solana の取引は、直近のブロックハッシュを入れて署名する。提案によれば、そのハッシュが 150 ブロックより古くなると取引は失効する。CoinDesk によると、ブロック間隔が 200 ミリ秒のいまは約 30 秒で切れる。
durable nonce は 2019 年に、この期限の例外として入った。ブロックハッシュの代わりに nonce アカウントに保存した値を取引に入れておけば、その値が変わらないかぎり取引はいつまでも有効になる。オフライン署名や、承認者が順番に署名する運用のための機能だった。
Bitcoin や Ethereum の取引には、もともと既定の有効期限がない。Ethereum の取引は送信元アカウントの連番 (nonce) が進むまで、Bitcoin の取引は使う予定の資金がほかで使われるまで有効だ。Solana は既定で短い期限を持ち、durable nonce がその逆を選ぶ入口になっていた。SIMD-0723 はこの入口を閉じ、すべての取引に 150 ブロックの期限をかける。
提案が並べた、例外の不具合の年表
提案文に Drift の名前は出てこない。理由として挙げているのは、例外を保つためのコストだ。nonce を使う取引には「失敗しても手数料の引き落としと nonce の更新だけは残す」といった専用の規則が要り、取引の検証から再生 (replay) までの各層がそれを守らなければならない。
提案は、この例外が引き起こした事例を年ごとに並べている。
- 2019 年: 失敗した nonce 取引を再送して手数料を抜き取れる脆弱性
- 2022 年: 失敗した取引がブロックハッシュと nonce の両方の経路で処理され、メインネットが約 4.5 時間停止
- 2024〜2026 年: Firedancer で nonce の導出や失敗時の処理の修正が続く
- 2026 年: テストネットで、ブロックを作る側だけに効くはずの nonce の絞り込みが再生時に働き、ほかのクライアントが受け入れたブロックを拒否
スパムの問題もある。同じ nonce の値に対して中身の違う取引を大量に署名でき、1 本が通れば残りは手数料を払わない。それでもバリデータは全部を受け取って確かめる。CoinDesk が引く研究者 Max Resnick の集計では、6 月のある期間、nonce 取引は Solana の取引量の約 3% だったのに優先手数料の 30% を払っており、555 のアカウントがその 97.5% を送っていた。
Drift で使われたのは、寝かせた承認
CoinDesk によると、Drift の攻撃者は durable nonce を使った承認に事前に署名させ、1 週間以上寝かせてから実行した。Drift は攻撃を北朝鮮の国家系グループによるものとしている。期限のない承認は、署名した瞬間の判断がいつまでも生き続けることを意味する。
ただ、廃止で消えるのはプロトコルの例外であって、遅れて実行する承認そのものではない。代わりに挙がっているのは、署名をチェーン上で検証するプログラムで、Anza の Programmatic Signer や Blueshift の Vector がそれにあたる。所有者は資産の権限をプログラムが管理するアドレス (PDA) に移し、オフラインで署名した承認を中継者が通常の取引として送る。
提案自身、リスクはこうした代替プログラムに移ると書いている。署名の検証、再利用の防止、失効、取り消しを正しく作れるかは、それぞれのプログラム次第になる。失敗した実行は承認を取り消さないので、送信に失敗しても承認は使える状態で残りうる、という注意書きもある。
締め切りの数え方は 2 通り
提案はまだ草案の段階で、CoinDesk によれば、統合には Anza と Firedancer (Jump のバリデータ・ソフト) のエンジニア 1 人ずつの承認が要る。移行の猶予は、提案では 11 月 5 日の公開から最低 6 か月。一方、Solana 財団の廃止告知ページは日付を「未定」とし、代替手段の準備が整った時点から 6 か月を数える (CoinDesk)。後者の数え方になれば、締め切りは 2027 年 5 月より後ろにずれる。
確認先は GitHub の SIMD リポジトリの PR #723 で、Anza と Firedancer の承認がつくか、有効化の識別子 (feature ID) が割り当てられるかを見る。もう一つは Solana 財団の Durable Nonce Deprecation のページで、「未定」の欄に日付が入った時点が、カストディアンにとっての実際の締め切りになる。
ことば
- durable nonce — Solana で、署名済みの取引を期限なしで有効に保つ仕組み。2019 年にオフライン署名のために入ったが、承認を長く寝かせられることが Drift の流出で悪用された。
- SIMD — Solana Improvement Document。プロトコルの変更を提案・審議する番号つきの文書で、GitHub で公開される。採択されると、バリデータ側の feature として有効化の時期が決まる。
🔗 一次ソース