見出し画像

Epoch#232 | Marloweチュートリアル5章

こんにちは!第5章は構文の基礎的なことが書いてありそうでずっと気になっていました。If文などが出てきて、いわゆるプログラミングのパーツの説明になっています。実は小さな勉強会がありそこで簡単な発表をするため、先に画像が多くて目を引く6章をみてみたのですが、実はここみておくとよかったかもしれません。

5. Marloweのステップバイステップ

Marloweはコントラクトを構築するための5つの方法を持っています。そのうちの4つ、Pay、Let、If、Whenは、より単純なコントラクトから複雑なコントラクトを構築します。5つ目のCloseは単純なコントラクトです。実行の各ステップでは、新しい状態と継続コントラクトを返すだけでなく、効果(支払い)と警告も生成することができます。

これらのコントラクトを説明する際には、Marloweの観測アクションについても説明します。それらはどのように進化するかを制御するために、外部の情報や実行中のコントラクトへのインプットを提供することで使用されます。

5.1.支払い

支払のコントラクト「Pay a p t v cont」は、トークン t の価値 v の支払いを口座 a から受取人 p に行います。pは契約の参加者の一人か、コントラクト内にある他のアカウントです。値 v が負の場合や、支払いを完全に行うには口座の残高が十分でない場合には(口座内にある他のトークン残高が正の値である場合でも)警告が表示されます。後者の場合は、(利用可能なすべてのお金の内)部分的な支払いが行われます。継続コントラクトとは、コントラクトに記載されている「cont」で与えられます。

5.2. Close

コントラクトのCloseは、契約をクローズ(または終了)することを提供します。実行される唯一のアクションは、正の残高を含むアカウントの所有者に払い戻しを提供することです。これはステップごとに1つのアカウントに対し実行されますが、すべてのアカウントが1つのトランザクション内で返金されます。

コントラクトの他の形態を議論する前に、値、観測、およびアクションを記述する必要があります。

5.3. 値、観測、およびアクション

には、「現在のスロット番号」、「口座内のトークンの現在の残高」、そしてすでに行われている選択を含む、時間とともに変化するいくつかの量が含まれます。これらを揮発性の値と呼びます。値は、足し算、引き算、否定を使って組み合わせることもでき、観測を条件とすることもできます。

観測は、値を比較することで得られるブール値であり、標準のブール演算子を使用して組み合わせることができます。また、任意の選択がなされたかどうかを(特定の識別された選択に対して)観測することも可能です。

観測は、実行の各ステップで値を持ちます。一方、アクションは実行中の特定のポイントで発生します。前述したように、アクションは
・お金を預けること。
・オラクル値(次項で説明します)を含む様々な選択肢の中から選択をすること。
・何らかの外部値を通知すること。
になります。

5.4. オラクル

オラクルはCardanoブロックチェーン全般を対象に開発が進められており、MarloweでもCardano上で利用できるようになる予定です。今回、私たちはオラクルのプロトタイプを導入しており、これはMarlowe プレイグラウンドに実装されています。

我々はオラクルを、特定のオラクルの役割である「クラーケン」を持つ参加者が行う選択としてモデル化しています。

コントラクトの役割が 「クラーケン」であり、その役割が「adausdt」のような選択をする場合、プレイグラウンドのシミュレーションでは、この選択は、Cryptowat.chからのデータに基づいて、ADA/USDの変換レートの現在の値で、事前に充填されます。すべてのサポートされている通貨ペアは、ここで見つけることができます: https://api.cryptowat.ch/markets/kraken

我々は選択肢の入力として整数のみをサポートしていることに注意してください。では、現在のADA/USD価格は0.098924ドルですが、どうやって使うのでしょうか?単純に価格を10の8乗倍しますので、価格は9892400として表示されます。計算をした後、値を「スケール」(拡大縮小)することができます。

たとえば、オラクル価格を使用して、12 ADAでUSDTを購入したいとします。

価格を取得します。

