以下はIOGブログに掲載された記事「Introducing the new command line interface tool for Marlowe」を翻訳したものです。
Marloweの新しいコマンドラインインターフェースツールの紹介
CLIからトランザクションを送信し、Marloweコントラクトと対話する方法について説明します。
by Niamh Ahern 2022年4月19日 5 mins read
Marloweはオープンソースのドメイン特化型言語(DSL)で、金融におけるカルダノの採用を促進するコミュニティ向けの製品群を備えています。常に機能強化や更新が行われており、コマンドラインインターフェース(CLI)はまさになくてはならないものです。そこで、新しいCLIツールを使って、より便利にMarloweと対話する方法を作りました。この新しいツールは、コマンドラインからコントラクトを実行したいユーザーのために、わかりやすいワークフローをサポートします。このツールを使えば、Marloweのコントラクトそのものに集中でき、コントラクトの入力と状態の詳細はツールが管理します。さらに、Plutusの多くの側面とカルダノノード自体とのインタラクションを自動化し、ユーザーの負担を軽減しています。
目的
新しいMarlowe CLIツールは、Marloweコントラクトの内部開発およびテストを容易にします。これには、取引サイズの測定、取引の送信、ウォレット統合のテスト、バリデーターのデバッグなどが含まれます。また、カルダノ開発コミュニティがCardano CLIツールをライブラリ、蛇口、トークン鋳造、マーケットプレイスなどの様々なサービスに大きく統合したように、外部の開発者のワークフローやツールセットとMarloweコントラクトの統合も提供します。
また、Marloweの正式なローンチに先立って、テストネットや後のメインネットでの機能や性能に早期にアクセスできるようになるため、我々のコードをストレステストする道筋の重要なステップとなります。
さらに、この新しいCLIツールは、Marloweを使いこなすためのトレーニングツールとしても有用です。数週間後に開始されるMarlowe Pioneers Programで、使い方のデモを行う予定です。このコースの開始時期や参加方法については、Marlowe Discordチャンネルでご確認ください。
Marloweのコントラクトを実行する
marlowe-cliコマンドは、Marloweのコントラクトを実行するための細かいワークフローとハイレベルなワークフローをいくつかサポートしていますが、ここではMarloweのPlutus言語使用の特殊性を抽象化したワークフローに焦点を当てます。ツールのインストールは、他のカルダノ・ツールと同様に、標準的なCabalまたはNixコマンドを使用します。基本的な使い方は、いくつかのコマンドを使うだけだ。
- テンプレートからコントラクトのサンプルを作成する
- コントラクトを初期化し、作成トランザクションを送信できるようにする。
- コントラクトへの入力の適用
- 契約から資金を引き出す
- 作成、入力、出金などのトランザクションを送信する
- 契約の履歴を照会する
図1: Marloweのコントラクトをコマンドラインで実行するためのハイレベルなワークフロー。各長方形は、marlowe-cliコマンドの実行に対応する。
Marloweの契約を設計する方法はいくつかありますが、最も簡単なのはCLIのテンプレートコマンドかMarlowe Playgroundを使う方法です。また、HaskellやJavaScriptなど、コントラクトとその初期状態を具現化するJSONファイルを出力できる言語であれば、プログラム的にコントラクトを作成することも可能です。CLIのテンプレートコマンドは、単純なテスト契約、エスクロー契約、ゼロクーポン債、トークンスワップ、カバードコールを生成することができます。Playgroundには8つのコントラクト例が含まれていますが、これを用いてMarloweのカスタムコントラクトを設計することもできます。
コントラクトが作成され、その開始状態が定義されると、CLIのinitializeコマンドはその情報を、実行されるCardanoネットワークの詳細と一緒にバンドルする。出来上がった1つのJSON形式の.marloweファイルには、Marloweコントラクトを実行したり研究したりするのに必要なすべての情報が含まれています。コントラクトと現在の状態に加え、Marloweバリデーターのアドレス、Plutusスクリプトのシリアライズコピー、ネットワークの詳細が含まれています。このJSONファイルから情報を調べたり抽出したりすることは、Marloweの動作を知る上で有用ですが、Marloweのコントラクトを実行する上では必要ありません。この必要な情報が束ねられると、CLIの実行コマンドは実際のPlutusトランザクションをCardanoブロックチェーンに送信し、トランザクションに関する統計を表示し、確認を待ちます。
コントラクトへの入力の適用は、よりシンプルなプロセスで行われる。CLIのprepareコマンドでは、コントラクトへの資金の入金、コントラクトでの選択、コントラクトへの通知を設定することができます。これは、前の.marloweファイルを入力として受け取り、新しいファイルを出力として生成し、executeコマンドで送信することができます。prepareコマンドは、入力が不正であったり、タイミングが悪かったりすると、警告を出します。
Marlowe契約で支払われた資金を引き出すには、withdrawコマンドを使用します。出金先アドレスは、契約そのものに「ハードワイアード」されているわけではないので、アドレス選択により柔軟に出金することができます。
コントラクトの履歴の照会は、コマンドラインから行うこともできるし、Cardanoブロックチェーンエクスプローラーを利用することもできる。
展望
コマンドラインツールは、Marloweのコントラクトに関わるPlutusバリデータ、データム、レディーマ、ハッシュを作成・操作するための高度な機能も提供します。また、コントラクトは(Merkleハッシュを使用して)圧縮することができ、Cardanoプロトコルのトランザクションサイズとメモリの制限をはるかに超えるサイズのコントラクトを実行することが可能になる。また、CLIを使用してPAB上でMarloweコントラクトを実行し、UTxO管理の必要性をなくし、代わりにウォレットに管理させることも可能です。
このCLIツールは、開発者のニーズに合わせて定期的に拡張されています。Marloweのワークフローをさらに簡素化するだけでなく、このツールのコントラクト テスト機能も拡張されています。
Marlowe Discordチャンネルに参加して、ディスカッションや質問をしたり、Marloweの最新ニュースを聞いたりしてください。
このブログを書くにあたり、MarloweのソフトウェアエンジニアであるBrian Bushに感謝します。