Marlowe(マーロウ)とは?
Marloweは、誰もがコーディングできるブロックチェーン上の金融契約を実現します。これは、金融契約の記述と実行のためのドメイン特化型言語(DSL)であり、ソフトウェア開発、ブロックチェーン、スマートコントラクトに関連する専門的な知識なしに、ユーザーが契約を便利に記述および管理できるようにするものです。また、この簡単に学べる言語であるMarloweを使って、金融商品のモデル化を学ぶことができます。これは、ピアツーピア融資、差金決済(CFD)、その他類似の商品をサポートする分散型金融(DeFi)のためのプラットフォームです。Marloweの契約(コントラクト)は、金融取引、開発プラットフォームに最適化されているため分かりやすく、金融サービスプロバイダーがスマートコントラクトとブロックチェーン技術の専門知識を構築するための速やかな道のりを確保することができます。
Marloweは、過去10年ほどの間に、学者や、金融分野で契約ソフトウェアを提供しているLexiFiなどの企業によって普及した金融契約DSLをモデルとしています。Marloweの開発では、これらの言語をブロックチェーン上で動作するように適応させました。MarloweはCardanoブロックチェーンの決済層(SL)に実装されていますが、Ethereum/Solidityや他のブロックチェーン・プラットフォームにも同様に実装できます。この点では、JavaやC++といった現代のプログラミング言語と同様に「プラットフォームに依存しない」言語です。オンラインエミュレータツールであるMeadowは、ソフトウェアをインストールすることなく、ウェブブラウザ上でMarloweコントラクトの実験、開発、対話を可能にします。
また、Marloweは特殊な用途の言語であるため、Marloweのコントラクトは読みやすく、書きやすく、理解しやすくなっています。また、より安全です。いくつかのエラーは書くことが不可能であり、コントラクトを実行しなくてもコントラクトの動作を完全に分析することができます。
Marloweはどんな人が使えるか?
Marloweは、視覚的かつより従来のコードで契約を構築することが可能です。よって、金融契約やビジネスの分野の専門家でありながら、プログラミングのスキルや経験がない人が使用できるように設計されています。金融機関では、顧客や取引先向けのカスタム商品を開発・展開する際などに利用することができます。
Marlowe言語自体は現在、JavascriptとHaskellの両方に組み込まれており、好みや技量に応じてエディタを選択することができます。Javascriptは柔軟で高速、かつ豊富な利用環境を提供します。また、Haskellは独自の利用環境と強固なテストフレームワークを持つ関数型プログラミング言語です。
Marloweは、オラクルなどの実世界のデータと対話でき、契約の参加者は契約フローの中で選択をし、ウォレットなどチェーンの上と下の両方で何が起こるかを決定します。Marloweはブロックチェーンにとらわれず、イーサリアムのようなアカウントベースのモデルや、カルダノの拡張未使用トランザクションアウトプット(EUTXO)モデルの上でスマートコントラクトを表現することが可能です。
Marloweは業界規模のソリューションとして設計されており、金融契約のためのACTUS分類法および標準の例を具体化しています。Marloweで書かれた契約はCardanoや他のブロックチェーンに統合することができます。
Marloweはどのような言語か?
Marloweはコンパクトな言語です。契約ごとに、決められた役割を処理する、数少ない構成要素からなります。これらの役割は、契約の参加者によって遂行されます。
https://iohk.io/jp/blog/posts/2020/10/13/actus-financial-smart-contracts-in-marlowe/ より引用
契約は、少数の構成要素を組み合わせて構築することができ、その組み合わせによって、多くの異なる種類の金融契約を記述し、モデル化することができます。例えば、役割や公開鍵に支払いを行う実行中の契約、役割の1つによるアクション(通貨の預金など)を待ち受けできる契約、オプションのセットからの選択などがあります。重要なのは、コントラクトは、アクションを無期限に待つことはできないということです。設定された時間(タイムアウト)までにアクションが開始されなかった場合、コントラクトは、代替動作、たとえば、コントラクト内の資金の払い戻しなどの救済措置をとることになります。
コントラクトの現在の状態によっては、将来の2つの行動パターンのどちらかを選択することができます。それ以上のアクションが必要ない場合、コントラクトは終了し、コントラクトに残っている通貨は払い戻されます。
コントラクトが実行されると、ブロックチェーン上のアイデンティティである参加者によって、決められた役割が遂行されます。また、各役割はチェーン上のトークンで表され、契約の実行中に役割を譲渡(取引)することができます。
Marlowe Playgroundについて
Marlowe Playgroundは、サンドボックス環境でスマートコントラクトを書くプロセスを開発、シミュレート、テストするために利用できます。これは、HaskellやJavascriptの経験がなくても、あらゆる開発者がCardano上で金融商品を構築できるようにすることを目的としています。チュートリアルも用意されています。これらのチュートリアルでは、コントラクトの例やMarloweの概要、コントラクトのモデル化方法について説明されています。
Marlowe Playgroundはエンドツーエンドの金融スマートコントラクトを開発するための媒体です。スマートコントラクトのコードを書くだけでなく、シミュレーションによる予備的な反復設計、正式な検証機能、スマートコントラクトのテスト機能などを開発者に提供します。これらの機能と金融専用のDSLの組み合わせにより、コントラクトの構築が簡単でわかりやすく、かつ安全で検証可能で厳格にテストされることが保証されます。
Marlowe Playgroundを使用する際には、3つのオプションから選択することができます。Marloweのテキストで直接書くだけでなく、ビジュアルプログラミングツールBlocklyを使って、異なる要素を表すブロックをはめ込んでコントラクトを作成することができます。
また、Marloweのコントラクトをより読みやすく簡潔に記述するために、組み込みのHaskellエディタやJavascriptエディタもお好みでお使いいただけます。契約が書かれると、その契約によって行われた支払いが失敗する可能性があるかどうかをチェックするなど、その動作を分析することができます。また、参加者の行動をシミュレートして、契約がどのように動作するかを段階的に確認することもできます。
Marloweの学習について
こちらの記事や動画を翻訳しつつ進めてみてください。
Marlowe Playground video playlist
Resources for developing and deploying Marlowe contracts
コメント