前回ではeosjs(node.jsの開発環境)の初期設定をやっていきました。
今回は皆さんにも簡単に扱えるようにコピペで使えるeosjsプログラム関数を紹介したいと思いますので、思いっきり使い倒してください。
EOSの秘密鍵・公開鍵を生成する関数
EOSのオーナーとアクティブの秘密鍵・公開鍵を生成します。
まず最初はeosjs-keygenモジュールをターミナル上でインストールしましょう。
npm i eosjs-keygen
上記モジュールをインストールすると以下の関数が使えるようになります。
/* eosjs-keygenをインポート */
const {Keygen} = require('eosjs-keygen');
async function eosKeyGenerator(){
/* 秘密鍵を生成 */
var sPrivateKey = (await Keygen.generateMasterKeys()).privateKeys;
/* 公開鍵を生成 */
var sPublicKey = (await Keygen.generateMasterKeys()).publicKeys;
/* 秘密鍵・公開鍵を一つにまとめる */
var sKeys = '{"privatekey":' + JSON.stringify(sPrivateKey) + ',"publickey":' + JSON.stringify(sPublicKey) + '}';
/* JSON形式に変換 */
var jKeys = JSON.parse(sKeys);
/* 鍵を出力 */
console.log(jKeys);
/* 秘密鍵・公開鍵のJSONの値を返す */
return jKeys;
}
console.logで表示した実行結果は以下の通りとなります。
{
privatekey: {
owner: '5Jxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
active: '5Jyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
},
publickey: {
owner: 'EOSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
active: 'EOSyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
}
}
秘密鍵と公開鍵がしっかりと生成されています。
トークンを送金処理をする関数
次はトークンを送金処理する関数です。
async function send_transaction(sPermission, sSendAccount, sRecAccount, fAmount, sSymbol, sMessage){
/* 送金枚数を数字に変換 */
var num = new Number(fAmount);
/* メッセージがnullの場合は文字なしにする */
if(sMessage == null) sMessage = '';
/* 例外処理 */
try {
const result = await api.transact({
actions: [{
account: 'eosio.token',
name: 'transfer', //トークンを送金する命令文
authorization: [{
actor: sSendAccount, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
from: sSendAccount, //送金者
to: sRecAccount, //受金者
quantity: String(num.toFixed(4)) + ' ' + sSymbol, //送金枚数(小数点第4まで明記必須)+トークンシンボル
memo: sMessage, //メッセージ(ない場合はnull)
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
/* 例外処理でエラーが発生したら実行処理 */
} catch (e) {
console.log("Error:" + e.message);
}
}
関数の説明は以下の通り
【 関数説明 】
send_transaction(sPermission, sSendAccount, sRecAccount, fAmount, sSymbol, sMessage)
sPermission = “(文字列)” : パーミッションを設定する(”active”または”owner”)
sSendAccount = “(文字列)” : 送金者EOSアカウントを設定する
sRecAccount = “(文字列)” : 受金者EOSアカウントを設定する
fAmount = (浮動小数点数型) : トークンの送金枚数を設定する(EOSの場合は小数点第4位まで必須)
sSymbol = “(文字列)” : トークンシンボルを設定する(EOSの場合は”EOS”)
sMessage = “(文字列)” or null : メッセージをを明記する。メッセージがない場合はnull
【 使用例 】
await send_transaction(“active”, “xxxxxxxxxxxx”, “yyyyyyyyyyyy”, 0.0001, “EOS”, null);
console.logで表示した実行結果は以下の通りとなります。
{
transaction_id: 'dc556414ecadxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: 'dc556414ecadxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 896xxxxxx,
block_time: '2020-05-05T01:36:22.500',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 583, net_usage_words: 16 },
elapsed: 583,
net_usage: 128,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記が出力されれば送金が成功しています。
RAMを購入する関数
次はEOSリソースのRAMを購入する関数です。
async function buy_ram(sPermission, sPayAccount, sRecAccount, iBytes){
/* 例外処理 */
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'buyrambytes', //RAMを買う命令文
authorization: [{
actor: sPayAccount, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
payer: sPayAccount, //送金者
receiver: sRecAccount, //受取側
bytes: String(iBytes), //購入するRAM数(Byte)
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
/* 例外処理でエラーが発生したら実行処理 */
} catch (e) {
console.log("Error:" + e.message);
}
}
関数の説明は以下の通り
【 関数説明 】
buy_ram(sPermission, sPayAccount, sRecAccount, iBytes)
sPermission = “(文字列)” : パーミッションを設定する(”active”または”owner”)
sPayAccount = “(文字列)” : 送金者EOSアカウントを設定する
sRecAccount = “(文字列)” : 受取者EOSアカウントを設定する
iBytes = (整数型) : RAMの購入バイト数を設定する
【 使用例 】
await buy_ram(“active”, “xxxxxxxxxxxx”, “xxxxxxxxxxxx”, 8000);
console.logで表示した実行結果は以下の通りとなります。
{
transaction_id: 'c7c6axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: 'c7c6aaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 896xxxxx,
block_time: '2020-05-05T03:00:12.500',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 1294, net_usage_words: 14 },
elapsed: 1294,
net_usage: 112,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記が出力されればRAM購入が成功しています。
EOSをステーキングする関数
次はEOSをステーキングする関数です。
async function stake_resources(sPermission, sStaker, sRecAccount, fNetQuantity, fCpuQuantity, bTransfer){
/* ステーキング枚数を数字化 */
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
/* 例外処理 */
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'delegatebw', //ステーキングを行う命令文
authorization: [{
actor: sStaker, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
from: sStaker, //ステーキングを行う人
receiver: sRecAccount, //リソースを反映する人
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS', //NETに割り振るステーク枚数
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS', //CPUに割り振るステーク枚数
transfer: bTransfer, //リソースを反映する人にEOSを送るのか('true')送らないのか('false')の設定
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
/* 例外処理でエラーが発生したら実行処理 */
} catch (e) {
console.log("Error:" + e.message);
}
}
関数の説明は以下の通り
【 関数説明 】
stake_resources(sPermission, sStaker, sRecAccount, fNetQuantity, fCpuQuantity, bTransfer)
sPermission = “(文字列)” : パーミッションを設定する(”active”または”owner”)
sStaker = “(文字列)” : ステーキングを行う人
sRecAccount = “(文字列)” : リソースを反映する人
fNetQuantity = (浮動小数点数型) : NETに割り振るステーク枚数を設定する
fCpuQuantity = (浮動小数点数型) : CPUに割り振るステーク枚数を設定する
bTransfer = “(文字列)” : リソースを反映する人にEOSを送るのか”true”送らないのか”false”の設定
【 使用例 】
await stake_resources(“active”, “xxxxxxxxxxxx”, “xxxxxxxxxxx”, 0.1001, 0.0000, false);
console.logで表示した実行結果は以下の通りとなります。
{
transaction_id: '6d1805cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: '6d1805cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 8965xxxxx,
block_time: '2020-05-05T05:02:17.000',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 951, net_usage_words: 18 },
elapsed: 951,
net_usage: 144,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記が出力されればステーキング成功しています。
EOSをアンステーキングする関数
次はEOSをアンステーキングする関数です。
async function unstake_resources(sPermission, sUnstaker, sRecAccount, fNetQuantity, fCpuQuantity){
/* アンステーキング枚数を数字化 */
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
/* 例外処理 */
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'undelegatebw', //アンステーキングを行う命令文
authorization: [{
actor: sUnstaker, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
from: sUnstaker, //アンステーキングを行う人
receiver: sRecAccount, //EOSを返却する人
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS', //NETステークを解除する枚数
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS', //CPUステークを解除する枚数
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
/* 例外処理でエラーが発生したら実行処理 */
} catch (e) {
console.log("Error:" + e.message);
}
}
関数の説明は以下の通り
【 関数説明 】
unstake_resources(sPermission, sUnstaker, sRecAccount, fNetQuantity, fCpuQuantity)
sPermission = “(文字列)” : パーミッションを設定する(”active”または”owner”)
sUnstaker = “(文字列)” : アンステーキングを行う人
sRecAccount = “(文字列)” : EOSを返却する人
fNetQuantity = (浮動小数点数型) : NETステークを解除する枚数を設定する
fCpuQuantity = (浮動小数点数型) : CPUステークを解除する枚数を設定する
【 使用例 】
await unstake_resources(“active”, “xxxxxxxxxxxx”, “xxxxxxxxxxx”, 0.1001, 0.0000);
console.logで表示した実行結果は以下の通りとなります。
{
transaction_id: '07adxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: '07adxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 8966xxxx,
block_time: '2020-05-05T05:21:36.500',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 710, net_usage_words: 23 },
elapsed: 710,
net_usage: 184,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記が出力されればアンステーキング成功しています。
新規EOSアカウントを作成する関数
次は新規EOSアカウントを作成する関数です。
async function create_account(sPermission, sCreator, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer){
/* ステーキング枚数を数字化 */
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
/* 例外処理 */
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'newaccount', //新規EOSアカウントを作成する命令文
authorization: [{
actor: sCreator, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
creator: sCreator, //EOSアカウント作成者
name: sCreateAccount, //新規EOSアカウント名
owner: {
threshold: 1,
keys: [{
key: sOwnerPublickey, //オーナー公開鍵設定
weight: 1
}],
accounts: [],
waits: []
},
active: {
threshold: 1,
keys: [{
key: sActivePublickey, //アクティブ公開鍵設定
weight: 1
}],
accounts: [],
waits: []
},
},
},
{
account: 'eosio',
name: 'buyrambytes', //RAMを購入する命令文
authorization: [{
actor: sCreator, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
payer: sCreator, //新規アカウントへのRAM代支払者
receiver: sCreateAccount, //新規EOSアカウント名
bytes: iRamByte, //購入するRAM数(Byte)
},
},
{
account: 'eosio',
name: 'delegatebw', //ステーキングを行う命令文
authorization: [{
actor: sCreator, //承認者
permission: sPermission, //ownerなのかactiveなのかを選ぶ
}],
data: {
from: sCreator, //ステーキングを行う人
receiver: sCreateAccount, //新規EOSアカウント名
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS', //NETに割り振るステーク枚数
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS', //CPUに割り振るステーク枚数
transfer: bTransfer, //新規アカウントにステークしたEOSを送るのか('true')送らないのか('false')の設定
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
/* 例外処理でエラーが発生したら実行処理 */
} catch (e) {
console.log("Error:" + e.message);
}
}
関数の説明は以下の通り
【 関数説明 】
create_account(sPermission, sCreator, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer)
sPermission = “(文字列)” : パーミッションを設定する(”active”または”owner”)
sCreator = “(文字列)” : EOSアカウント作成者
sCreateAccount = “(文字列)” : 新規EOSアカウント名
sOwnerPublickey = “(文字列)” : オーナー公開鍵を設定
sActivePublickey = “(文字列)” : アクティブ公開鍵を設定
iRamByte = (整数型) : 新規EOSアカウントに割り振るRAMの購入バイト数を設定する
fNetQuantity = (浮動小数点数型) : 新規EOSアカウントにNETに割り振るステーク枚数を設定する
fCpuQuantity = (浮動小数点数型) : 新規EOSアカウントにCPUに割り振るステーク枚数を設定する
bTransfer = “(文字列)” : 新規EOSアカウントステークしたEOSを送るのか”true”送らないのか”false”の設定
【 使用例 】
var sOwnerPublickey = “EOS6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
var sActivePublickey = “EOS7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
await create_account(“active”, “xxxxxxxxxxxx”, “nnnnnnnnnnnn”, sOwnerPublickey, sActivePublickey, 8000, 0.5000, 0.5000, true);
console.logで表示した実行結果は以下の通りとなります。
{
transaction_id: 'dd09xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: 'dd09xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 8966xxxx,
block_time: '2020-05-05T05:56:15.500',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 1134, net_usage_words: 23 },
elapsed: 1134,
net_usage: 184,
scheduled: false,
action_traces: [ [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
{
transaction_id: '7758042xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
processed: {
id: '7758042xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
block_num: 8966xxxx,
block_time: '2020-05-05T05:56:24.000',
producer_block_id: null,
receipt: { status: 'executed', cpu_usage_us: 2823, net_usage_words: 42 },
elapsed: 2823,
net_usage: 336,
scheduled: false,
action_traces: [ [Object], [Object], [Object] ],
account_ram_delta: null,
except: null,
error_code: null
}
}
上記が出力されれば新規EOSアカウント作成が成功しています。
フルソースコード
/****** eosjsを使えるようにするための設定 ******/
const { Api, JsonRpc, RpcError } = require('eosjs');
const { JsSignatureProvider } = require('eosjs/dist/eosjs-jssig');
const {Keygen} = require('eosjs-keygen');
const fetch = require('node-fetch');
const { TextEncoder, TextDecoder } = require('text-encoding');
//const rpc = new JsonRpc('https://eos.greymass.com:443', {fetch}); //mainnet
const rpc = new JsonRpc('https://jungle2.eosio.cr:443', {fetch}); //testnet
const defaultPrivateKey = "5Kxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
/****** 公開鍵・秘密鍵を作成 ******/
async function eosKeyGenerator(){
var sPrivateKey = (await Keygen.generateMasterKeys()).privateKeys;
var sPublicKey = (await Keygen.generateMasterKeys()).publicKeys;
var sKeys = '{"privatekey":' + JSON.stringify(sPrivateKey) + ',"publickey":' + JSON.stringify(sPublicKey) + '}';
var jKeys = JSON.parse(sKeys);
console.log(jKeys);
return jKeys;
}
/****** トークンを送金する ******/
async function send_transaction(sPermission, sSendAccount, sRecAccount, fAmount, sSymbol, sMessage){
var num = new Number(fAmount);
if(sMessage == null) sMessage = '';
try {
const result = await api.transact({
actions: [{
account: 'eosio.token',
name: 'transfer',
authorization: [{
actor: sSendAccount,
permission: sPermission,
}],
data: {
from: sSendAccount,
to: sRecAccount,
quantity: String(num.toFixed(4)) + ' ' + sSymbol,
memo: sMessage,
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
} catch (e) {
console.log("Error:" + e.message);
}
}
/****** RAMを購入する ******/
async function buy_ram(sPermission, sPayAccount, sRecAccount, iBytes){
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'buyrambytes',
authorization: [{
actor: sPayAccount,
permission: sPermission,
}],
data: {
payer: sPayAccount,
receiver: sRecAccount,
bytes: String(iBytes),
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
} catch (e) {
console.log("Error:" + e.message);
}
}
/****** ステーキングする ******/
async function stake_resources(sPermission, sStaker, sRecAccount, fNetQuantity, fCpuQuantity, bTransfer){
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'delegatebw',
authorization: [{
actor: sStaker,
permission: sPermission,
}],
data: {
from: sStaker,
receiver: sRecAccount,
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS',
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS',
transfer: bTransfer,
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
} catch (e) {
console.log("Error:" + e.message);
}
}
/****** アンステーキングする ******/
async function unstake_resources(sPermission, sUnstaker, sRecAccount, fNetQuantity, fCpuQuantity){
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'undelegatebw',
authorization: [{
actor: sUnstaker,
permission: sPermission,
}],
data: {
from: sUnstaker,
receiver: sRecAccount,
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS',
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS',
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
} catch (e) {
console.log("Error:" + e.message);
}
}
/****** 新規EOSアカウントを作成する ******/
async function create_account(sPermission, sCreator, sCreateAccount, sOwnerPublickey, sActivePublickey, iRamByte, fNetQuantity, fCpuQuantity, bTransfer){
var nNum = new Number(fNetQuantity);
var cNum = new Number(fCpuQuantity);
try {
const result = await api.transact({
actions: [{
account: 'eosio',
name: 'newaccount',
authorization: [{
actor: sCreator,
permission: sPermission,
}],
data: {
creator: sCreator,
name: sCreateAccount,
owner: {
threshold: 1,
keys: [{
key: sOwnerPublickey,
weight: 1
}],
accounts: [],
waits: []
},
active: {
threshold: 1,
keys: [{
key: sActivePublickey,
weight: 1
}],
accounts: [],
waits: []
},
},
},
{
account: 'eosio',
name: 'buyrambytes',
authorization: [{
actor: sCreator,
permission: sPermission,
}],
data: {
payer: sCreator,
receiver: sCreateAccount,
bytes: iRamByte,
},
},
{
account: 'eosio',
name: 'delegatebw',
authorization: [{
actor: sCreator,
permission: sPermission,
}],
data: {
from: sCreator,
receiver: sCreateAccount,
stake_net_quantity: String(nNum.toFixed(4)) + ' EOS',
stake_cpu_quantity: String(cNum.toFixed(4)) + ' EOS',
transfer: bTransfer,
}
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.log(result);
} catch (e) {
console.log("Error:" + e.message);
}
}
/****** 関数を実行する ******/
await eosKeyGenerator();
await send_transaction("active", "xxxxxxxxxxxx", "yyyyyyyyyyyy", 1.0000, "EOS", null);
await buy_ram("active", "xxxxxxxxxxxx", "xxxxxxxxxxxx", 8000);
await stake_resources("active", "xxxxxxxxxxxx", "xxxxxxxxxxxx", 0.1000, 0.1000, false);
await unstake_resources("active", "xxxxxxxxxxxx", "xxxxxxxxxxxx", 0.1000, 0.1000, false);
var sOwnerPublickey = "EOS6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var sActivePublickey = "EOS7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
await create_account("active", "xxxxxxxxxxxx", "nnnnnnnnnnnn", sOwnerPublickey, sActivePublickey, 8000, 0.5000, 0.5000, true);
最後に
今回はコピペで貼り付けるだけで使用することができるeosjsの関数を作成してみました。
色んな組み合わせで様々なサービスを展開するのも可能なので是非触ってみてください。
ビットコインは仮想通貨の基軸通貨とも言われており、基本的にどの取引所でも取引できます。
同じビットコインでも、取引所の使い勝手やサービスによって自身に合う取引ができるか異なるため、取引所ごとの特徴を掴むことが重要です。
ここではビットコイン取引におすすめの取引所と、その特徴を紹介します。
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万円以上)※日本円の場合 |