fushicho-2でプライベートネットを構築しました。下手くそな図ですが、こんな構成です。
設定変更箇所
例のごとく、デフォルトのままでは動かしません。内容はelephant-2で構築した時と、だいたい一緒です。(今回は、挙動が怪しくなりそうなブロック生成感覚とかはいじってません)
全ノード共通
モザイクのレンタル手数料を0
にします。プライベートネットでいちいち手数料払わなきゃいけないの鬱陶しいですからね。
- mosaicRentalFee = 500
+ mosaicRentalFee = 0
ネームスペースのレンタル手数料も0
にします。catapultでのネームスペースのレンタル手数料は、期限(ブロック数で指定)に応じた金額になります。
子ネームスペースは定額ですね。こちらももちろん0
へ。
- rootNamespaceRentalFeePerBlock = 1
+ rootNamespaceRentalFeePerBlock = 0
- childNamespaceRentalFee = 100
+ childNamespaceRentalFee = 0
ちなみにこの辺の手数料の数値は、あくまでも開発環境のものです。publicにローンチした時にこのままなのかは不明です。
モザイクの期限
config-network.properties
を見ていると、maxMosaicDuration
という項目があります。
デフォルトでは、以下のようになっています。
maxMosaicDuration = 3650d
この項目「モザイクの最大期限」なんですが、catapultではモザイク発行時に「無期限」を指定することが出来ます。そのため、この最大期限は「期限を指定する場合の最大値」となります。
// nem2-docs v0.18.9 より
const mosaicDefinitionTransaction = MosaicDefinitionTransaction.create(
Deadline.create(),
nonce,
MosaicId.createFromNonce(nonce, account.publicAccount),
MosaicFlags.create(true, true, true),
0, // 0は無期限。期限を指定する場合は、整数で指定。
UInt64.fromUint(0),
NetworkType.MIJIN_TEST);
ちなみに最大期限の指定は日数ですが、発行時のdurationの指定は、ブロック数です。
ネームスペースも同様
ネームスペースの期限も同様に、最大値の設定は日数ですが、レンタル時にはブロック数で指定します。
maxNamespaceDuration = 365d
// nem2-docs v0.18.9 より
const namespaceRegistrationTransaction = NamespaceRegistrationTransaction.createRootNamespace(
Deadline.create(),
namespaceName,
UInt64.fromUint(1000), // ブロック数で期限を指定
NetworkType.MIJIN_TEST);
この時の、日数とブロック数の変換は、blockGenerationTargetTime
(ブロック生成速度)を元に計算されます。
duration ≈ numberOfDays * 86400 / blockGenerationTargetTimeInSeconds
https://nemtech.github.io/ja/concepts/namespace.html#duration
Txが承認されない問題
構築後、実際に触ってみたのですが、Txが承認されません。というかノードに認識されていない(?)ようです。
試しに、ネメシスブロックのTxハッシュを持ってきて、domain.com:3000/transaction/{txhash}
として見ましたが、ResourceNotFound
が返ってきました。
nem2-slackのぞいてみると、他の方もfushicho-2環境で同様の問題が発生している模様。。。
とりあえず、未解決。
追記(11/30)
api-nodeの再起動で正常に動くようになった。どうやらbrokerが悪さしてたっぽい?
継続調査中。