catapult ネイティブ通貨のインフレ設定とノード報酬機能


はじめに

catapultにはネイティブ通貨のインフレ設定とノード報酬機能があります。自分でしっかり確認したことがなかったので確認してみました。

ネイティブ通貨のインフレ設定は、そのネットワークのCurrencyMosaic、つまり、手数料の支払いに利用されるモザイクを、設定された量だけハーベスターに供給することで全体の供給量を増やすことが出来る機能です。

ここで、慌てないでもらいたいのですが、この機能は上記URLにも書かれている通り、コンソーシアムやプライベートネットワークにニーズに合った新しいトークン経済モデルを適用可能にする ためのものであって、NEM2になるとxemがビットコインのようにブロック生成者に手数料以外の報酬を与えるようになるわけではありません。

一方、ノード報酬機能は、catapultで新しく追加される機能で、そのノード上でハーベスティングが成功すると、そのブロックに含まれる報酬を、決まった割合だけ自分の好きなアカウントに送ることが出来ます。これはノードを建てて委任ハーベスティング受けつけるノード運営者へのご褒美になります。

それまで委任ハーベスティングを受けるメリットが特になかったので、ボランティアでしたが、これによってノードを建てて委任ハーベスティングを受けることにメリットが生まれます。

環境

catapult 0.5.0.1 (Elephant)
Dockerコンテナイメージ Ubuntu 18.04.2 LTS

設定

config-network.properties

currencyMosaicId = 0x633B5ECAC342D49C
harvestingMosaicId = 0x56BBE4882998AF19

initialCurrencyAtomicUnits = 1'000'000'000'000'000
maxMosaicAtomicUnits = 1'060'000'000'000'000

harvestBeneficiaryPercentage = 10
  • CurrencyMosaicIDは633B5ECAC342D49C
  • 最初は1'000'000'000'000'000から始まる。
  • 最大供給量は1'060'000'000'000'000。これ以上増えることはない。
  • ノード報酬割合は10%。つまり、ハーベスティングした時の報酬の10%を任意のアカウントに振り分けることが出来る。

config-inflation.properties

starting-at-height-1 = 1'000'000'000
starting-at-height-101 = 5'000'000'000
starting-at-height-201 = 0
  • height 1-100 までは1ブロックにつき、ハーベスターに 手数料報酬 + 1'000'000'000与えられる
  • height 101-200 までは1ブロックにつき、ハーベスターに 手数料報酬 + 5'000'000'000与えられる
  • height 201 以降は、手数料報酬のみ

config-harvesting.properties

harvestKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
isAutoHarvestingEnabled = true
maxUnlockedAccounts = 1
beneficiary = E1636CD8579B66FCED24080849CF7B12BC0350C6A068A104923B766B0EC7BF9E
  • ハーベスティングするのはXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX(これは秘密鍵になるのでぼかしている)のみ。
  • harvestKeyに対応する公開鍵は210C95A4B13D066AA39A8B6D5021CE9D67342815409BBF8B7FE0EF9121317E21
  • ノード報酬を与えるアカウントの公開鍵はE1636CD8579B66FCED24080849CF7B12BC0350C6A068A104923B766B0EC7BF9E

今回、トランザクション報酬は一切発生させず、 インフレ設定のみの通貨供給による通貨保有量の変化を観察していきます。

期待される動き

全体の供給量は上記のようになるはずです。

2-100までは、上記図のようになります。101以降も、同様に計算した量が、ハーベスティングしているアドレスとノード報酬送り先アドレスにブロックごとに振り込まれていくはずです。

やってみよう

height 50

height 50までブロックの生成を進めました。問題なく通貨供給量が増えているのがわかります。

height 101

height 101までブロックの生成が進みました。ここから、供給量が変化(増加)していることがわかります。

height 200-201

height 200からheight 201への変化です。私が設定した通り、200から、インフレ報酬が無くなり、ブロックが進んでも報酬が振り込まれていないことがわかります。

さいごに

以上で、新しい機能の挙動が確認が出来ました。

ちなみに、無限に増やすことは出来ません。どこかでインフレ設定を0にしてやる必要があります。(出来てしまうと値がいつかオーバーフローしてしまうよね)