ブログ > 2022 > April > Marloweに新たなコマンドラインインターフェイスを導入

Marloweに新たなコマンドラインインターフェイスを導入

CLIを使ったトランザクションの送信方法とMarloweコントラクトとの通信方法を学ぼう

2022年 4月 19日 Niamh Ahern 8 分で読めます

Marloweに新たなコマンドラインインターフェイスを導入

Marloweは、Cardanoを金融界へ普及させる触媒となる、製品スイートを備えたオープンソースのドメイン専用言語(DSL)です。恒常的に強化、更新を行っていますが、コマンドラインインターフェイス(CLI)はまさに必要不可欠なもの。そこで、新しいCLIツールを使って、Marloweとのやり取りをもっと便利にしました。この新ツールは、コマンドラインからコントラクトを実行したいというユーザー向けに、シンプルなワークフローをサポートします。これでユーザーは、ツールがコントラクトのインプットやステータスの詳細を管理している間、Marloweコントラクトに集中することができます。また、Plutusの多くの側面やCardanoノード自体とのやり取りを自動化して、ユーザーの負担を軽減します。

目的

新しいMarlowe CLIツールで、社内でのMarloweコントラクトの開発やテストが容易になります。これには、トランザクションサイズの測定やトランザクションの送信、ウォレット統合のテスト、バリデーターのデバッグが含まれます。また、Cardano開発コミュニティがCardano CLIツールを、ライブラリーやフォーセット、トークンミント、マーケットプレイスなど、さまざまなサービスに統合してきた方法と類似した方法で、外部開発者によるMarloweコントラクトのワークフローやツールセットとの統合も可能にします。

これは、Marloweの公式立ち上げに先立つ、コードのストレステストにおいても重要なステップです。テストネット、そしてのちにはメインネットにおける機能性への早期アクセスが提供されるためです。

さらに、この新しいCLIツールは、ユーザーがMarloweの使い方に素早く馴染むためのトレーニングツールとしても役立つことになるでしょう。今後数週間以内に開講が予定されているMarloweパイオニアプログラムで、使用方法を披露する予定です。コースの開校日や申し込み方法の詳細は、Marlowe Discordチャネルでお知らせします。

Marloweコントラクトの実行

marlowe-cliコマンドは、Marloweコントラクトを実行するための複数のきめ細かい、ハイレベルのワークフローをサポートしています。が、ここでは、MarloweによるPlutus言語の使用の詳細を概念化するワークフローに焦点を当てます。ツールは、他のCardanoツールと同様に、標準のCabalまたはNixコマンドを使用してインストールします。基本的な使用に必要なのは、いくつかのコマンドのみです。

  • テンプレートからサンプルコントラクトを作成する
  • 作成トランザクションを送信できるようにコントラクトを初期化する
  • コントラクトにインプットを適用する
  • コントラクトから資金を引き出す
  • 作成、インプットの適用、引き出しからトランザクションを送信する
  • コントラクトの履歴を問い合わせる

図1:コマンドラインでMarloweコントラクトを実行するためのハイレベルワークフロー。四角の囲みはmarlowe-cliコマンドの実行に対応

Marloweコントラクトを設計する方法は複数ありますが、最も簡単なのはCLIのtemplateコマンドまたはMarlowe Playgroundを使用することです。HaskellやJavaScript、その他、コントラクトとその初期ステータスを具体化するために必要なJSONファイルを出力できる言語を使用して、プログラミングによりコントラクトを作成することもできます。CLIのtemplateコマンドは単純なテストコントラクト、エスクローコントラクト、ゼロクーポン債、トークンスワップ、カバードコールを作成することができます。Playgroundには8つのサンプルコントラクトがありますが、ここでMarloweコントラクトをカスタマイズして設計することもできます。

コントラクトが作成され、初期ステータスが定義されると、CLIのinitializeコマンドが情報と、これが実行されるCardanoネットワークの詳細をセットにします。結果作成された単一のJSON-format.marloweファイルには、Marloweコントラクトの実行や研究をするために必要な情報がすべて入っています。コントラクトとその現在のステータスに加えて、ここにはMarloweバリデーターのアドレス、シリアル化したPlutusスクリプトのコピー、ネットワークの詳細が含まれています。このJSONファイルから情報を抽き出して調べることは、Marloweが機能する仕組みについて学ぶ役には立ちますが、Marloweコントラクトを実行するためには不要です。この必要な情報がバンドルされると、CLIのexecuteコマンドにより、実際のPlutusトランザクションがCardanoブロックチェーンに送信され、トランザクションについての統計をプリントし、確認を待ちます。

インプットをコントラクトに適用すると、プロセスは一層シンプルになります。CLIのprepareコマンドで、コントラクトへの資金のデポジットを設定したり、ここで選択をしたり、これを通知したりできます。これは、先の.marloweファイルをインプットとして使用し、新しいファイルをアウトプットとして生成します。これを、executeコマンドで送信します。prepareコマンドは、インプットが違法な場合やタイミングがずれている場合、ユーザーに警告します。

Marloweコントラクトで支払われた資金の引き出しはwithdrawコマンドで実行できます。ここでは、資金を受け取るアドレスを選択できます。アドレス選択により、資金の支払いに柔軟性が提供されます。アウトプットアドレスはコントラクト自体に組み込まれません。

コントラクトの履歴のクエリもコマンドラインから実行できます。または、Cardanoブロックチェーンエクスプローラーを使用することもできます。

展望

コマンドラインツールは、Marloweコントラクトに関係するPlutusバリデーター、データム、リディーマー、ハッシュの作成や操作のための高度な機能も提供します。コントラクトはまた圧縮も可能(マークルハッシュ使用)。これで、Cardanoプロトコルによるトランザクションサイズやメモリー制限よりもはるかに大きなコントラクトの実行も可能になります。CLIを使って、PABでMarloweコントラクトを実行することもできます。UTXOを管理する必要がなくなり、代わりにウォレットに管理を任せることができます。

このCLIツールは、開発者のニーズが生じるにつれ、これに合わせて定期的に強化されます。Marloweワークフローの単純化を進めることに加えて、ツールのコントラクトをテストする機能は拡張されています。

Marlowe Discordチャネルに参加し、議論に加わり、質問をし、Marloweの最新情報を入手してください。

本稿の執筆に協力いただいたMarloweのソフトウェアエンジニア、Brian Bushに感謝します。