本日は NEM-sdk という JavaScript のライブラリを使って、モザイクを送金するスクリプトを作成していきます。
通常の XEM の送金の処理を知っておくと、モザイク送金処理についてもっと深く知ることができますので、まだ読んでない方はこちらもぜひ読んでみてください。
→ 【NEM】NEM-sdk を使って特定アドレスへ XEM を送金する
また、モザイクの発行方法についても記事を公開しているので、まだ自分のモザイクを発行していない方はこちらを読みながらやってみてください。
→ 【NEM】NEM ブロックチェーン上で独自トークンを発行する
環境
- Node.js v8.11.3
- npm v5.6.0
使用ライブラリはこちらです
→ QuantumMechanics/NEM-sdk
公式ドキュメントはこちらから見れます
→ NEM-sdk | NEM Documentation
NEM-sdk のインストール
npm を使ってインストールを行っていきます。
NEM-sdk でモザイクを送金する
まずはソースコードを見てみてください。
今回は大きく分けて4つ手順が存在しています。
トランザクションの作成
まずは発行するトランザクションのオブジェクトを生成します。
トランザクションの作成には以下の3つのパラメータが必要です。
- 送金先アドレス
- 送金額
- メッセージ(Optional)
今回はモザイク発行時に送金する XEM の量を設定しますので、ここで設定した②送金額はあまり関係ありません。
サンプルではとりあえず 1XEM で設定しています。
トランザクションへモザイクを付与
続いて送金するモザイクをトランザクションへ付与していきます。
この際、自分が送金したいモザイクだけでなく、XEM も付与することを忘れないようにしてください。
※この際、1XEN = 1000000 単位となりますので、その点にも注意してください。
トランザクションの手数料を計算
続いてトランザクションの手数料を計算するための情報を付与していきます。
手数料の計算に必要となる情報は以下の2点です。
それぞれ API で取得してトランザクション発行時に使用します。
- 正確なモザイク名(モザイクのフルネームのことで「nem:xem」の形式)
- モザイクの総供給量
FAILURE_INSUFFICIENT_FEE
モザイクの送金は NEM-sdk で用意されているサンプル通りに作っても上手くいきません。
サンプル通りにやると、トランザクションの手数料が上手く計算できず「NaN」となり、「FAILURE_INSUFFICIENT_FEE」というエラーが出てしまいます。
その原因はトランザクションの手数料を計算するために必要な「②モザイクの総供給量」の取得が、NEM-sdk で用意されているサンプルでは行われていなからです。
そのため、トランザクション作成時にモザイクの総供給量をちゃんと付与してあげましょう。
※ソースコードの「nem.com.requests.mosaic.supply」以下の部分
ここでだいぶハマったので気をつけてください。。。
トランザクションへの署名
続いて作成したトランザクションに署名を行います。
署名で必要なパラメータは以下の4つです。
通常の XEM 送金と「③モザイク定義オブジェクト」を含む点が異なっており、XEM のみの送金であればこの項目は不要です。
- common オブジェクト(ウォレットのパスワードと秘密鍵を持ったオブジェクト)
- 作成したトランザクションオブジェクト
- モザイク定義オブジェクト(モザイクの名前やメタデータ、供給量が含まれたオブジェクト)
- ネットワークID(Mainnet OR Testnet のネットワークID)
トランザクションのブロードキャスト
最後にトランザクションをネットワークへ公開する「ブロードキャスト」を行います。
- common オブジェクト
- 署名をしたトランザクション
- API の Endpoint
こちらは XEM の送金と特に変化はありません。
モザイクの送金が成功したかどうかはウォレット上で確認ができます。