今回はnode.js(ノードジェイエス)による仮想通貨EOSプログラミングeosjs(イオスジェイエス)をやっていきたいと思います。
■node.jsとは
これまでInternet explorer(インターネットエクスプローラ)やGoogle Chrome(グーグルクローム)などのブラウザ上でしか動作が出来なかったJavascript(ジャバスクリプト)言語を、単体で実行することが出来、サーバー上でもクライアント側でも動作させることができる汎用性のあるJavascript環境です。
そのnode.jsのなかのパッケージプログラムとして仮想通貨EOSを操作させることのできるのがeosjsです。
今回のやり方は、Mac環境、Linux環境を想定しての設定になるので、Windowsの場合はバーチャルマシンにUbuntuを入れたりVPS(Virtual Private Server)を導入して運用するのをおすすめします。
node.jsのインストール方法は以下のリンクから参考にしてください。
eosjsの開発環境を構築する
Macの場合はターミナル、Linuxの場合はTerminalを開いてください。
最初にプログラミング作業用のフォルダ(src)を作成しましょう。
以下のコマンドを一行ずつ入力して行きましょう。
mkdir src
cd src
次にeosjsのプログラミングをする作業パッケージフォルダを作成します。
mkdir eos
co eos
次にnode.jsの開発環境を作成しますので、以下のコマンドを入力します。
npm init
設定について聞いてきますのでそのままエンターキーを連打してください。
次にeosjsと必要モジュールをインストールしていきます。
npm i eosjs
npm i node-fetch
npm i text-encoding
これでeosjsの開発環境が整いました。
最後に以下のサイトで、EOSのテストネットにてテスト版EOSアカウントも作っておきましょう。
eosjsのプログラミングをする
早速プログラミングを始めていきたいと思いますので、先程作成したフォルダはMac環境であれば/home/<ユーザーネーム>/src/eos/の場所になりますのでそのフォルダを開いて、index.jsというファイルを作ります。
そのindex.jsの中にプログラムを記述していきたいと思います。
基本的なeosjsの型は以下の通りとなり、今回はCommonJSの形式でプログラミングしています。
/***************************************************/
/* eosjsを動かすための基本的コード (index.js) */
/***************************************************/
/* eosjsをインポート */
const { Api, JsonRpc, RpcError } = require('eosjs');
/* ウォレットの秘密鍵を格納するモジュール */
const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig');
/* APIを操作するためのモジュール */
const fetch = require('node-fetch');
/* 文字コードエンコード・デコードモジュール */
const { TextEncoder, TextDecoder } = require('text-encoding');
/* APIサーバーに接続: メインネットはこちら 今回は使いません*/
//const rpc = new JsonRpc('https://eos.greymass.com:443', {fetch});
/* APIサーバーに接続: テストネットはこちら */
const rpc = new JsonRpc('https://jungle2.eosio.cr:443', {fetch});
/* 秘密鍵の読み込み */
const defaultPrivateKey = "5K2KxxxxxxxxxxxxxxxxxxxXexxxxxxxxxxxxxxxxxxxx";
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
/* EOS APIの読み込み */
const api = new Api({ rpc, signatureProvider,
textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
この宣言をしておけばEOSのあらゆる機能を使うことが出来ます。
それでは2つほどプログラムを動かしてみましょう。
上記のコードの一番下に追記してください。
/************************************************************/
/* EOSアカウントが存在するかどうかをチェックする (index.js) */
/************************************************************/
async function get_account(account){
/* 例外処理をかけてEOSアカウントが存在するかチェックします。 */
try {
/* EOSアカウントの情報を呼び出します。 */
var ret = await rpc.get_account(account);
/* EOSアカウント詳細情報をJSONデータで返します。 */
return JSON.stringify(ret);
} catch (e) {
/* EOSアカウントが存在しなかったら-1を返します。 */
return -1;
}
}
更に下に以下のコードも追加します。
/************************************************************/
/* EOSを送金する (index.js) */
/************************************************************/
async function send_transaction(){
try {
const result = await api.transact({
actions: [{
account: 'eosio.token',
name: 'transfer', //送金しますという命令
authorization: [{
actor: '<送金者アカウント>',
permission: 'active', //通常はactiveだがownerでも可
}],
data: {
from: '<送金者アカウント>',
to: '<受金者アカウント>',
quantity: '1.0000 EOS', //必ず小数点4桁まで表示しないとエラーが出る
memo: 'おらおらEOS送るぞ!',
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
/* 送金内容を表示する */
console.log(result);
} catch (e) {
/* エラーが出たらエラー内容を表示する */
console.log("Error:" + e.message);
}
}
上記2点のプログラムを書いたら実行してみましょう。
/************************************************************/
/* プログラムを実行する (index.js) */
/************************************************************/
/* 取得したアカウント詳細をJSONデータで表示する */
console.log(await get_account("<EOSアカウント>"));
/* 送金を実行する。 */
await send_transaction();
それではindex.jsを実行してみましょう。
eosjsを実行してみる
node index.js
上記を入力したらエンターキーを押すと以下のような結果が現れます。
{"account_name":"<EOSアカウント>","head_block_num":89562703,
"head_block_time":"2020-05-04T15:40:42.500","privileged":false,
"last_code_update":"1970-01-01T00:00:00.000",
"created":"2020-04-27T08:45:16.500",
"core_liquid_balance":"89.3987 EOS",
"ram_quota":10481,"net_weight":11003,
"cpu_weight":11003,"net_limit":{"used":795,"available":70052,"max":70847},
"cpu_limit":{"used":1461,"available":63598,"max":65059},"ram_usage":3734,
"permissions":[{"perm_name":"active","parent":"owner",
"required_auth":{"threshold":1,
"keys":[{"key":"EOS6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","weight":1}],
"accounts":[],"waits":[]}},{"perm_name":"owner","parent":"",
"required_auth":{"threshold":1,"keys":[{
"key":"EOS6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","weight":1}],
"accounts":[],"waits":[]}}],
"total_resources":{"owner":"<EOSアカウント>","net_weight":"1.1003 EOS",
"cpu_weight":"1.1003 EOS","ram_bytes":9081},
"self_delegated_bandwidth":{"from":"<EOSアカウント>","to":"<EOSアカウント>",
"net_weight":"1.1003 EOS","cpu_weight":"1.1003 EOS"},"refund_request":null,
"voter_info":{"owner":"<EOSアカウント>","proxy":"",
"producers":[],"staked":42006,
"last_vote_weight":"0.00000000000000000",
"proxied_vote_weight":"0.00000000000000000",
"is_proxy":0,"flags1":0,"reserved2":0,"reserved3":"0 "},
"rex_info":null}
{
transaction_id: '64c1d37440a42a8a4ca3a7e62625a8779668c7c40aaff74ab3e00edf58d88ed0',
processed: {
id: '64c1d37440a42a8a4ca3a7e62625a8779668c7c40aaff74ab3e00edf58d88ed0',
block_num: 89562721,
block_time: '2020-05-04T15:40:51.500',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 580, net_usage_words: 16 },
elapsed: 580,
net_usage: 128,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記の内容が出てきたらプログラミング成功です。
最後に
今回はeosjsの基本的な型を紹介してみました。
node.jsを使ってjavascriptのスキルが有ればそこそこ使いやすいのかもしれません。
次回は送金の他、様々なアクションを紹介したいと思います。
ビットコインは仮想通貨の基軸通貨とも言われており、基本的にどの取引所でも取引できます。
同じビットコインでも、取引所の使い勝手やサービスによって自身に合う取引ができるか異なるため、取引所ごとの特徴を掴むことが重要です。
ここではビットコイン取引におすすめの取引所と、その特徴を紹介します。
bitFlyer
- 2014年からサービスを開始した老舗
- ビットコインやイーサリアムのレバレッジ取引にも対応
- 専用アプリではチャート分析まで可能
bitFlyer(ビットフライヤー)は、ビットコインの取引量で6年連続国内No.1になった取引所です。サービスを開始したのは2014年と、国内取引所の中ではサービス歴が長く、メガバンクも出資していることから将来の成長性も見込めます。
専用のアプリは機能が充実していて、取引量のチェックだけでなくチャート分析まで行えます。
また、Brave(ブレイブ)ブラウザ閲覧報酬のBATを受け取れる唯一の取引所です。
さらにbitFlyerはセキュリティ対策にも力を入れており、これまでハッキングで被害を受けたことがありません。
1回でもハッキングされた所は避けたい」という場合は、真っ先に候補に上がる取引所でしょう。
取引所名 | bitFlyer(ビットフライヤー) |
---|---|
最低取引数量(取引所) | 0.001BTC |
取扱通貨数 | 17通貨 |
取引手数料(取引所) | 0.01~0.15% |
入金手数料 | 銀行振込 : 無料クイック入金住信SBIネット銀行 : 無料住信SBIネット銀行以外 : 330円 |
出金手数料 | 220~770円 |
Coincheck
- マネックスグループ傘下の安心感
- 取引手数料・入金手数料が無料
- 最小500円でビットコインが手に入る
Coincheck(コインチェック)は、東証プライム市場に上場しているマネックスグループ傘下の取引所です。
アプリがシンプルで使いやすく、初心者から上級者まで人気があります。
すでに50万人以上のユーザーがコインチェックのアプリで取引していることからも、多くのユーザーの支持を得ていることが分かります。
取扱通貨数は17と多めで、「ビットコインから取引を始めて、ゆくゆくは他の通貨(アルトコイン)も取引してみたい」と考えている方におすすめです。
1回でもハッキングされた所は避けたい」という場合は、真っ先に候補に上がる取引所でしょう。
取引所名 | Coincheck(コインチェック) |
---|---|
最低取引数量(取引所) | 0.005BTC以上 かつ 500円(相当額)以上から |
取扱通貨数 | 17通貨 |
取引手数料(取引所) | 無料 |
入金手数料 | 銀行振込 : 無料コンビニ入金 : 770円~クイック入金 : 770円~ |
出金手数料 | 407円 |
楽天ウォレット
【おすすめポイント】
- 楽天ポイントをビットコインに交換できる
- 最短即日で口座を開設できる
楽天ウォレットは楽天グループに属する取引所です。
楽天ポイントをビットコインに交換できるのがメリットで、最低100ポイントから1ポイント1円相当で交換できます。ある程度のポイントが貯まれば現金の出費なしで仮想通貨取引を始められます。
持っているビットコインを楽天キャッシュにチャージすることで、楽天市場での買い物に利用することも可能です。
取引で利益を得るだけでなく、買い物でも仮想通貨を利用したい方におすすめの取引所といえます。
口座開設は最短即日と非常にスピーディなのも特徴です。楽天銀行に口座を持っている場合は本人確認手続きが必要なく、楽天銀行に口座を持っていなくても「らくらく本人確認」を利用すればオンラインで手続きが完結します。
取引所名 | 楽天ウォレット |
---|---|
最低取引数量(取引所) | 購入:100円売却:0.0001 BTC |
取扱通貨数 | 4通貨 |
取引手数料(取引所) | 無料 |
入金手数料 | 無料 |
出金手数料 | 300円 |
LINE BITMAX(ビットマックス)
- 仮想通貨貸出サービスが利用できる
- スマホだけで簡単口座開設が可能
LINE BITMAX(ライン ビットマックス)は、LINEのグループ会社が運営する仮想通貨取引所です。スマホアプリ「LINE」のグループらしく、スマホだけで本人確認も口座開設手続きも完了させることができます。
保有している仮想通貨を貸し出して利益を得られるサービスも提供しており、長期的に稼ぐことも可能です。
公式ブログでは「ビットコインの仕組み・使い方」「本人確認の手順」などの基本的な内容を紹介しています。
仮想通貨初心者でも取引に必要な最低限の知識を身につけられるでしょう。
取引所名 | LINE BITMAX(ビットマックス) |
---|---|
最低取引数量(取引所) | 0.00000001 BTC |
取扱通貨数 | 6通貨 |
取引手数料(取引所) | 無料 |
入金手数料 | 無料 |
出金手数料 | 400円(銀行口座) |
GMOコイン
- 東証プライム上場GMOインターネットの傘下
- 取引手数料・入出金手数料・送金手数料が全て無料
- レバレッジ取引にも対応
GMOコインは「GMOインターネットグループ」を親会社にもつ仮想通貨取引所です。GMOクリック証券で培われた万全な管理体制と、抜け目のないセキュリティ体制が整っています。
取引手数料・入出金手数料・送金手数料が全て無料で、取引に余計なコストがかからない点も魅力的です。
レバレッジ取引にも対応しており、初心者から上級者まで幅広くおすすめできます。
取引所名 | GMOコイン |
---|---|
最低取引数量(取引所) | 0.0001 BTC |
取扱通貨数 | 20通貨 |
取引手数料(取引所) | 無料 |
入金手数料 | 無料 |
出金手数料 | 無料 |
bitbank(ビットバンク)
- 仮想通貨の取引量が国内トップクラスに多い
- 流動性が高いので、瞬時に売却・購入が可能
- 取り扱い通貨数が19種類と多い
bitbankは、仮想通貨取引量で国内No.1に輝いた暗号資産取引所です。
流動性が高いことで、値動きの激しい暗号資産を瞬時に売却・購入できる快適なトレードが実現します。
さらに「オフラインのコールドウォレット」「マルチシグ」によってセキュリティ面でも国内No.1の高い評価を受けている点もメリットです。
日本円の入金もリアルタイムで可能!土日を含めた24時間いつでも日本円を入金できるので、取引チャンスを逃しません。
取り扱い通貨数も19通貨と多いので、マイナー通貨を取引したい方にも向いています。
取引所名 | bitbank(ビットバンク) |
---|---|
最低取引数量(取引所) | 0.0001BTC |
取扱通貨数 | 19通貨 |
取引手数料(取引所) | メイカー:-0.02% テイカー:0.12% |
入金手数料 | 無料 |
出金手数料 | 550円 770円(3万円以上)※日本円の場合 |