Solanaが有効化した内容
Solana Foundationによると、txv1フィーチャーゲートは9月15日01:00 UTC頃、エポック1035の開始時にメインネットで有効になりました。v1トランザクション形式は最大サイズを1,232バイトから4,096バイトへ拡大し、テストネットとdevnetでも有効です。従来は一つのトランザクションに収まらなかったゼロ知識証明、大規模マルチシグ、オンチェーン署名方式などの用途を想定しています。
legacyとv0トランザクションは引き続き動作します。送信側による新形式の利用は任意ですが、v1がオンチェーンに存在することで、ブロックを読むシステム、取引を索引化するシステム、署名内容を表示するウォレット、共同署名者、手数料スポンサーの運用契約は変わります。Foundationの移行ガイドはSDKの最低対応バージョンに加え、古い連携が明示的に失敗する場合と、より危険な誤データのまま動作する場合を示しています。
バージョン対応を読み取り経路のSLOに含める
SolanaのRPCガイドでは、v1データを受け取るためにgetTransactionとgetBlockの呼び出しでmaxSupportedTransactionVersion: 1を渡す必要があります。指定しない場合、v1トランザクションはエラー-32015となり、一件のv1によってgetBlock全体が失敗する可能性があります。blockSubscribeがnullブロックを返して進行を止め得ることも説明されています。v1を生成しないアプリケーションにとっても、形式対応は可用性の問題です。
本番チームは主要APIだけでなく、すべてのRPC利用者を棚卸しすべきです。対象にはインデクサー、コンプライアンス用エクスポート、不正検知、顧客サポート、会計ジョブ、災害復旧用リーダーが含まれます。契約テストへv1フィクスチャを追加し、スロット進行の停止とバージョンエラーを監視し、最初のv1を含むブロックからの再生がライブ処理と同じチェックポイントへ到達することを検証します。
より危険なのはインデクサーの静かな乖離
v1では、リソース設定がComputeBudget命令からtransactionConfigオブジェクトへ移ります。Foundationは、命令の走査を続けるインデクサーがエラーを出さず、計算量上限や優先手数料をゼロと報告し得ると警告しています。GeyserとgRPCの利用者では、古い生成コードがv1をv0として解釈し、新しいconfigフィールドを捨てる可能性があります。そのため、文書化された判定順序は構造に基づきます。configがあればv1、ない場合に限りversionedフラグでv0とlegacyを区別します。
これはデコーダー更新だけでなく、スキーマ移行の問題です。展開中は生メッセージを保存し、新旧の投影処理を並行稼働させ、トランザクション形式ごとに手数料とリソース項目を比較し、未知のデコーダーバージョンでは後続の財務・リスク報告を止めるべきです。v0は優先手数料をCU当たりのマイクロlamport価格で表し、v1は総額をlamportで保持するため、正規化規則も明示する必要があります。
ウォレットとスポンサーは実際に実行されるメッセージを認可する
v1の送信者は、計算量と読み込みアカウントデータ量の上限を明示的に設定する必要があります。v1での初期値はゼロです。1,232バイトを超えるトランザクションはbase64で送信しなければなりません。署名を求める前に、dappはすべてのインストール済みウォレットがv1を安全に解析・表示できると仮定せず、ウォレットが公開するsupportedTransactionVersionsを確認する必要があります。
より重要な統制境界は、手数料スポンサーとサーバー共同署名です。v1ではComputeBudget命令がno-opとなり、実効的な上限と優先手数料総額はtransactionConfigにあります。命令走査で支払いを承認するスポンサーは、署名対象を制限できません。バージョン判定、正規デコード、実際のv1 configに対する上限、送付先・命令ポリシー、シミュレーション、署名バイトの監査記録を一つの不可分な認可経路にすべきです。
Ineezaの見解
4,096バイトの上限は暗号技術やマルチシグの有用な用途を可能にします。一方、本番運用で重要なのは、トランザクションを取り巻くすべての信頼境界を横断するプロトコル形式の移行です。安全な展開は読み取りと証跡パイプラインから始め、次にウォレット機能の交渉、最後にv1の生成とスポンサーへ進みます。未知の形式を明示的な縮退状態として扱い、再処理用の生データを保持し、正規化したデコード項目に基づいて認可すべきです。大容量化が機能であり、バージョンを認識した運用がその前提です。