遊ぼう Plasm Testnet V3 ② Dapps Rewards

Takumi Yamashita
8 min readDec 28, 2019

--

Photo by freestocks.org on Unsplash

今回は 12/25 にリリースされた Plasm Testnet V3 の Dapps Rewards について説明していきたいと思います!

前回の記事はこちら↓になります。

今回デモをしていく Dapps Rewards はDapps(Plasma アプリケーションを含む)開発者に報酬を与える仕組みです。

百聞は一見に如かず。とにかくやっていきましょう!

準備

前回の記事に従って、コントラクトをデプロイするところまでやってみましょう!サイドバーから DappsStaking を選択して以下のような状態であれば準備完了です!

DppsStaking board

Dapps Rewards を体験してみよう!

Dapps Rewards の大まかな流れはざっくりと以下のようになっています。

  1. スマートコントラクトを選んで Staking する。(これを Nominate といいます。)
  2. Staking 量に応じて Nominate した人(以下、ノミネータ)と Nominate されたスマートコントラクトのオペレータは Plasmchain から報酬が与えられます。
Dapps Rewards の流れ

では、実際にやってみてましょう!

① スマートコントラクトに Nomiante しよう!

DappsStaking -> Account actions を選択します。まだ Stake していない場合、下のような画面が表示されます。ここで右上の + New stake と書かれたボタンを押します。

DappsStaking -> Account actions -> + New stake

すると以下のような画面が現れるため、以下の4つの項目を埋めます。

  • Stash account
    誰の持っているトークンを扱うかを指定します。”口座”のようなものです。
  • Controller account
    どのアカウントの権限で操作するかを指定します。セキュリティ的には Stash account と Controller account は別のアカウントを使うことが好ましいです。今回はデモなので同一のアカウント(BOB)を使います。
  • Value bonded
    Stake に利用するトークン量を指定します。
  • Payment destination
    Rewards の振込先を指定します。
Bonding

入力を終えたら、Bonding -> Sign and Submit を押してトランザクションを発行します。すると下のように先程指定した項目が反映された内容のカードが表示されます。

指定した金額と bonded, 振込先と rewards が一致している

これで、トークンをロックすることに成功しました。しかし、これだけでは Nominate したことになりません。続いてカードの右側の Nominate ボタンをクリックします。

すると、以下のようなポータルが現れます。ここでは Nominate する対象のスマートコントラクトを選ぶことができます。前回のデモでアップロードした “SAMPLE.WASM” を選びましょう!この時、コントラクトの canBeNominate のパラメータを Yes にしているコントラクトしか選ぶことができないことに注意しましょう!

Nominate -> Sign and Submit でトランザクションを発行します。しばらくすると以下のようにカードに Nominating という項目が現れ、先程 Nominate したスマートコントラクトが表示されます。

これで、スマートコントラクトへの Nominate が完了しました!

② Dapps Rewards を受け取ろう!

これはとても簡単です!待ちましょう!Dapps Rewards は Era と呼ばれる特定の周期おきに発行されます。各 Era の最後に Plasmchain では以下の処理を行います。

  1. Staking が有効化されたノミネータとスマートコントラクトのオペレータに報酬を支払います。
  2. この Era 中に新たに追加された Nominate 情報から Staking を有効化します。

つまり、Era1 での Nominate は Era1 終了時に有効化され、Era2 終了時に報酬を受け取ることができます。

この Era の間隔はデフォルトで約1時間程度です。つまり、長くても2時間ほど待てば報酬を貰えるでしょう!!

いやいや、デモでそんなに待てないと。

Local Node を使った場合、この Era を強制的に動かすことで待たずに報酬を貰う過程までをスキップできます!以下ではそのやり方を説明します!

サイドバーから Extrinsics を選び、ルートユーザである ALICE から以下のトランザクションを発行します。Sudo(forceNewEra())。

このトランザクションを発行することで、一度だけ Era を強制的にすすめる事ができます。Era が更新されたかどうかは Chain state から確認することができます。plasmStakingforceEra() を参照して ForceNew であれば Era が更新されておらず、NotForcing であれば Era が更新されています。

Era が進んでいるかの確認

数分ほど待つと Era が更新されるため、DappsStaking -> Staking overview を表示すると以下のように SAMPLE.WASM に先程の Nominate が有効化されていることが確認できます。

また、サイドバーの Accounts からこの時点での ALICE と BOB のトークン量を確認してみてください。

再度、 前述した方法で Era を強制的に進めてみましょう。そしてもう一度 ALICE と BOB のトークン量を確認すると…

少々見づらいですがトークンが増えている事がわかります!

ちなみに、どのようなアルゴリズムでトークンの増量が決まるかについて知りたい方はこちらの記事をご覧ください。大雑把には Staking した/された量に比例した報酬がもらえます。そして、ノミネータよりもオペレータのほうが多く報酬をもらえます。

以上で今回のデモを終わります!お疲れさまでした!

まとめ

  • Dapps Staking を体験しました!
  • Plasm ではスマートコントラクトの所有者に報酬を支払う仕組みがあります!
  • これはユーザの Nominate によってもらえる報酬が変化します!

今回と前回のデモを介して Plasm の新機能をざっくりと体験できました。しかしながら、まだ各機能にはいくつかの追加の要素があります。これらについては追ってアップデートしていきますので楽しみにしていてください!

Contact

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

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

Discord or Telegram.

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

--

--