背景
NEMアプリケーションを開発する上でCatapult-bootstrapは必要不可欠ですが、まだベータ版であるが故に、起動がうまくいかなかったり、急にトランザクションが読み込まれなくなるなど不安定な側面も持っています。
その対処法として ./cmds/clean-all
や./cmds/clean-data
コマンドを叩いてカタパルトのリセット処理をしますが、例えば発行したモザイクをフラグとした処理を開発している時にリセットすると、エイリアスをつけたネームスペースとモザイクを生成し直すシーンが度々ありました。
個人開発で1・2回程度ならまだしも、チーム開発で頻繁になると顕著に開発効率が下がっていたので、コマンド一発で以下の「実装機能一覧」にあるものを取得できるCLIツール「nem2-util」を作るに至りました。
実装機能一覧
- ネームスペースの取得 + モザイクの生成 + エイリアス設定(モザイクリンク)
- ネームスペースの取得 + エイリアス設定(アドレスリンク)
セッティング
リポジトリはこちら
https://github.com/keita1484/nem2-util
.env
.env.dist
ファイルを参考にルートに.env
ファイルを作成して、適宜値を変更。
MASTER_PRIVATE_KEY
は処理を行いたいアカウントのプライベートキーに書き換えてください。
#####.env.dist
ファイル
CATAPULT_URL=http://localhost:3000
GENERATION_HASH=REPLACE_THIS_VALUE
MASTER_PRIVATE_KEY=REPLACE_THIS_VALUE
機能詳細
ts-node
を使ってsrc/index.ts
を実行していきます。
1. ネームスペースの取得 + モザイクの生成 + エイリアス設定
以下のコマンドでネームスペースの取得〜エイリアス設定まで実行されます。
今回エイリアスは、mosaicAliasTransaction
でネームスペースをモザイクへリンクさせているので、ネームスペースからモザイク参照ができるようにしています。
$ ts-node index.ts -c nsmosaic -r ticket --sn1 2019 --sn2 event
ネームスペースは最大3階層
まで取得できます。
サブネームスペースを指定する--sn1
と--sn2
はオプショナルなので、ルートネームスペースだけ取得したい場合は、-r
とバリューを指定するだけでOKです。
ちなみに、ネームスペースを取得する上で以下のルールがあります。
- ネットワーク内でユニークの
64
文字以内 - 利用可能な文字は
a, b, c, …, z, 0, 1, 2, …, 9, _ , -
アナウンスされればステータスとトランザクションハッシュが返ってきます。
[Transaction announced]
Endpoint: http://localhost:3000/transaction/8D957BE945E5908FB2B73FC67EED01E63C95EA0001C1A62FDCA862DEE5621BC2
本当はListener
まで実装して、トランザクションがブロックに取り込まれれば結果が返ってくるようにしたかったのですが、一旦ご了承ください。
2. ネームスペースの取得 + エイリアス設定(アドレスリンク)
ネームスペースだけであればnem2-cliを使えば良いのですが、どうせならということで機能追加しています。
$ ts-node index.ts -c ns -r dog --sn1 shiba --sn2 male
2019.12時点でメタデータの送信はnem2-cliになかったと思うので(認識間違っていたらすみません)、直近はアカウントメタデータの送信
とListener
対応をする予定です。
おわりに
時間の都合で荒削りな状態ですが、少しでも皆様の快適なNEM開発ライフに繋がれば幸いです。
ちなみに皆さんの開発効率化に繋がるように更新していく予定なので、追加して欲しい機能などあれば是非コメントくださいませ。