When [Choice (ChoiceId "adausdt" (Role "kraken") [Bound 1000000 10000000] ...

USDTの価格を計算します。

Let (ValueId "amount of USDT in microcents")
(MulValue
(Constant 12)
(ChoiceValue (ChoiceId "adausdt" (Role "kraken"))))

結果を10の6乗でスケールダウンして、USDTセントでの金額を取得します。

Scale (1%1000000) (UseValue (ValueId "amount of USDT in microcents")

5.5. If

条件付きの「If obs cont1 cont2」はこのコンストラクタが実行されたときの観測obsのブール値に応じて, cont1またはcont2として継続します。

5.6. When

これは「When cases timeout cont」という形をとっており、コントラクトの中でも最も複雑なコンストラクタです。 これはアクションでトリガーされるコントラクトで、特定のスロットで発生したり、発生しなかったりする可能性があります。様々なとられるアクションに応じて何が起こるかはコントラクトのなかの「cases」に記載されます。

「When cases timeout cont」のコントラクトでは、リストの「cases」は、ケースのコレクションが含まれています。それぞれのケースは、「Case ac co」の形をしています。「ac」はアクション、「co」は継続(他のコントラクト)です。特定のアクション、例えば 「ac」 が発生すると、状態はそれに応じて更新され、コントラクトは対応する継続 「co」 として継続されます。

コントラクトが最終的に進行するようにするために、コントラクト 「When cases timeout cont」 はスロット番号であるタイムアウトに達すると 「cont」 として継続します。

5.7. Let

Letコントラクトの「Let id val cont」は、識別子を使ってに名前を付けることができます。この場合、「val」という表現は評価され、「id」という名前で格納されます。その後、コントラクトは「cont」として続けられます。

省略形を使用することができるだけでなく、このメカニズムは、時間とともに変化するかもしれない値を、コントラクト実行の後で使うために、キャプチャして保存しておくことができることを意味します。例えば、コントラクトが実行された特定の時点の、石油価格やスロット番号などです。

5章は以上です。

Rewards

Epoch#232になりました!ということで今回(Epoch#230分)の報酬結果です。今回の報酬も新しいプールでの報酬分配になります。内容的には5%あたりで安定です。また、Kパラメータの件もあり新しいプールが急に増えていますが、一方でIOGのプールが1つを残してリタイアとのことです。

自分の委任量の場合、シミュレータによると年間2,056.081174 ADA、ROS: 5.1402%になります。

Epoch: 232
---
Total Staked: 19.95b (62.49%)
Active Pools: 1,228
Total Stake Addresses: 86,322
Rewards: 33.782 ADA
Total Rewards: 726.405 ADA
ROS: 5.69 %
Lifetime ROS: 5.41 %

こちらの鯨の項で書いたように、Cardano Foundationが委任を移動したプールへついて行って(委任して)様子をみています。前々エポックで、鯨は他のプールへ移動しましたが、その後も様子をみてみました。もうしばらくお世話になろうと思っていたのですが、確認してみたいことがあり、現在は急遽12/6に飽和するであろうプールへ委任を移動しています。

ADA/USD

画像1

暗号資産業界一回盛り上がると手が付けられなくなりますが、ここらへんで一旦利確が入った感じでしょうか。赤いキャンドルの実態がちょうどサポートされそうな0.14ドルあたりまで押しあげられている状態です。50日移動平均線(上段緑)が100日移動平均線(上段黄色)、200日移動平均線(上段緑)をうわ抜けています。ここからはADA/USDはサポートされそうなラインが下にたくさん見えるので極端な下落は可能性が低いように見えます。RSI(中段黄緑色)は売りシグナルが出ています。2か月前に点灯した買いシグナルで買っていればよいトレードだったのではないでしょうか。

※ 日足チャートで長期目線で考えています。あくまで一つの見方なのでトレードは自己責任でお願いします。

-----

最後まで読んでいただき、本当にありがとうございます。
役に立ったと思っていただけたら、スキや、Twitterのフォローをしていただけると幸いです。

よろしければ、過去のブログのまとめページもご確認をお願い致します。(ステークプールの宣伝を含みます)

この記事が気に入ったらサポートをしてみませんか?