イラスト Dmitris Ladopoulos

03

Goguen

スマートコントラクト

スマートコントラクトの統合により、Gouen(ゴーグエン)期はCardanoネットワークにおける機能性が大きく発展します。Shelley期でシステムの中核が分散化されたのち、Goguenでは、査読を受けた研究と保証性の高い開発手法により裏打ちされた強靭なCardanoという基盤に、分散型アプリケーション(DApps)を構築する機能が追加されます。

Goguenの開発はShelleyと並行して行われています。完成の暁には、ユーザーはその技術的素養の有無にかかわらず、Cardanoネットワーク上で関数型スマートコントラクトを作成、実行できるようになります。Goguen期の目標の一つにPlutus(プルータス)の構築があります。これはスマートコントラクト専用の開発言語であるとともに、関数型プログラミング言語Haskellを使用した実行プラットフォームでもあります。Plutusは既にテスト段階に入っており、関数型プログラミングのメリットをもつスマートコントラクトの作成を可能にします。Plutusは、オンチェーン、オフチェーンのコンポーネント両方を1つのコードベースでサポートします。そのため、既存のスマートコントラクト実装に比べて一貫性と開発における有用性が向上します。

Goguen期はまた、金融やビジネスの関係者が技術的知識の素地がなくともスマートコントラクトを作成することを可能にするMarlowe(マーロウ)を使用して、Cardanoユーザーの裾野を広げることも視野に入れています。Marloweは、Plutus上に構築された、金融コントラクト用の高次のドメイン固有言語(DSL)です。Marloweには、プログラマーでなくとも金融関係のスマートコントラクトを簡単に構築できるアプリケーション構築プラットフォーム、 Meadow(メドウ)を搭載しています。MarloweとMeadowにより、金融アプリケーション用スマートコントラクトの作成が簡易化され、業界の専門家がプログラミングの専門的なスキルを必要とせずに、直接携わることが可能となります。PlutusとMarloweを組み合わせることで、現実世界における大規模な実装をサポートすることができる、実証された機能を持つエンタープライズレベルのスマートコントラクトという新たなカテゴリーが生み出されます。

Goguenは、エンタープライズレベルの、ミッションクリティカルな、分散型スマートコントラクトアプリケーション開発への道を開く、Cardanoの機能性における大変革期です。そして、さらにエキサイティングな機能性が、Basho(バショウ)、そしてVoltaire(ボルテール)期とともに到来します。

Goguen期の関連研究(英語のみ)

Towards a Smart Contract-based, Decentralized, Public-Key Infrastructure(スマートコントラクトベースの分散型公開鍵インフラストラクチャーを目指して)

ブロックチェーンに特有のスケーラビリティおよびインセンティブメカニズムを基盤とした、スマートコントラクトベースの分散型公開鍵インフラストラクチャーを提起する論文。ユニバーサルコンポーザビリティフレームワークの使用に関連した設計の諸問題を形式化している。

[草稿] System F in Agda, for fun and profit(楽しみと利益のための、ADAにおけるSystem F)

Plutus Coreが基盤とするSystem Fの完全にイントリシックな型付けによる実行可能な形式化を提示した初の論文。

[草稿] Unraveling recursion: compiling an IR with recursion to System F(再帰の解明:System Fへの再帰を伴うIRのコンパイル)

System Fを基盤とする中間表現(IR)を提示した論文。その機能を拡張し関数型およびデータ型双方における再起を可能にし、高次のプログラミングアプリケーションのサポートを可能とする。

[草稿] Functional Blockchain Contracts[関数型ブロックチェーンコントラクト]

Cardanoブロックチェーンで分散型アプリケーションのコーディングを行うための関数型ブロックチェーンスマートコントラクトシステムであるPlutusプラットフォームを紹介する論文。Plutusの幅広いライブラリーが、どのようにオンチェーン、オフチェーンコードの両方でPlutus Coreとやり取りするかを提示している。

Goguen の開発範囲


PLUTUS

Plutusは関数型プログラミング言語Haskellを使用した、専用の開発および実行プラットフォームです。Cardanoにおけるスマートコントラクト作成を可能にするためにデザインされたPlutusは、あいまいさを抑えたりテストを簡易化するといった、関数型プログラミングに特有の利点をスマートコントラクトに付与します。Goguen期には、Plutusを土台とするエンタープライズレベルのビジネスおよび金融シナリオのモデリングを可能とするスマートコントラクトの準備が整います。また、PlutusとHaskellにより、オフチェーンとオンチェーンで同じコードベースの使用が可能になります。他のスマートコントラクト実装では、2種類以上の言語の使用が必要とされるケースが多く、効率が下がるとともに深刻なミスを生むリスクが高まります。

