カルダノはスマートコントラクト開発を行えるブロックチェーンの一つで、ピュアレビュー(査読)された研究をもとに開発を行っている唯一のブロックチェーンです。既存のスマートコントラクト開発とは別のアプローチを採用し、スケーラビリティの向上や、信頼性のあるコード監査を取り入れました。
私は、IOHK Plutus開発者トレーニングプログラム「Plutus Pioneer Program※」第一期生として修了しました。この経験を活かし、今後シリーズ化してPlutusの魅力を発信してまいります。
※(2021年10月時点、世界で3000人が修了済み)
今回は、カルダノのスマートコントラクト開発第一言語である、「Plutus」について解説します。
Plutusとは?
Plutus(プルータス)は、カルダノのために開発されたスマートコントラクト第一言語です。純粋関数型プログラミング言語「Haskell」に基づいて構成されており、Haskellコミュニティでよく知られているManuel Chakravarty氏と、アメリカのコンピューター科学者であり、プログラミング言語の設計と型理論への貢献で有名なPhilip Wadler氏率いるIOHKの研究者によって開発されています。
基本言語にHaskell を採用した理由は、セキュリティとコード検証の可能性を強化することでバグのない信頼性の高いアプリケーション開発を行うことが可能となります。また、Halkellはスケーラビリティを確保し、幅広い金融ユースケースに適しておりカルダノが採用するUTXOモデルで可能になる状態分散と並列化、スケーラビリティの強化において最適と言えます。
Haskellプログラミングの特徴
Haskellとは1985年に発表された、純粋関数型プログラミング言語で学術および業界、学者や開発者の間でよく知られています。
Haskellプログラミングは、変数を一度定義すると再代入を行なうことができないため、何度繰り返したとしても同じ結果になります。例えば、変数xを10と定義した場合、xは10から変更することができません。これは関数にも適用されるため、関数の引数に同じ値を指定すると、この状態を「参照透過性が高い」といい、純粋関数型プログラミング言語特有の性質といえます。このため、予想できないバグの発生を抑えることができ安全なコード設計が可能になります。
Haskellは信頼性が高いシステム開発に用いられる場合が多いため、銀行や証券会社、金融取引所などの厳格なシステムを必要としている金融関連分野において、とても強くHaskellが採用されます。また、財務分析などのWebサービスに関しても、Haskellを利用する場合もあります。
Plutusプラットフォームについて
Cardanoにネイティブなスマートコントラクトを提供するPlutusを理解するには、3つの概念を理解する必要があります。
・拡張UTXOモデル
・Plutus Core
・Plutusアプリケーションフレームワーク(PAF)
Plutusのコントラクトコードは、ブロックチェーン上で実行される「オンチェーンコード」とユーザーマシン上で実行される「オフチェーンコード」で構成されています。両方のコードはHaskell で記述されており、Plutusは事実上Haskell コードとなります。
拡張UTXOモデルとは?
カルダノは、ビットコインで採用されている未使用トランザクション出力(unspent (U) transaction (TX) output)アカウンティングモデル(UTXO)と、イーサリアムで採用されている、アカウントバランスモデルを組み合わせた、拡張UTXOアカウンティングモデルを作り上げました。
カルダノは送金処理以上のことを行うように設計されているため、新しいソリューションモデルが必要で、両者の良いところを組み合わせることで、トランザクションに必要な手数料を、事前に予測できることが可能になりました。
拡張UTXOの最大の利点は、トランザクション検証の成功・失敗はトランザクションがブロックチェーンに送信される前に、有効性をオフチェーン上でチェックできることです。これは、スクリプト実行中にトランザクションが失敗する可能性がある、アカウントベースモデル(Ethereumで使用)とは対照的です。
Plutus Coreとは?
Plutus CoreはCardanoで使用されるスクリプト言語です。これはHaskell に似た関数型言語であり、Haskellコンパイラーによって生成されます。これらは、ブロックチェーン上でトランザクション検証中にノードによって実行されます。
Plutusアプリケーションフレームワーク(PAF)とは?
Plutusアプリケーションを作成するときは、オンチェーン部分(Plutus Core)だけでなく、トランザクションを構築して送信するオフチェーンコードも必要になります。PAFはPlutusアプリケーションで一般的に使用されれるサービスへの簡単なアクセスを提供し、Plutusアプリケーションバックエンドで実行できます。
Plutusコードをテストできる「Plutus Playground」
開発者がスマートコントラクトをコンパイルしブロックチェーン上にリリースする前に、シュミレートすることが可能なWebシュミレーターです。
Plutusは分散型アプリケーション(DApp)やカルダノを使用したスマートコントラクト開発、サプライチェーン、医療記録、ID認証、資産管理、P2P支払いや、金融システムアプリケーションを構築するプラットフォームになります。
※参考文献
https://iohk.io/en/blog/posts/2018/12/11/smart-contracts-language-for-cardano-launches-at-plutusfest/
https://iohk.io/en/blog/posts/2021/03/11/cardanos-extended-utxo-accounting-model/
https://iohk.io/en/blog/posts/2021/04/13/plutus-what-you-need-to-know/