Plasm NetworkのTrading Moduleを動かす

# Plasm Networkとは
- [**Stake Technologies**](https://stake.co.jp/)が製造しているレイヤー１ブロックチェーンです。
- 私は自分でブロックチェーンのネットワーク、並びにブロックチェーン上で動作すアプリケーションを設計・実装するために、Ethereumを勉強している経過で出会いました。
- 彼らの製品は物凄いと思っていて、「自分のシステムを作る時は是非Plasm上で」と思っていて、プライベート時間に勉強させて貰っています。
- そんなこんなで、気持ちだけは、凄く応援しています。

# きっかけ
- Plasmの[「Operator Tradingのチュートリアル」](https://docs.plasmnet.io/workshop-and-tutorial/operator-trading)をやった時に、「コントラクトの所有権の移転には支払いが伴うよな？」と思って、Plasmのコミュニティで質問させて頂いたのがきっかけです。
- そこで「Trading Moduleというものが既にあるよ」と教えて貰ったので、動かしてみました。

# 環境＆準備
- 環境としては、私はPlasm Nodeの「origin/add/dusty-release-1.1.0」を自分のPCにクローンしてビルドして使いましたが、試すだけなら、上述の「Operator Tradingのチュートリアル」にあるようにdocker環境でやるのが手軽です。
- SmartContractのwasm、jsonファイルもこのチュートリアルに従って準備しておいて下さい。

# 動かす
## アカウントの状態を確認
- まずはアカウントの状態を確認します。
<img width="780" alt="1.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/b6459397-ea6b-47f3-72f8-cb75c9257a1a.jpeg">

## コントラクト所有者の確認
- 準備でデプロイしたコントラクトの所有者を確認します。「Bob」です。
- ※私は記事を書く前に一度「Alice」から「Bob」にトレードしているのですが、気にしない下さい。
<img width="765" alt="2.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/46fde5b4-ca34-5d58-34e2-fb88554958aa.jpeg">

## 所有権移転の申込
- 次に、左メニューの「Extrincs」を選択します。
- 以下の画面のように選択します。
- 意味は、「Charlie」が「Bob」に値段「10,000Dev」でコントラクト「Sample」を売ってほしいと「Offerする（申込）」です。
- ※「expired」は、この申込の期限です。私は、これを動かす時のBlockNumberが「700」くらいだったので、「1000」にしています。
<img width="766" alt="3.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/2df71f40-eadd-fa00-fb2c-0c20b5ac87d6.jpeg">
- トランザクションが成功したら、もう一度アカウントの状態を確認します。
- 「Charlie」の残高が減っていますね。
- これは、先ほどの申込の金額10,000とガス代が減っています。
- ただ、この時点で10,000とられているかといえばそんなことはなく、コントラクトに保管されています。
- その証拠に「Bob」の金額は最初と変化がありません。
- 詳細は[PlasmのTrading Moduleのソース](https://github.com/staketechnologies/Plasm/blob/add/dusty-release-1.1.0/frame/trading/src/lib.rs)を確認して下さい。
<img width="765" alt="4.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/90dc8c57-4316-3c9d-afbb-6253cdd229cd.jpeg">
- 次に、成功した申込の中身を確認しておきます。
- 確かに、申し込んだ通りの内容が保存されていることがわかります。
<img width="758" alt="5.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/614217c9-391f-4f5e-677c-e4858101e45d.jpeg">

## 申込を受入れる
- 次に申込を「accept（受入）」をしてみましょう。
- 「Extrincs」から以下の画面のように入力します。
- 「Charlie」から「Bob」に申込が行われているので、「受入れ」は「Bob」が「Charlie」に対して実施することになります。
<img width="761" alt="6.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/bc3988bd-35a1-7833-9e82-d7814946bbc3.jpeg">
- トランザクションが成功したら、左メニューの「OP Contracts」からコントラクトの所有権が移ったかを確認しましょう。
- 確かに「Charlie」に移転していることがわかります。
<img width="763" alt="7.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/2cf48034-d8ff-f600-9649-f574d76484fa.jpeg">
- 最後にアカウントの状態を確認しておきます。
- 確かに、「Bob」に支払いが行われた事も確認出来ました。
- 10,000払ったのですが、端数は？？？と思いますが・・・
<img width="764" alt="8.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628255/d45953f8-6f62-3504-0a85-60c37ca942ea.jpeg">

# これかも、これからは
- これからも、自分が思い描くアプリケーションを実装する基盤として、Plasmは物凄く良い製品だと思うので、本当に微力ならが応援していきます。
- 興味のある方は、[**PlasmのHPのDiscordの招待リンク**](https://docs.plasmnet.io/v/japanese-v1.0.0/)からジョインして頂ければと思います。
- これからは、少しずつsubstrate、plasmの知識がついてきたので、社会を変革し、世の中の評価を分散化で実現したいという思いを実現する自分のアプリケーションを設計しつつ、Plasm Netowk上で少しずつ実装していきたいと思っています。