Plutusの全作業はPlutus GitHubリポジトリで公開されており、Plutus Playground(プルータスプレーグラウンド)テストベッドでは実際にPlutusでスマートコントラクトを作成してみることができます。



PLUTUS CORE

Plutusが開発者向けの高次言語であるのに対し、Plutus Core(プルータスコア)はCardano決済層とコンピュテーション層の両方で実行され、スクリプトとブロックチェーン間のやり取りをコントロールする、低次のスクリプト言語です。Plutusで書かれたスマートコントラクトのオンチェーン機能がすべてコンパイルされたPlutus Coreでは、その単純さ、簡潔さを保ちながら、関数型プログラミングの利点がすべて維持されます。Plutus Coreは決済層に実装されますが、可能な限り単純化することで、潜在的攻撃ベクターを最小化し、安全性を向上させます。



MARLOWE

Marlowe金融スマートコントラクトを作成するためのドメイン固有言語(DSL)であり、事業家や業界専門家、金融アナリストといった非技術者がアクセスできるようにデザインされています。Marloweを使用することにより、プログラミングの経験が一切なくても、実世界のデータとやり取りできる実行可能なスマートコントラクトを作成し、内蔵のCardanoエミュレーターにデプロイして、最終的にCardanoネットワークに配信することが可能となります。Marloweは必然的に高次言語ではありますが、PlutusとHaskellに構築されており、関数型プログラミングが提供するすべての保証から得られるメリットを、使い勝手の良さを失うことなく享受することができます。

Marloweの全作業はMarlowe GitHubリポジトリで公開されており、ユーザーはMeadowエミュレーターでシンプルなウェブベースのインターフェイスを使用し、金融スマートコントラクトを実際に作成してみることもできます。



PLUTUSFEST

PlutusFestは2018年12月、プログラミング言語のPlutusおよびMarloweを公開し促進するため、エディンバラ大学で2日間にわたり開催されました。IOHK開発者による講演やプレゼンテーションには、関心を持つ一般参加者や研究者が出席しました。その多くは録画され、IOHK YouTubeチャンネルで公開されています。



PLUTUSおよびMARLOWE UDEMYコース

PlutusおよびMarloweプログラミング言語をカバーする2つの無料Mooc(ムーク)コースがUdemyで公開されています。IOHKの社内教育チームが作成、管理を担当するこれらのコースは、PlutusおよびMarloweを使用したスマートコントラクトを試したいと望むすべての人に初歩的なリソースを提供します。



マルチ通貨台帳

Cardanoにマルチ通貨台帳モデルを導入することにより、ネットワークはERC20に類似した、ただしこれよりコストを削減し、安全性を向上させた方法で、付加的な暗号通貨をサポートすることが可能となります。決済層におけるネイティブサポートにより、複雑なスクリプトシステムは必要ありません。マルチ通貨台帳により、ユーザーは自身の代替可能なトークンをCardanoネットワークで作成できるだけでなく、代替不可能なトークンをトークン化することができ、複数の暗号通貨を含むスマートコントラクトの統合も容易になります。



KEVM

KEVMは形式手法の検証を経た、高質なスマートコントラクト仮想マシンであり、イーサリウム仮想マシン(EVM)と互換性を持ちます。K framework(Kフレームワーク)で形式仕様記述を行ったKEVMは、設定やEVMの移行ルールなどの要素に形式手法のセマンティクスを用いることで、スマートコントラクト用仮想マシンとしての安全性を向上させています。 IOHKは現在他の優先事項に注力するためにK frameworkプロジェクトとのコラボレーションを中断していますが、そのビジョンを高く評価しており、今後再び参加する可能性もあります。



IELE

IELE(イエレ)はKEVMの研究を基にした仮想マシンです。低次プラットフォームとして、IELEは多言語間で単一のガスモデルを使用することにより、高次言語からスマートコントラクトの翻訳および実行を可能にします。Solidityコードのコンパイルターゲットとして、またはCardanoに直接統合することにより、IELEはスマートコントラクトの相互運用性を可能にし、イーサリウムの統合を実現するための保証性の高い経路を提供する可能性を持ちます。IOHKはIELEプロジェクトに多大な貢献を果たしましたが、他の優先事項に注力するために現在このコラボレーションを中断しています。ただし将来的にプロジェクトに再び参画する可能性について非常に前向きに捉えています。



