LIVE ADA-- MCAP-- TVL-- STAKE-- EPOCH-- Cardano & Midnight 総合情報ポータル
SIPO
速報 Cardano財団CEOがTOKEN2049でデジタルアイデンティティの未来を語る 1日前 速報一覧 →
HOME › Signal › Plutus 1.71.0.0、V4 のスクリプトコンテキストを全面追加
Signal

Plutus 1.71.0.0、V4 のスクリプトコンテキストを全面追加

2026-10-09SIPO

Cardano のスマートコントラクト基盤 Plutus の開発チームは 9 月 30 日、Plutus 1.71.0.0 を GitHub で公開し、Plutus V4 のスクリプトコンテキストを全体としてそろえました。このリリースは cardano-node 11.2 に組み込まれる予定で、次のエラ (開発上の呼び名は Dijkstra) に向けたスマートコントラクト側の準備が、ノードへの統合という段階に入ったことになります。

IOG は 10 月 9 日の週次開発レポートでこのリリースを取り上げ、Plutus Core チームも 10 月 7 日の更新で内容を報告しています。V4 のほかに、Plutus Core の新しい言語バージョン 1.2.0、Value を扱う組み込み関数のコスト、そしてスコープ検査をやめる新しい CIP の提案が並んでいます。コントラクトの開発者がいま確かめておく点を中心に、順に整理します。

1.71.0.0 に入った 4 つの変更

Plutus Core チームの更新は、このリリースが「Plutus V4 のスクリプトコンテキストの全体」を含み、node 11.2 に統合されると書いています。GitHub のリリースノートと合わせると、中身は次の 4 つです。

  • Plutus V4 のスクリプトコンテキスト — スクリプトが取引の中身を読み取るための新しい形式。V4 用の補助関数にはプロパティテストも加わりました
  • Plutus Core 1.2.0 — 汎用データ形式 Data のコンストラクタ定数 (Data.Constr) を、case 式で直接分岐できるようにする言語バージョン
  • keepPolicies / dropPolicies のコストモデル — CIP-0168 で提案された 2 つの組み込み関数に、8 つのコストモデルのパラメータが付きました
  • Dijkstra エラ用の組み込み関数の意味づけ (variant F・G) — 新しいエラで組み込み関数がどう振る舞うかを定める区分です

このうち 1.2.0 は、リリースノートによればプロトコルバージョン 12 から Plutus V1〜V4 のすべてで使えるようになります。Data.Constr での分岐には、プロトコルバージョン 12 と Plutus Core 1.2.0 の両方が必要です。

スクリプトコンテキストの V4 で変わること

Cardano のスマートコントラクトは、取引が条件を満たしているかを判定するだけのプログラムです。判定の材料になるのが、どの入力を使い、どこへ何を送り、誰が署名したかといった取引の情報で、これをスクリプトに渡す入れ物がスクリプトコンテキストです。V1・V2・V3 と版を重ねてきたこの入れ物が、V4 で新しくなります。

9 月 24 日に取り込まれた変更では、V4 のコンテキストにある項目 ttisScriptPurposes が ttisRedeemerHashes に置き換えられました。9 月 9 日の Plutus Core チームの更新では、V4 のコンテキストについて、複数の値をまとめた型の表し方を Constr から List に変え、スクリプトが中身を取り出す処理を安くする作業を進めていると説明していました。コントラクトは検証のたびにこの取り出しを行うので、ここが軽くなれば、手数料に直結する実行コストに広く効いてきます。

同じく 9 月 9 日の更新は、CIP-0168 の新しい組み込み関数について「将来のプロトコルバージョンの後ろに置かれ、Dijkstra まではオンチェーンで使えない」と書いています。V4 も 1.2.0 も、ライブラリとしては出そろいましたが、メインネットのコントラクトで使えるのはハードフォークの後です。

Value をポリシー単位で切り分ける keepPolicies / dropPolicies

Value は、ADA と各種トークンの数量をまとめて表す Cardano の型です。CIP-0168 によると、keepPolicies は指定したポリシー ID の分だけを残した Value を返し、dropPolicies は指定したポリシー ID の分を取り除いた Value を返します。2 つは対になっていて、同じリストで両方を取り出して足し合わせると元の Value に戻ります。

1.71.0.0 では、この 2 つにコストモデルが付きました。あわせて Value がポリシーごとに負の数量の件数を記録するようになり、2 つの関数の計算量は Value の大きさに対して対数に抑えられています。一方で、ポリシーが 8,191 を超える Value に対しては、2 つの関数は失敗するよう決められました。

Aiken はすでに 9 月 26 日の v1.1.24 で、プロトコルバージョン 11 で Plutus V3 に入った Value 用の組み込み関数に対応しています。CIP-0168 の関数はその次の段で、トークンの種類ごとに残高を仕分ける処理を、各言語の標準ライブラリから組み込み関数へ移す流れが続いています。

