Edited at

リンククリックでNEM送金を実行するコントラクト

More than 1 year has passed since last update.

リンククリックのタイミングで仮想通貨NEMを送金するコントラクトサンプルです。

もちろんHTML側を加工することでボタンにもタイマーにすることも可能です。

注意点としては、秘密鍵直埋めなので汎用的に利用することはできません。

また、連打すればその回数分送金されてしまうので、何かしらのセキュリティ対策は必要です。

それ以上にNEMの可能性を感じて欲しい点として

自分でサーバを準備できる人であればこの程度分量のプログラムで送金プログラムが書けてしまいます。自分だけがアクセスできないような場所で送金プログラムを書くことができれば、もうそれはウォレットですよね。

最近ではサーバレス環境なども増えてきていますので、今後もいろいろな送金方法をご紹介していきたいと思います。


nodejs

var FAUCET_PRIKEY = "秘密鍵";
const express = require('express');
const nem = require("nem-sdk").default;

var app = express();
app.use(function(req, res, next){
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
})

app.listen(1337);

var NODES = Array(
"http://alice2.nem.ninja",
"http://alice3.nem.ninja",
"http://alice4.nem.ninja",
"http://alice5.nem.ninja",
"http://alice6.nem.ninja",
"http://alice7.nem.ninja"
);

function getEndpoint(){

var node_url = NODES[Math.floor(Math.random() * NODES.length)];
return node_url;
}

app.get('/tip/account', (req, res,next) => {

var endpoint = nem.model.objects.create("endpoint")(getEndpoint(), nem.model.nodes.defaultPort);
let transferTx = nem.model.objects.create("transferTransaction")('NYYYYYYYYYYYYYYYYYYY', 1, "XEMBook tip to @account");
let common = nem.model.objects.create("common")("", FAUCET_PRIKEY);
let transactionEntity = nem.model.transactions.prepare("transferTransaction")(common, transferTx, nem.model.network.data.mainnet.id);
nem.model.transactions.send(common, transactionEntity, endpoint)

res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
res.write("ok");
res.end();
});