eosjs-16.0.9

Scatterで簡単EOS送金プログラミング(eosjs v16.0.9)

前回はScatter(スキャッター)でEOSブロックチェーンにログインする基本の型を紹介しました。

今回は早速仮想通貨EOSを送金するプログラムをプログラミングしていきましょう。

EOS送金プログラムの型

今回もできるだけコピペだけで対応できるようにEOS送金のプログラムの型を紹介したいと思います。

/* 仮想通貨EOSを送金する関数 */
function transfer( sRecAccount, fAmount, sSymbol, sMessage ){

    /* ScatterにEOSアカウントが読み込まれているかチェック */
    if(account == null) return false;

    /* 送金枚数を数字型に変換する */
    var num = new Number(fAmount);

    /* メッセージがnullであればメッセージを空白にする */
    if(sMessage == null) sMessage = '';
    
    /* EOSを送金する */
    eos.transfer(account.name, sRecAccount, String(num.toFixed(4)) + ' ' + sSymbol, account.name, options).then(res => {
            /* EOSを送金が成功したらコンソールに成功した結果を表示する */
            console.log('sent: ', res);
        }).catch(err => {
            /* EOSを送金が失敗したらコンソールに失敗した結果を表示する */
            console.error('error: ', err);
    });
}

 

上記を前回のプログラムに貼り付けるだけで動作します。

機能の説明は以下の通りになります。

transfer( sRecAccount, fAmount, sSymbol, sMessage )

■各パラメーターの説明
sRecAccount = 送金先のアカウント名
fAmount = 送金する枚数
sSymbol = トークンシンボル
sMessage = メッセージ(nullを入力すると空白で送信する)

■使い方
(メッセージを添える場合)
transfer(‘eosersbank11’, 1.0000, ‘EOS’, ‘てゃんでぃ!行くぜ!’);
(メッセージを添えない場合)
transfer(‘eosersbank11’, 1.0000, ‘EOS’, null);

※OnClickなどのHTMLタグ内に明記する場合は、シングルクォーテーション’で明記してください。

フルコード

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>scatter test</title>

<!-- EOSとScatterの接続モジュールを読み込む -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/eos.min.js"></script>
<script src="https://cdn.scattercdn.com/file/scatter-cdn/js/latest/scatterjs-core.min.js"></script>
<script src="https://cdn.scattercdn.com/file/scatter-cdn/js/latest/scatterjs-plugin-eosjs.min.js"></script>
  
<script>

/* 各パラメーターの初期化 */
ScatterJS.plugins(new ScatterEOS());
var eos = null;
var account = null;
var options = null;

/* EOSメインネットブロックチェーンのネットワーク情報を設定 */
const network = ScatterJS.Network.fromJson({
    blockchain:'eos',
    chainId:'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906',
    host:'nodes.get-scatter.com',
    port:443,
    protocol:'https'
}); //mainnet

/* Scatterにログインする関数 */
function scatter_login(){
    ScatterJS.connect('YourAppName', {network}).then(connected => {
        if(!connected) return console.error('no scatter');

       eos = ScatterJS.eos(network, Eos);

        ScatterJS.login().then(id => {
            if(!id) return console.error('no identity');
        
            account = ScatterJS.account('eos');
            options = {authorization:[`${account.name}@${account.authority}`]};
        
            document.getElementById('account').innerHTML = JSON.stringify(account);
            
        });
    });
}

/* 送金する関数 */
function transfer( sRecAccount, fAmount, sSymbol, sMessage ){
    if(account == null) return false;
    
    var num = new Number(fAmount);
	if(sMessage == null) sMessage = '';
    
    eos.transfer(account.name, sRecAccount, String(num.toFixed(4)) + ' ' + sSymbol, account.name, options).then(res => {
            console.log('sent: ', res);
            document.getElementById('result').innerHTML = JSON.stringify(res);
        }).catch(err => {
            console.error('error: ', err);
            document.getElementById('result').innerHTML = JSON.stringify(err);
    });
}

/* Scatterからログアウトする関数 */
function scatter_logout(){
    ScatterJS.scatter.forgetIdentity()
    ScatterJS.scatter.logout();
    account = null;
    options = null;
    
    document.getElementById('account').innerHTML = "no account";
    document.getElementById('result').innerHTML = "";
}

</script>
</head>

<body>
<h1>scatter test</h1>
<!-- Scatterをログイン・ログアウトするボタン -->
<button type="button" name="name" value="value" onClick="scatter_login();">Scatter Login</button><br>
<button type="button" name="name" value="value" onClick="scatter_logout();">Scatter Loout</button><br>

<!-- クリックしたらeosersbank11アカウントに0.0001EOSを送金するボタン -->
<button type="button" name="name" value="value" onClick="transfer('eosersbank11', 0.0001, 'EOS', null);">transfer</button><br>

<!-- ログインしているかしていないかを表示する -->
<div id="account">no account</div><br>
<!-- 実行結果を表示する -->
<div id="result"></div><br>
</body>
</html>

最後に

この関数は、ある程度コピペで対応できるようにしています。

もうすこし作り込むのであればテキストボックスを用意して、そこにアカウントと枚数を入力してボタンを押したら送金するというものも作れると思います。

次回はステーキングしてリソースを確保する関数を紹介したいと思います。

Scatterおすすめ記事(eosjs v16.0.9)