Plutusは関数型プログラミング言語Haskellを使用した、専用の開発および実行プラットフォームです。Cardanoにおけるスマートコントラクト作成を可能にするためにデザインされたPlutusは、あいまいさを抑えたりテストを簡易化するといった、関数型プログラミングに特有の利点をスマートコントラクトに付与します。Goguen期には、Plutusを土台とするエンタープライズレベルのビジネスおよび金融シナリオのモデリングを可能とするスマートコントラクトの準備が整います。また、PlutusとHaskellにより、オフチェーンとオンチェーンで同じコードベースの使用が可能になります。他のスマートコントラクト実装では、2種類以上の言語の使用が必要とされるケースが多く、効率が下がるとともに深刻なミスを生むリスクが高まります。

Plutusの全作業はPlutus GitHubリポジトリで公開されており、Plutus Playground(プルータスプレーグラウンド)テストベッドでは実際にPlutusでスマートコントラクトを作成してみることができます。


Plutusが開発者向けの高次言語であるのに対し、Plutus Core(プルータスコア)はCardano決済層とコンピュテーション層の両方で実行され、スクリプトとブロックチェーン間のやり取りをコントロールする、低次のスクリプト言語です。Plutusで書かれたスマートコントラクトのオンチェーン機能がすべてコンパイルされたPlutus Coreでは、その単純さ、簡潔さを保ちながら、関数型プログラミングの利点がすべて維持されます。Plutus Coreは決済層に実装されますが、可能な限り単純化することで、潜在的攻撃ベクターを最小化し、安全性を向上させます。


Marlowe金融スマートコントラクトを作成するためのドメイン固有言語(DSL)であり、事業家や業界専門家、金融アナリストといった非技術者がアクセスできるようにデザインされています。Marloweを使用することにより、プログラミングの経験が一切なくても、実世界のデータとやり取りできる実行可能なスマートコントラクトを作成し、内蔵のCardanoエミュレーターにデプロイして、最終的にCardanoネットワークに配信することが可能となります。Marloweは必然的に高次言語ではありますが、PlutusとHaskellに構築されており、関数型プログラミングが提供するすべての保証から得られるメリットを、使い勝手の良さを失うことなく享受することができます。

Marloweの全作業はMarlowe GitHubリポジトリで公開されており、ユーザーはMeadowエミュレーターでシンプルなウェブベースのインターフェイスを使用し、金融スマートコントラクトを実際に作成してみることもできます。


PlutusFestは2018年12月、プログラミング言語のPlutusおよびMarloweを公開し促進するため、エディンバラ大学で2日間にわたり開催されました。IOHK開発者による講演やプレゼンテーションには、関心を持つ一般参加者や研究者が出席しました。その多くは録画され、IOHK YouTubeチャンネルで公開されています。


PlutusおよびMarloweプログラミング言語をカバーする2つの無料Mooc(ムーク)コースがUdemyで公開されています。IOHKの社内教育チームが作成、管理を担当するこれらのコースは、PlutusおよびMarloweを使用したスマートコントラクトを試したいと望むすべての人に初歩的なリソースを提供します。


Cardanoにマルチ通貨台帳モデルを導入することにより、ネットワークはERC20に類似した、ただしこれよりコストを削減し、安全性を向上させた方法で、付加的な暗号通貨をサポートすることが可能となります。決済層におけるネイティブサポートにより、複雑なスクリプトシステムは必要ありません。マルチ通貨台帳により、ユーザーは自身の代替可能なトークンをCardanoネットワークで作成できるだけでなく、代替不可能なトークンをトークン化することができ、複数の暗号通貨を含むスマートコントラクトの統合も容易になります。


KEVMは形式手法の検証を経た、高質なスマートコントラクト仮想マシンであり、イーサリウム仮想マシン(EVM)と互換性を持ちます。K framework(Kフレームワーク)で形式仕様記述を行ったKEVMは、設定やEVMの移行ルールなどの要素に形式手法のセマンティクスを用いることで、スマートコントラクト用仮想マシンとしての安全性を向上させています。 IOHKは現在他の優先事項に注力するためにK frameworkプロジェクトとのコラボレーションを中断していますが、そのビジョンを高く評価しており、今後再び参加する可能性もあります。


IELE(イエレ)はKEVMの研究を基にした仮想マシンです。低次プラットフォームとして、IELEは多言語間で単一のガスモデルを使用することにより、高次言語からスマートコントラクトの翻訳および実行を可能にします。Solidityコードのコンパイルターゲットとして、またはCardanoに直接統合することにより、IELEはスマートコントラクトの相互運用性を可能にし、イーサリウムの統合を実現するための保証性の高い経路を提供する可能性を持ちます。IOHKはIELEプロジェクトに多大な貢献を果たしましたが、他の優先事項に注力するために現在このコラボレーションを中断しています。ただし将来的にプロジェクトに再び参画する可能性について非常に前向きに捉えています。


Medusa

github.com/input-output-hk/plutus

View historical and real-time GitHub commits


探検する