Marlowe Run

Marlowe Pioneers Program (以下、MPP)受講の中でMarlowe Runを動かしてみたのでご紹介です。
2022/05/29時点での画面キャプチャ、URL情報になります。

Daedalus Marlowe Pioneers

講義の中では、開発や検証用のPrivate testnetを使います。なので、まずはその準備です。テストネット用の紫色のDaedalusをダウンロードし、インストールします。(こちらは予め提供されていました)

データベースの同期ができたら、メインネットと同じ手順でウォレットを3つ作りました。

表示例

ウォレットへPrivate testnetのfaucet (test ADA)を送って準備完了です。

余談ですが、送り方は特殊でウォレットアドレスを足したサイトのURLにポストコマンドを打ちます。

curl -X POST https://faucet.pioneers.testnet.marlowe-finance.io/send-money/<WALLET_ADDRESS>

コントラクト作成

https://marlowe-run-marlowe-pioneers.plutus.aws.iohkdev.io/

こちらのサイトはMPP向けに建てられたサイトだと思います。(そのためリンクが切れる可能性あり)今回の投稿ではこちらのサイトを元にMarlowe Runのご紹介をします。

一般向けに公開されているデモは下記サイトのデモからアクセスできます。
https://marlowe-finance.io/

サイトにアクセスします。ここで事前に作成したウォレットを復元します。

ウォレットの名前と、復元フレーズを入力します。(通常はオンラインで復元フレーズを入力することはありません)

Wallet 1の表示例

復元されウォレットの同期ができると、残高が表示されました。

これを他の2つのウォレットも同じように復元してブラウザで開きます。(以下はそれぞれ別人のウォレットを想定したオペレーションです)

Marlowe1(ウォレット名): Party
Marlowe2(ウォレット名): Counter Party
Marlowe3(ウォレット名): Oracle

「Choose a template」からテンプレートを選択します。「Purchase」、「Loan」、「CFD」が用意されています。CFD(差金決済取引)を選択します。

オラクルを想定したウォレット(Marlowe3)でコントラクトを作成してきます。

このコントラクトでは、2つのパーティはADAをコントラクトへデポジットします。パーティは、コントラクトへの参加者で、パーティ(ユーザ)とカウンターパーティ(取引先金融機関)と呼びます。決められた時間が経つと、オラクルにレポートされる資産の価格変化に応じて、ADAは参加者へ再分配されます。

ADAにおける資産の価格が上昇すれば、差金がカウンターパーティのウォレットへ移動します。もし下がれば、差金はパーティのウォレットへ移動します。この時の額はデポジットした額が最大額です。

「Setup」を押します。

下記の通り、ウォレット名と役割を想定して、必要事項を入力します。

Marlowe1(ウォレット名): Party
Marlowe2(ウォレット名): Counter Party
Marlowe3(ウォレット名): Oracle

それぞれの工程ではタイムリミットが決められています。例: コントラクトが始まった後、カウンターパーティはここで決められた時間内にデポジットする必要があります。タイムリミットが過ぎるとコントラクトは閉じます。

パーティとカウンターパーティがコントラクトへデポジットする価格を入力します。「Review」を押します。

「Pay and start」を押して手数料を支払います。

トランザクションの手数料に加え、コントラクト作成のため手数料がかかります。RoleトークンであるPartyはNFTとしてミントされることで表現されます。

オラクル(Marlowe3)の画面

コントラクトが開始されました。

参加者のオペレーション

パーティ(Marlowe1)

パーティ(Marlowe1)の画面

パーティ(Marlowe1)の画面を確認すると、デポジットを促されます。「Deposit」を押します。

「Confirm」を押して、コントラクトに定められている10 ADAとトランザクション手数料を支払います。

カウンターパーティ(Marlowe2)

カウンターパーティ(Marlowe2)の画面

カウンターパーティ(Marlowe2)の画面でデポジットを促されます。「Deposit」を押します。

「Confirm」を押して、コントラクトに定められている10 ADAとトランザクション手数料を支払います。

待ち時間

待ち時間が設定されているので、しばらく待ちます。

ダッシュボード表示例

オラクル(Marlowe3)

オラクル(Marlowe3)の画面

オラクルが5 ADA (5000000 Lovelace)をレポートします。「…」を押します。

「Confirm」を押してトランザクション手数料を支払います。

しばらく待ちます。

再びオラクルのアカウントから資産の価格を入力します。資産の価格が上昇したことをシミュレーションして、10 ADA (10000000 Lovelace)を入力します。

「Confirm」を押してトランザクション手数料を支払います。

ステップ5でコントラクトが完了しクローズします。

ステップ4の詳細を確認すると下記の通りです。

2度目にオラクルにレポートされた価格が5 ADA高かったため、その差益がカウンターパーティの(コントラクト内の)アカウントへ支払われます。その後、パーティとカウンターパーティそれぞれのウォレットへADAが移動されました。

最終的に内部的なウォレットのADAは関係者のウォレットへ全て戻されます。

まとめ

Marlowe Runは背景で動いている仕組みなどは改めて勉強が必要ですが、感覚的に操作するだけで動かすことができました。今後開発が進められ、実際の取引で使われるようになったり、よりユーザに近く使いやすくなるといいなと思います。

blog