NEM Libraryを使ってみる(2) トランスファートランザクション
次にxemや各種モザイクの送信方法についてです。
xemの送信
xemを送信するには、TransactionHttp
クラスのannounceTransaction
メソッドを利用します。
送信する署名済トランザクションを作成するには、TransferTransaction
クラスのcreate
メソッドでトランザクションを作成し、Account
クラスのsignTransaction
メソッドで署名します。
let account = Account.createWithPrivateKey("privatexxxxxxxxxxxxx"); let tx = TransferTransaction.create( TimeWindow.createWithDeadline(), new Address("NCS5BI-MFLIOP-5TMLKM-INCN5C-4PQ5VK-YXK7BB-VGYX"), new XEM(0.1), EmptyMessage ); let signedTransaction: SignedTransaction = account.signTransaction(tx); let transactionHttp = new TransactionHttp(); transactionHttp.announceTransaction(signedTransaction) .subscribe( x => console.log(x));
SUCCESSが返ってきました。
{ "type":1, "code":1, "message":"SUCCESS", "transactionHash":{ "data":"28b15df7e2a28e215385ce50ba2e7efb9efe0943db8f585576e071638bd8aa28" }, "innerTransactionHash":{} }
モザイクの送信
モザイクを送信するには、MosaicHttp
クラスのgetMosaicTransferableWithAmount
でMosaicTransferable
オブジェクトを作成し、配列にまとめてからTransferTransaction
クラスのcreateWithMosaics
メソッドでトランザクションを作成します。
getMosaicTransferableWithAmount
にxemを喰わせるとエラーになったので、個別に配列に追加しました。
ちなみにquantity
を1にした場合、divisibility
がいくつであってもしっかりと1送られます。何気にハマるポイントなので気にしなくていいのはありがたいです。
Observable.from([ {mosaic: new MosaicId("nextem", "nex"), quantity: 1}, {mosaic: new MosaicId("nextem.ex", "photon"), quantity: 1}, {mosaic: new MosaicId("nextem.ex", "higgs"), quantity: 1} ]).flatMap(mosaicWithAmount => mosaicHttp.getMosaicTransferableWithAmount( mosaicWithAmount.mosaic, mosaicWithAmount.quantity )) .toArray() .map(mosaics => { mosaics.unshift(new XEM(1)); return mosaics; }) .map(mosaics => TransferTransaction.createWithMosaics( TimeWindow.createWithDeadline(), new Address("NCS5BI-MFLIOP-5TMLKM-INCN5C-4PQ5VK-YXK7BB-VGYX"), mosaics, EmptyMessage ) ) .map(transaction => account.signTransaction(transaction)) .flatMap(signedTransaction => transactionHttp.announceTransaction(signedTransaction)) .subscribe(nemAnnounceResult => { console.log(nemAnnounceResult); });
残高の確認と送受信。これでもうほとんどのことは出来てしまいます。しかも容易に。
feeも安くなってネームスペースを初めて取ったなんて人も少しずつ出てきているようですし、さらに一歩進めて何か作ってみるというのはいかがでしょうか。
※筆者のモチベーション向上のため、以下NEMアドレスへxemなりシットトークンなりの寄付を受け付けています。
NDY4RH-UZ3CZO-Z53O5H-NEXTEM-7UF5X3-MMDGH4-IMAD