遊ぼう Plasm Testnet V3 ① Operator trading

Takumi Yamashita
11 min readDec 27, 2019

--

今回は 12/25 にリリースされた Plasm Testnet V3 の遊び方を説明していきたいと思います。Plasm Testnet V3 は Plasm Network のメインネットと同等の機能を備えます。当然ながら、メインネットでいきなりブロックチェーンの運営を行うリスクは極めて高いです。そのため、私達は幾度かの Testnet を介してブロックチェーンの試運転をしています。

Expect Chaos!

メインネットで致命的な問題が発生する前にその原因を Testnet で突き止めることができれば嬉しいです。私達は Plasm Testnet 上での予想外の動作をユーザが行うことを期待しています!

ところで、 Plasm Testnet はどのような機能があるのでしょうか?

Plasm Testnet は Substrate が保有している既存の機能に加えて独自の機能が大きく分けて3つ存在します。

  • Operator Trading
    コントラクトの所有者を管理する機能です!コントラクトを資産として移転することが可能になります!
  • Dapps Rewards
    Dapps(Plasma アプリケーションを含む)開発者に報酬を与える仕組みです。ブロックチェーンならではのマネタイズモデルをアプリケーション開発者に与えます!
  • Multi-Lockdrop
    複数回の Lockdrop を行います!Lockdrop は他の暗号通貨を一定期間使えなくすることで機会費用を担保にトークンを発行する方法です!これを複数回繰り返すことで多くのトークンホルダーに価値あるトークンを配布します!

Plasm Testnet V3 で実装されている全ての機能についてはこちらをご覧ください。

今回は、 Operator Trading 機能を実際に使ってみましょう!

準備

トークンをまだ持っていな方は Discord の #faucet チャンネルにてトークンを貰ってください!またトークンを貰わず、独自でいろいろ試したい方は開発者向けに Local Node で動かすこともできます。

※ Local Nodeは Docker を用いることで以下のコマンドで簡単に起動することができます。

$ docker pull stakedtechnologies/plasm-node:0.7.0
$ docker run -p 9944:9944 staketechnologies/plasm-node:0.7.0 --dev --ws-external

そして、https://apps.plasmnet.io/ にアクセスし、Settings から リモートノード・エンドポイントで Local Node を選択してください。(デフォルトでは Plasm Testnet v3 が選択されています。)

その他の方法で plasm-node を動かしたい方は Readme を参照してみてください。また、分からないことがあれば Discord でお気軽に聞いてください。

Operator Trading を使ってみよう!

まずは https://apps.plasmnet.io/ にアクセスしましょう!!

① コントラクトをアップロードする

兎にも角にも、コントラクトをアップロードしないことには始まりません。まずは、サイドバーから OP Contracts を選択します。(これは Operated Contracts の略です。)。

コントラクトを自分でアップロードする場合

まだ、コントラクトを1つもアップロードしていない場合以下のような画面を見ることができます。

Upload WASM をクリック

ここで、 Upload WASM を選択すると以下のようなモーダルウィンドウが現れます。

Upload WASM 画面

ink! Contract をコンパイルした WASM ファイルと ABI の JSON ファイルをここで入力します。もちろん、自分でスマートコントラクトを開発してアップロードすることも可能です!がいきなりそれをするのはちょっと敷居が高いですよね。今回は、ink-playground を使って簡単にサンプルコントラクトを用意します!ちなみにこのink! playgroundも弊社が作成してものでありWeb3 Foundationより助成金を獲得しています

Example をダウンロードしてくる。

https://ink-playground.com/ にアクセスします。すると以下のようにサンプルのコードとエディタが表示されるので COMPILE CODE を押してサンプルコードをコンパイルします。

COMPILE CODE をクリック

しばらく待つと、右側に以下のようなメッセージとボタンが現れます。 WASM METADATA と書かれたボタンをクリックすることで WASM ファイル と METADATA ファイルをダウンロードすることができます。それぞれのファイル名は “sample.wasm” と “metadata.json” です。

WASM と METADATA をダウンロード

ダウンロードした “sample.wasm” ファイルを compiled contract WASM に “metadata.json”ファイルを contract ABI にアップロードします。すると、以下のようにパラメータが表示されます。

Ready upload contract binray

あとは、 Upload -> Sign and Submit を押すと下のようにアップロードしたコントラクトコードが表示されます。

