Plutus Txが”Plinth”へ:Cardanoスマートコントラクトの進化
IOGは記事「Plutus Tx gets a makeover: meet Plinth」を公開し、Cardanoのスマートコントラクト開発を支える高レベル言語「Plutus Tx」が、新たに「Plinth」として生まれ変わったことを紹介しています。この名称変更は、Plutus TxとPlutus Coreの違いを明確にし、開発者がより直感的にスマートコントラクトを構築できる環境を提供するための重要なステップです。
詳細はこちらの記事をご覧ください。
Plinthとは?
Plinth(旧Plutus Tx)は、Cardanoでスマートコントラクトを作成するための高レベル言語です。Haskellのサブセットを用いて記述し、Untyped Plutus Core(UPLC)へコンパイルされることで、Cardanoブロックチェーン上での実行が可能になります。この仕組みにより、Haskellに精通した開発者だけでなく、学習を始めたばかりの開発者にも親しみやすい環境が提供されます。
なぜ名称変更が必要だったのか?
「Plutus」という名称が、Plutus TxとPlutus Coreの両方を指すために混乱を招くことがありました。特に、「CardanoのスマートコントラクトはHaskellで動作する」と誤解されがちでしたが、実際にはUPLCという低レベル言語が使用されています。
今回の名称変更によって、Plinthは「高レベルのスマートコントラクト開発言語」、Plutus Coreは「Cardanoノードが実行する低レベル言語」として、それぞれの役割が明確になりました。
Plinthの新機能と最適化
Plinthは単なる名称変更にとどまらず、開発者にとってより効率的なツールへと進化しました。
データエンコーディングの改善
Plinthでは、ScriptContext
や Map
、List
などのデータ型を、Data
エンコード方式で扱うことが可能になりました。
- これまでのScottエンコーディングやSOPエンコーディングよりも、スクリプトの実行コストが削減。
- 直接
Data
型を使用することで、変換コストを削減し効率化。
インライン最適化の強化
スクリプトの実行速度とサイズのバランスを調整するため、新たなインライン最適化機能が追加されました。
inline-fix
フラグを使用すると、スクリプトの実行コストを削減可能。PlutusTx.Optimize.Inline.inline
を使えば、特定の箇所だけにインライン最適化を適用。
再帰展開(Recursion Unrolling)
再帰処理を最適化することで、スクリプトのコストとサイズのバランスを改善。
peel
を使って、特定回数の再帰処理を展開。unroll
により、ループを展開して最適化。
この機能により、例えばlength
関数の一部を展開して効率化することが可能になります。
今後の展開
Plinthの進化は続きます。
自動スマートコントラクト検証
Plutusチームは、SMTソルバーやLean定理証明器を活用し、スマートコントラクトの正確性と安全性を自動で検証するツールを開発中。
- アノテーション言語を導入し、コントラクトの仕様を形式的に記述可能に。
- スマートコントラクト単体の検証だけでなく、DApp全体のプロトコル検証も可能に。
認証付きコンパイル
Plinthのコンパイラには、Agdaを用いた翻訳証明機能が追加予定。
- プログラムの変換時に、正確な翻訳が行われたことを保証する証明書(Agda証明オブジェクト)を生成。
- 開発者が安心してPlinthを使用できる環境を提供。
まとめ
Plutus Txの「Plinth」へのリブランドは、単なる名称変更ではなく、Cardanoのスマートコントラクト開発をより明確で効率的なものにする重要な一歩です。今後、Plinthはさらなる最適化と高保証な開発環境の提供を目指し、Cardanoエコシステムの発展を支える強力なツールとなるでしょう。