nemアドベントカレンダー13日目です。13日の金曜日です。
今回は、プライベートチェーン用にカスタマイズしたfushicho-2を動かすところまでを。
折に触れて、NIS1との違いとかに触れながらやっていきます。
elephant-2の時に書いた記事を更新しようかと思ったんですが、せっかくなので新記事として書きます。
nemアドベントカレンダー#2の記事として、この記事の補足記事を書いています。
https://qiita.com/m1z0/items/3560771261318f1c5af4
環境
catapult-service-bootstrap
が動く環境。
必要な依存関係は、リポジトリをcloneするためのgitと、docker/docker-composeのみです。
1. catapult-service-bootstrapをcloneする
こいつをクローンします。逐次アップデートが入るかもしれませんが、基本的には最新版をcloneすれば良いです。
今回は、記事執筆時点での最新版v0.9.0.1
を使用します。
https://github.com/tech-bureau/catapult-service-bootstrap/commits/0.9.0.1
$ cd {任意のフォルダ}
$ git clone https://github.com/tech-bureau/catapult-service-bootstrap
2. プライベートチェーン用にカスタマイズする
デフォルトの設定内容は、パブリックでの動作を想定しているため、
プライベートチェーンを構築する場合はカスタマイズしたくなる点がいくつかあります。
(もちろん全くカスタマイズせずに動かすことも可能です。)
今回は、下記の4項目をカスタマイズします。
カスタマイズする項目
- Txの送金手数料
- モザイクの発行手数料
- ネームスペースのレンタル手数料
- ネームスペースのレンタル期限
1. Txの送金手数料
catapultのTx手数料の仕組みは、NIS1とは異なります。
この辺りの詳しい話は、@44uk_i3さんの記事を参照。
https://qiita.com/44uk_i3/items/53ad306d2c82df41803f#%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E6%89%8B%E6%95%B0%E6%96%99%E3%81%AE%E4%BB%95%E6%A7%98%E5%A4%89%E6%9B%B4
で、本題。
Tx手数料を0にします。いつでもどんな内容でも安心の手数料0にします。
# 23行目
- minFeeMultiplier = 100
+ minFeeMultiplier = 0
ruby/catapult-templates/peer-node/resources/config-node.properties.mt
にも同様の変更を加えます。
2. モザイクの発行手数料
プライベートネットでは、基軸通貨を意識せずにモザイクの発行を行いたい(個人の意見)ので、
モザイクの発行手数料を0にします。
# 75行目
- mosaicRentalFee = 500
+ mosaicRentalFee = 0
ruby/catapult-templates/peer-node/resources/config-network.properties.mt
にも同様の変更を加えます。
3. ネームスペースのレンタル手数料
ネームスペースは、rootNamespace
とchildNamespace
があり、ドメインのような関係になっています。
(NIS1と同様、rootNamespace.childNamespaceみたいな感じ)
rootNamespaceの手数料
手数料 = rootNamespaceRentalFeePerBlock × defaultDynamicFeeMultiplier × 期限(ブロック数)
childNamespaceの手数料
手数料 = childNamespaceRentalFee
# 23行目
- defaultDynamicFeeMultiplier = 1'000
+ defaultDynamicFeeMultiplier = 0
# 96行目
- rootNamespaceRentalFeePerBlock = 1
- childNamespaceRentalFee = 100
+ rootNamespaceRentalFeePerBlock = 0
+ childNamespaceRentalFee = 0
ruby/catapult-templates/peer-node/resources/config-network.properties.mt
にも同様の変更を加えます。
4. ネームスペースのレンタル期限
catapultでは、ネームスペースをレンタルするときにその期限を任意のブロック数で指定できます。
しかし、プライベートチェーンであれば、更新がうまくいかなくてトラブル発生という未来しか見えないので、期限を無限にしたいです。
しかし、ネームスペースのレンタル期限の最大値は、デフォルトでmaxNamespaceDuration = 365d
となっており、この値を無限にすることは出来ないようです。
(以前のバージョンで、nem2-slackで質問したことがあるのですが、「ネメシスブロックじゃないと無期限は無理」という回答でした)
無期限に出来ない!
でも、無期限にしたい!
ということで、実質無期限にします!
# 91行目
- maxNamespaceDuration = 365d
+ maxNamespaceDuration = 365000d
ruby/catapult-templates/peer-node/resources/config-network.properties.mt
にも同様の変更を加えます。
maxNamespaceDuration = 365000d
。つまり、最大期間を1000年とします。
で、ネームスペースをレンタルする時に、レンタル期間=1000年
と指定すれば良いのです。
個人的には、1000年後にネームスペースの期限切れで問題が起こっても知ったこっちゃないので、これでOKとします。
1000年で実質無期限としてますが、1万年でも10万年でも問題は起きないと思います。多分。
3. 実行する
あとは、./cmds/start-all
するだけです。
なんかエラー出るときは、./cmds/setup-network
すれば、大体いけます。
4. おまけ
一度、実行した後にカスタマイズ項目をいじった場合は、一度./cmds/clean-all
しないと反映されません。
ただし、このコマンドはブロックやTxの全てのデータを消去するコマンドである点に注意です。/build
内が全てリセットされます。
NEM/catapultを検討される法人の方へ
こちらからお問い合わせされることをオススメします。
https://mijin.io/
きっと、それぞれにあったベストなカスタマイズ方法を提案してくれるはずです。