前回は仮想通貨EOS(イオス)をnode.jsを使ってステーキング、RAM購入までプログラミングを学んだと思います。
今回はnode.jsを介してこの全ての処理を組み合わせてEOSアカウントを作成していきます。
EOSアカウントを作成するプログラム
それでは早速node.jsでEOSアカウントを作成するプログラムを組んでいきましょう。
EOSアカウントを作成するコードは以下のとおりです。
function create_account(sCreater, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer){
/* NETに割り振る枚数を数字型にする */
var nNum = new Number(fNetQuantity);
/* CPUに割り振る枚数を数字型にする */
var cNum = new Number(fCpuQuantity);
/* 転送フラグ変数を定義する */
var sendflug = 0;
if(bTransfer == false)
sendflug = 1;
/* EOSアカウントを作成する */
eos.transaction(tr => {
/* EOSアカウントを作成する */
tr.newaccount({
creator: sCreater,
name: sCreateAccount,
owner: sOwnerPublickey,
active: sActivePublickey
});
/* 新規アカウントにRAMを送付する */
tr.buyrambytes({
payer: sCreater,
receiver: sCreateAccount,
bytes: parseInt(iRamByte)
});
/* 新規アカウントにCPUとNET分のリソースを配布する。 */
tr.delegatebw({
from: sCreater,
receiver: sCreateAccount,
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS',
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS',
transfer: sendflug
});
}).then(function(data){
/* ステーキングに成功したら結果をコンソール上に表示する */
console.log(data);
}).catch(function(error){
/* ステーキングに失敗したら結果をコンソール上に表示する */
console.log(error);
});
}
上記をコピペで追加すれば使えるようになります。
関数の使い方は以下のようになります。
create_account(sCreater, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer)
■各パラメーターの説明
sCreater = 文字列:EOSアカウント作成料を払うアカウント
sCreateAccount = 文字列:新規作成するEOSアカウント名(a-z,5-1)12文字
sOwnerPublickey = 文字列:EOSで始まるオーナー公開鍵を入力する。
sActivePublickey = 文字列:EOSで始まるアクティブ公開鍵を入力する。
iRamByte = 整数型:RAM購入をするバイト数を入力する。
fNetQuantity = 浮動小数点型:NETに割り振る枚数を入力する。
fCpuQuantity = 浮動小数点型:CPUに割り振る枚数を入力する。
bTransfer = BOOL型:trueならEOSを転送しない、falseならEOSを転送する。
■使い方
(EOSを新規アカウントにステーク分のEOSを送金する場合)
create_account(“nodejstest45”, “createa12345”, “EOS6LYCxxxxxxx”, “EOS7A1qxxxxxxx”, 8000, 0.5000, 0.5000, false);
(EOSを新規アカウントにステーク分のEOSを貸す場合)
create_account(“nodejstest45”, “createa12345”, “EOS6LYCxxxxxxx”, “EOS7A1qxxxxxxx”, 8000, 0.5000, 0.5000, true);
フルコード
/* eosjsモジュールをインポートする */
const Eos = require('eosjs');
/* EOSブロックチェーン接続設定をする(今回はjungleテストネットに接続) */
eos = Eos({
keyProvider: '5K2KgfKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
httpEndpoint: 'https://jungle2.cryptolions.io:443',
chainId: 'e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473',
});
function create_account(sCreater, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer){
/* NETに割り振る枚数を数字型にする */
var nNum = new Number(fNetQuantity);
/* CPUに割り振る枚数を数字型にする */
var cNum = new Number(fCpuQuantity);
/* 転送フラグ変数を定義する */
var sendflug = 0;
if(bTransfer == false)
sendflug = 1;
/* EOSアカウントを作成する */
eos.transaction(tr => {
/* EOSアカウントを作成する */
tr.newaccount({
creator: sCreater,
name: sCreateAccount,
owner: sOwnerPublickey,
active: sActivePublickey
});
/* 新規アカウントにRAMを送付する */
tr.buyrambytes({
payer: sCreater,
receiver: sCreateAccount,
bytes: parseInt(iRamByte)
});
/* 新規アカウントにCPUとNET分のリソースを配布する。 */
tr.delegatebw({
from: sCreater,
receiver: sCreateAccount,
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS',
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS',
transfer: sendflug
});
}).then(function(data){
/* ステーキングに成功したら結果をコンソール上に表示する */
console.log(data);
}).catch(function(error){
/* ステーキングに失敗したら結果をコンソール上に表示する */
console.log(error);
});
}
/* EOSアカウントを作成する */
create_account("nodejstest45", 'helloworld24', "EOS6LYCxxxxxxx", "EOS6LYCxxxxxxx", 8000, 0.5000, 0.5000, false);
最後に
この関数もコピペだけで動作するように作成しました。
これまでに紹介したプログラムをうまく組み合わせれば面白いサービスを展開できると思います。
遊び程度でもいいので色々試してみてください。