nem-sdkをインストールします
$ npm install nem-sdk
mainnetで送信します。
var nem = require("nem-sdk").default; const endpoint = nem.model.objects.create('endpoint')(nem.model.nodes.defaultMainnet, nem.model.nodes.defaultPort); async function main() { const toAddress = ''; const sendAmount = 1; const sendMsg = 'Hello World!'; const password = ''; const privateKey = ''; const common = nem.model.objects.create('common')(password, privateKey); const yourMosaicNamespace = 'capitalcoin'; const yourMosaicName = 'hpscript'; let transferTransaction = nem.model.objects.create('transferTransaction')(toAddress, sendAmount, sendMsg); const xemMozaic = nem.model.objects.create('mosaicAttachment')('nem', 'xem', 0); transferTransaction.mosaics.push(xemMozaic); const yourMosaic = nem.model.objects.create('mosaicAttachment')(yourMosaicNamespace, yourMosaicName, 10); transferTransaction.mosaics.push(yourMosaic); let mosaicDefinitionMetaDataPair = nem.model.objects.get('mosaicDefinitionMetaDataPair'); nem.com.requests.namespace.mosaicDefinitions(endpoint, yourMosaic.mosaicId.namespaceId).then(res => { const neededDefinition = nem.utils.helpers.searchMosaicDefinitionArray(res.data, [yourMosaicName]); const fullMosaicName = nem.utils.format.mosaicIdToName(yourMosaic.mosaicId); if (undefined === neededDefinition[fullMosaicName]) { return console.log('Mosaic not found !'); } mosaicDefinitionMetaDataPair[fullMosaicName] = {}; mosaicDefinitionMetaDataPair[fullMosaicName].mosaicDefinition = neededDefinition[fullMosaicName]; nem.com.requests.mosaic.supply(endpoint, fullMosaicName).then(supplyRes => { mosaicDefinitionMetaDataPair['nem:xem'].supply = 8999999999; mosaicDefinitionMetaDataPair[fullMosaicName].supply = supplyRes.supply; const transactionEntity = nem.model.transactions.prepare('mosaicTransferTransaction')(common, transferTransaction, mosaicDefinitionMetaDataPair, nem.model.network.data.mainnet.id); nem.model.transactions.send(common, transactionEntity, endpoint).then(sendRes => { console.log('sendRes:', sendRes); }).catch(sendErr => { console.log('sendError:', sendErr); }); }).catch(supplyErr => { console.log('supplyErr:', supplyErr); }); }).catch(err => { console.log('mosaicDefinitionsError:', err); }); } main();
$ node test.js
sendRes: { innerTransactionHash: {},
code: 1,
type: 1,
message: ‘SUCCESS’,
transactionHash:
{ data:
‘f08066a73d37f523482d6dc61a60e53db4cbd5097262f1ee419cae7ae4ad9a7a’ } }
送信結果
おおお、これをUIをつけてやりたい
<body> <div class="container"> <h1 class="title">NEM Project</h1> <p>送金ボタンを押してください</p> <input type="button" value="送金" onclick="OnButtonClick();"> </div> <script src="nem-sdk.js"></script> <script> var nem = require("nem-sdk").default; function OnButtonClick() { main(); console.log("送金完了しました") } const endpoint = nem.model.objects.create('endpoint')(nem.model.nodes.defaultMainnet, nem.model.nodes.defaultPort); async function main() { // 省略 } </script>
あ、出来た^^
受け取るwalletのアドレスとメッセージを入力フォームにして、そこに送信できるようにしたい。