Aiken 1.1.24 の Signal: Aiken 1.1.24、PV11 の Value 組み込み関数に対応

Plinth で書いている開発者がいま確かめること

Haskell の文法でコントラクトを書く Plinth (旧 Plutus Tx) では、1.71.0.0 から既定のコンパイル先が Plutus Core 1.2.0 になりました。リリースノートは、プロトコルバージョン 12 より前のチェーンに向けてスクリプトをコンパイルする場合、target-version=1.1.0 を指定するよう求めています。

いまのメインネットはプロトコルバージョン 11 (10 月 9 日時点・エポック 660) なので、依存関係を 1.71.0.0 に上げて何も指定せずにビルドすると、現行のチェーンに向かない出力になりえます。ライブラリを更新する開発者は、ビルド設定に目標バージョンを明示しておくのが安全です。ほかにも、評価器まわりの関数 (evaluateTerm など) が Plutus Core のバージョンを引数に取るよう変わっており、自前のツールから呼んでいる場合は修正が必要になります。

CIP-0205: スコープ検査をやめる提案

Plutus Core チームは、スクリプトのスコープ検査をなくす CIP-0205 を CIP リポジトリに出し、できるだけ多くの意見を求めています。提案は 9 月 25 日に出されたプルリクエストです。

スコープ検査は、スクリプトの中の変数がすべて定義済みの名前を指しているかを、実行の前に確かめる処理です。提案者によれば、かつて変数の番号付けを名前に変換していた頃の名残で、実行エンジン (CEK マシン) は番号付けに移った後も一貫性のために検査を残してきました。範囲外の変数を参照すれば実行時に通常の失敗になるため、事前の検査をやめても安全性は変わらない、というのが提案の立場です。

効果について、議論では検査が検証コスト全体の約 3% にあたるという数字が引かれています。ただし Plutus チームのメンバーは、これは 1 つのベンチマークの平均で、大きくて実行の速いスクリプトほど恩恵は大きくなりうると補足しています。議論の中では、範囲外の変数のコストの扱いが十分に書かれているかを問う指摘も出ており、提案者は記述を足すと応じています。

同じ週報の Leios: mempool がエンドーサーブロックの分を確保

同じ週次開発レポートは、Leios で mempool (取引の待合所) がエンドーサーブロックの分の容量を確保するようになったと伝えています。この容量は Dijkstra エラのプロトコルパラメータから決まり、それより前のエラでは 0 なので、現行の mempool の容量は変わりません。Anastasia Labs の監査で指摘された 3 件の解消は、10 月 6 日の Signal で取り上げています。

Leios 試作版の Signal: Leios 試作版 2026w40、監査指摘3件を解消

次に見るもの

V4 と 1.2.0 が実際にノードへ入る時点は、IntersectMBO の cardano-node リポジトリで公開される node 11.2 のリリースノートで確かめられます。Plutus のバージョンが 1.71.0.0 以降になっているかと、プロトコルバージョン 12 に関する記述がどう書かれるかが、ハードフォーク準備の進み具合を測る目安になります。

CIP-0205 は、CIP リポジトリのプルリクエスト #1278 で議論が続いています。次回以降の CIP 編集者会議で最終確認 (Last Check) に進むかどうかが、次の節目です。Dijkstra で新しく動かせるパラメータを憲法に書き加える CAP-12 も並行して意見募集中で、ソフトウェアと憲法の両面で準備が進んでいます。

CAP-12 の Signal: CAP-12、Dijkstra の新パラメータを憲法に追加

ことば

  • スクリプトコンテキスト — スマートコントラクトが判定に使う取引の情報 (入力・出力・署名など) をまとめた入れ物。Plutus の版ごとに形式が決まっており、V4 は次のエラで使えるようになる新しい形式です。
  • Plutus Core — Cardano のスマートコントラクトが最終的に実行される低水準言語。Plinth や Aiken で書いたコードは、ここへコンパイルされます。1.2.0 は Data の分岐を直接書けるようにする新しい言語バージョンです。
  • プロトコルバージョン — チェーン全体が従うルールの版の番号。ハードフォークで上がり、新しい組み込み関数や言語機能はこの番号で使える時期が区切られます。1.2.0 は 12 からが対象です。

一次ソース / 関連リンク

Plutus 1.71.0.0 リリースノート (GitHub)(GitHub)

Plutus Core チームの更新 (2026 年 10 月 7 日)(updates.cardano.intersectmbo.org)

Plutus Core チームの更新 (2026 年 9 月 9 日)(updates.cardano.intersectmbo.org)

CIP-0168 More BuiltinValue Functions(cips.cardano.org)

CIP-0205 Remove scope check in Plutus Core (プルリクエスト)(GitHub)

Change ttisScriptPurposes to ttisRedeemerHashes (プルリクエスト)(GitHub)