【django,vuejs】スーパーノード報酬の仕組み応用した、小規模な報酬システムを作る
はじめに
https://www.masternodebank.com/ という、仮想通貨をレンディングして共同でPoSのノードを立てて報酬をもらうサービスを提供しています。
売買予定のないXEM, 他社にレンディングしているけど全然貸し付けてもらえないXEMなどありましたら、最大年利2% でお預かり致します (露骨な宣伝)。
また、このサイトのロゴのコンペを絶賛開催中です。(2017年12月25日迄)
優勝賞金 1500xem の他に、参加賞 10xem もありますので、奮ってご応募頂ければと思います。
作るもの
今回は、NEM のノード報酬である スーパーノード報酬の仕組みを応用して、小規模な報酬システム( マイクロ報酬 )を作ります。
対象は NEM を利用したWEBサービス(アプリ含む) です。
作るもの: PicoReward
使い方
1. メッセージ送信
宛先アドレス: ncns5e-oyh2vx-7dnzyf-kcwaq4-dpoxvv-t3r26h-kjnw
メッセージ: enroll ドメイン
で送信します(実例 )
2.サービス管理者であることの表示
対象ドメインの/meta.json
に ドメインと送信アドレスを記載して送信者が管理しているサービスであることを明記します。
{ "meta": { "domain": "www.masternodebank.com", "twitter": "@masternodebank" }, "currency": { "nem": "NCVKXMEI4UAN3UYXU5EBYKAXR3TB2T3JALMUNH6T" } }
3. サービスの監視と報酬付与
定期的にチェックが行われ、チェックにパスすると報酬がもらえます。
ちなみに、現状1までしかできてません。
2018年1月から稼働予定ですが、サービスをご登録頂ければ幸いです。
なぜ作るのか
このツールを作るモチベーションはこんな感じです。
- NEMを使ったツール・アプリ・店舗がまだまだ少なく、トランザクション数も微々たるものなので活性化させたい
- 作った人に一時的に報酬が入ることがあるが、継続するためのプラスのインセンティブが少ない
- 一定の品質以下(セキュリティ対策されてないとか、レスポンスが激重とか)のものを無くしたい
- 沢山の人に寄付するのは面倒なため、寄付を受ける人が偏ってしまいがち
スーパーノード報酬の仕組み
そもそもスーパーノード報酬とは何なのか、説明したほうが良いかもしれません。
スーパーノード報酬とは、安定して提供しているNEMのノードに対して、NEM 財団のプールからノードに対して支払われる報酬です。
ハーベスティングとは別に、多くても1日1回支払われます。
スーパーノード報酬は次のようなフローで構成されています。
- NEMノードを立てる
- NEM のメッセージを利用してスーパーノード報酬の申請をする
- スーパーノードとしての1日4回のテストに合格する
- テスト内容は 残高, ブロック長, 応答速度, ネットワーク帯域,パッケージのバージョン
- テストに1度でも失敗すると翌日の報酬は無し。
- 翌日にノード報酬が財源から送信される
- 報酬総額は1日あたり全体で 140,000xem .
- テストに合格したスーパーノードに平等にに支払われる.
3
から繰り返し- もしSNを辞める時は, NEM のメッセージを利用して辞める旨を申請をする
- あるいは, 定期的にスーパーノードの棚卸しが行われる。
平たくいうと、ちゃんとサーバ管理やってたら、報酬あげるよ、ということですね。
こうしたスーパーノード報酬はノード運営者が適正なスペックのサーバで遅延のないネットワークを維持するための動機付けになっています。
マイクロ報酬の仕組み
マイクロ報酬のフローを考えてみます。
- サービスを作る
- NEM のメッセージを利用して,マイクロ報酬の申請をする.
- マイクロ報酬としてのテストに合格する.
- 所有者と報酬先が一致しているか
- 応答速度
- セキュリティ対策
- パッケージのバージョン
- 翌日にノード報酬が財源から送信される
3
から繰り返し- もしマイクロ報酬を辞める時は, NEM のメッセージを利用して辞める旨を申請をする
- あるいは, 定期的にスーパーノードの棚卸しが行われる。
作ってみて
- 送金部分は秘密鍵を触るので、サーバ有りきで構築するほうがシンプル。
- python の nem パッケージがない(古い)ので、作り直さねばならない。
- ドメインの状態が変わるようなサービスなのでステートをもってくれたら、個別のDBを用意しなくて良い。
- websocket を使って即時に登録確認したかったが、5分に一度の定期処理で済ませています。
- js 力がたりなかった。
- ソースコード公開はしばしお待ち下さい。。。