これで、コントラクトのアップロードが完了しました!お疲れさまです。

すでにアップロードされているコントラクトを読み込む場合

Local Node ではなく Plasm Testnet v3 のノードを利用する場合、前述した sample.wasm は既にアップロードされています!OpCotracts -> Add an existing code hash から以下のハッシュを code hash の項目にコピペしてください。

0x22b781155b1a9df69ea97ac5ec8f35af8e90f5dc7173439dcab50aafdcd7b5bb

そして、”metadata.json” を contract ABI に入力することで既にアップロードされているコントラクトを読み込むことができます。

② コントラクトをデプロイしよう!

Plasm ではコントラクトをアップロードしただけでは、使う事ができません。アップロードしたコントラクトをデプロイすることで初めてスマートコントラクトとしてチェーン上で動かす事ができるようになります。これは同一の処理をするコントラクトで初期値だけ変更したい時などに、同じコントラクトコードを使い回せるようにするためです。

デプロイの方法は簡単です!先程アップロードしたコントラクトの右上に deploy と書かれたボタンがあります。これをクリックして現れたポータルから適当に値を入力し Deploy -> Sign and Submit をクリックすることでデプロイできます。

※テストネットでコントラクトをデプロイするには約1000PLM程度必要になります。トランザクションが失敗する方は保有しているトークンの量を確認し足りない場合は Discord でトークンを貰ってください。(追記:2020/1/1)

Deploy を押す。

ここで、すでにSubstrate の既存の機能を使ってスマートコントラクトをアップロードした経験がある方は「おや?」と思うかもしれません。上記のポータルにある赤枠で囲われた Parameters とは何でしょうか?

Plasm では Contract ごとに特殊なパラメータを追加で設定することができます。これは前述した別の Plasm のオリジナル機能である「DappsRewards」において非常に大きな役割を担います。しかしながら、Operator Trading ではこのパラメータを特に使わないので、ひとまずcanBeNominated の項目のみを Yes に設定してアップロードしましょう!次回、なにか良いことが起こるかもしれません。😉

コントラクトのデプロイが完了すると、以下のようにデプロイしたコントラクトとそのオペレータが表示されます。最初のオペレータは、Deploy したアカウント(今回は local 環境なので ALICE)と同じになっています。

このように Plasm ではコントラクトの所有者という概念が存在します。そしてコントラクトの所有者をオペレータ(Operator)と呼びます。

③ オペレータを変更しよう!

最後にオペレータを変更してみましょう!これもとても簡単です!サイドバーから Operator という項目をクリックしてください。

すると、以下のようなモーダルが現れます。オペレータを選択するとそのオペレータが保有してるコントラクトのリストが表示されるので、オペレータを変更したいコントラクトを選択してください。そして、新たなオペレータを選択してみましょう。今回は ALICE から BOB に SAMPLE.WASM コントラクトの所有権を移譲します。

ALICE の保有してる SAMPLE.WASM が現れる。

Change Operator -> Sign and Submit を押してしばらく待つと以下のようにコントラクトのオペレータが ALICE から BOB に変更されていることが確認できます。

これでコントラクトを作りその所有権を受け渡すデモが終了しました!お疲れさまです!

まとめ

  • Operator Trading の使い方を学びました!
  • Plasm ではコントラクトの所有権(Operator)という概念があります。
  • コントラクトの所有権はその所有者によって変更可能です。

さて、今回のデモを通してコントラクトの所有権とその変更が出来るようになりました。しかし、コントラクトを所有することで何が嬉しいのでしょうか?Plasm におけるコントラクトの所有者は Dapps Rewards による利益を得ることができるのです!では、 Dapps Rewards はどのような仕組みでどのように使えばいいのでしょうか?それは次回の記事にてデモとともにお伝えします!お楽しみに!

Contact

弊社では Substrate を用いたブロックチェーン開発を一緒に行うエンジニアを募集しています!!また、弊社では Polkadot or Substrate にまつわる共同開発や研修等も行っています。興味ある方はぜひ私の Twitter DM や以下メールアドレスに連絡ください!

https://twitter.com/public_sate
mail: info@stake.co.jp

Discord or Telegram.

もし疑問点や質問がある場合はDiscordかTelegramで質問しください!

P.S. Dapps Rewards の Draft 資料についてこの記事ホワイトペーパーを見ることで詳細が気になる方は見てみてください!

--

--