Inside IOST #05: JSON-RPCを使う
Inside IOST for Developers
1. JSON-RPC API
IOSTチェーンには、JSON-RPC プロトコルが実装されていますので、それを使用する方法を紹介します。
ここでは、curl コマンドで、ポートは 30001 を利用していますので、次のようにして呼び出します。
curl http://<ノードホスト>:30001/<JSON-RPC API>
本番ノードの場合は、APIゲートウエイが用意されていて、次の操作で呼び出せます。
curl http://api.iost.io/<JSON-RPC API>
結果がJSONで返ってきますので、ここでは jq コマンドで整形して表示することにします。
2. チェーンやノードの状態の取得
2.1 チェーン情報の取得(/getChainInfo)
チェーン自体の情報を取得します。コントラクトがうまく発行できなかったり、トランザクションがうまく実行できなかったりする場合に、状態を確認するために利用します。
取得できるのは、次の情報です。
- net_name: ネットワーク名(メインネット: mainnet、テストネット: testnet、ローカル: iserver.yml で指定した名前)
- protocol_version: プロトコルのバージョン(当面は1.0)
- chain_id: IOSTのチェーンID(メインネット: 1024、テストネット: 1023、ローカル: iserver.yml で指定した名前、初期値1020)
- head_block: 最新ブロック番号
- head_block_hash: 最新ブロックのハッシュ値
- lib_block: 不可逆ブロックの高さ
- lib_block_hash: 不可逆ブロックのハッシュ値
- witness_list: ブロック生成ノードの公開鍵のリスト
- lib_witness_list: 最終の不可逆的ブロック生成ノードの公開鍵のリスト
- pending_witness_list: 次のラウンドでのブロック生成ノードの公開鍵のリスト
- head_blocktime: 先頭ブロック生成時刻
- lib_blocktime: 最終ブロック生成時刻
ここでは、メインネットの情報を取得してみます。
$ curl http://api.iost.io/getChainInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2833 0 2833 0 0 9968 0 --:--:-- --:--:-- --:--:-- 10154
{
"net_name": "mainnet",
"protocol_version": "1.0",
"chain_id": 1024,
"head_block": "218553636",
"head_block_hash": "7yDUw6BDafDuBmgCekXQdUtGDVvLYYP7biJeVWzWuQe7",
"lib_block": "218553576",
"lib_block_hash": "CmPWrr9kP5RXJVagLo4en2w7ogG6CzDQmE1LwBSvxULH",
"witness_list": [
"48GPqW3Wr6AAjVWVTkdwWYhBJqeiNRKDh4hja4BY8iQV",
"5TdgBDKV9FRk8Zt1LxLwswbZfUDBXQVgfJ9kDHM9t9do",
"GiUzmFkgK7ofvuxjSLMeL8nK46UXALDDeSPh31C18FRZ",
"EwF526EwcjSCZdGGeNpmXGmjeoQsRacGsPWUrCvcJ1MT",
"6frvjXKU1Etv41sqyBjCHv3WeUhP21VR9PL4emJteFRX",
"AfPVtfvJ3T4EEiiC1cScz4FVe2bATgK5CDC8bGVCRLwG",
"QYht5Xpsb5tWwcP2asC6FRY7THy3SkBVr8vY8KshBHE",
"GnofHDMzaBEBu8ZSPTzT12Vz13fJBipHfTqGQzXz6zfy",
"6hfs72WZxnjWxHtxtpkK6zpy9d2hLEuGW4x2TG5bkPc8",
"9PRK3iD2EhF2A9bFnnZWfUFw1cVQt3Rt6f8EDKhS2EcP",
"9Z2RfzYpA23qUXg4RiAE2TGeKq4BvBNZJA1Pypv8NknN",
"G5DPSoGy4J4y5ZzGQ5uPXbddJFCyzBzva2r5XjFSsNVa",
"FkG5fLrd9Wz9NKCM1N9MJnAXSin427LBBK363HfpcyXd",
"EfXXgyG5JtPLbNfU5hRbcjxG18co9uW47KmnYwWyZLKa",
"4mG2qjFykmgEJQ5zJQbnKK2CQwHY5tscXJ7eCsTwAwNN",
"4GZhnzok6ameFjsa4ewVB72vN5Tg7MsbWJrorhAGgu2k",
"y6u3XeZFf9tACn3rxqV54FnYqTJ4U2gp1XDRnYb2w8K"
],
"lib_witness_list": [
"48GPqW3Wr6AAjVWVTkdwWYhBJqeiNRKDh4hja4BY8iQV",
"5TdgBDKV9FRk8Zt1LxLwswbZfUDBXQVgfJ9kDHM9t9do",
"GiUzmFkgK7ofvuxjSLMeL8nK46UXALDDeSPh31C18FRZ",
"EwF526EwcjSCZdGGeNpmXGmjeoQsRacGsPWUrCvcJ1MT",
"6frvjXKU1Etv41sqyBjCHv3WeUhP21VR9PL4emJteFRX",
"AfPVtfvJ3T4EEiiC1cScz4FVe2bATgK5CDC8bGVCRLwG",
"QYht5Xpsb5tWwcP2asC6FRY7THy3SkBVr8vY8KshBHE",
"GnofHDMzaBEBu8ZSPTzT12Vz13fJBipHfTqGQzXz6zfy",
"6hfs72WZxnjWxHtxtpkK6zpy9d2hLEuGW4x2TG5bkPc8",
"9PRK3iD2EhF2A9bFnnZWfUFw1cVQt3Rt6f8EDKhS2EcP",
"9Z2RfzYpA23qUXg4RiAE2TGeKq4BvBNZJA1Pypv8NknN",
"G5DPSoGy4J4y5ZzGQ5uPXbddJFCyzBzva2r5XjFSsNVa",
"FkG5fLrd9Wz9NKCM1N9MJnAXSin427LBBK363HfpcyXd",
"EfXXgyG5JtPLbNfU5hRbcjxG18co9uW47KmnYwWyZLKa",
"4mG2qjFykmgEJQ5zJQbnKK2CQwHY5tscXJ7eCsTwAwNN",
"4GZhnzok6ameFjsa4ewVB72vN5Tg7MsbWJrorhAGgu2k",
"y6u3XeZFf9tACn3rxqV54FnYqTJ4U2gp1XDRnYb2w8K"
],
"pending_witness_list": [
"48GPqW3Wr6AAjVWVTkdwWYhBJqeiNRKDh4hja4BY8iQV",
"5TdgBDKV9FRk8Zt1LxLwswbZfUDBXQVgfJ9kDHM9t9do",
"GiUzmFkgK7ofvuxjSLMeL8nK46UXALDDeSPh31C18FRZ",
"EwF526EwcjSCZdGGeNpmXGmjeoQsRacGsPWUrCvcJ1MT",
"6frvjXKU1Etv41sqyBjCHv3WeUhP21VR9PL4emJteFRX",
"AfPVtfvJ3T4EEiiC1cScz4FVe2bATgK5CDC8bGVCRLwG",
"QYht5Xpsb5tWwcP2asC6FRY7THy3SkBVr8vY8KshBHE",
"GnofHDMzaBEBu8ZSPTzT12Vz13fJBipHfTqGQzXz6zfy",
"6hfs72WZxnjWxHtxtpkK6zpy9d2hLEuGW4x2TG5bkPc8",
"9PRK3iD2EhF2A9bFnnZWfUFw1cVQt3Rt6f8EDKhS2EcP",
"G5DPSoGy4J4y5ZzGQ5uPXbddJFCyzBzva2r5XjFSsNVa",
"44QTEb7yNUJo7rZBHyuriEAZkdQPPZVp787Em6akr8m3",
"FkG5fLrd9Wz9NKCM1N9MJnAXSin427LBBK363HfpcyXd",
"AewtqHnbZ5CCfsR3FMxSS7DYgksL8Fs3sZsU5UKy4Rvj",
"GpmxqAjTJZxc5eMVKuDSsG4thCH8KNfYVZQEhyodHWtZ",
"2BynNHAadxFkpMKomNKWoELsqhEgQTCCD89qFVhXzYLC",
"y6u3XeZFf9tACn3rxqV54FnYqTJ4U2gp1XDRnYb2w8K"
],
"head_block_time": "1662696746501034766",
"lib_block_time": "1662696704500648647"
}
ローカルだと次のようになります。
$ curl http://127.0.0.1:30001/getChainInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 528 100 528 0 0 21033 0 --:--:-- --:--:-- --:--:-- 29333
{
"net_name": "debugnet",
"protocol_version": "1.0",
"chain_id": 1020,
"head_block": "27194",
"head_block_hash": "CxbyEELgYnBDi4TGcJsee1mkdfLVsqtyvvbptdEz9xoV",
"lib_block": "27194",
"lib_block_hash": "CxbyEELgYnBDi4TGcJsee1mkdfLVsqtyvvbptdEz9xoV",
"witness_list": [
"6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b"
],
"lib_witness_list": [
"6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b"
],
"pending_witness_list": [
"6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b"
],
"head_block_time": "1662696620500746804",
"lib_block_time": "1662696620500746804"
}
2.2 ノード情報の取得(/getNodeInfo)
ノードの状態が取得できます。トランザクションがうまく発行できないときの原因としてノードのブロックがきちんと同期できていない場合があります。それを確認することができます。ブロックが同期できない場合の原因として、ノードを実行しているサーバーのディスク容量が不足している場合などがあります。その場合は、一度停止して容量を増やし、再度同期させる必要があります。
取得できるのは、次の情報です。
- id: ノードのID
- peer_count: 隣接接続しているノードの数。ローカルの場合は0
- peer_count_inbound: データを受け取っている隣接ノードの数
- peer_count_outbound: データを送っている隣接ノードの数
ここでも、メインネットの情報を取得してみます。メインネットのノードの場合は、peer_count がそれなりの数になっていないと、うまく動作していないことになります。
$ curl http://api.iost.io/getNodeInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 314 100 314 0 0 800 0 --:--:-- --:--:-- --:--:-- 811
{
"build_time": "20220824_114445+0000",
"git_hash": "f1b3f6673be4fb72296911b057840dec8f8851ba",
"mode": "ModeNormal",
"network": {
"id": "12D3KooWRnnq4D3rCsv7fYF2G6A4QjPBYmujnDHMhd4WhdwmTgc7",
"peer_count": 29,
"peer_count_inbound": 20,
"peer_count_outbound": 9
},
"code_version": "3.9.1",
"server_time": "1662695822957005012"
}
ローカルだと次のようになります。ノード1つなので、 peer_count は0です。自前で2つ以上のノードを立ててみると、ノードが同期する様子がわかります。複数のノードを運用する方法は別の機会に記事にします。
$ curl http://127.0.0.1:30001/getNodeInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 312 100 312 0 0 2279 0 --:--:-- --:--:-- --:--:-- 2578
{
"build_time": "20220824_114445+0000",
"git_hash": "f1b3f6673be4fb72296911b057840dec8f8851ba",
"mode": "ModeNormal",
"network": {
"id": "12D3KooWDGVfbbERTVjTUz6Ec6KdA4RGFDzuCXD9i2Q7V5bpZNUm",
"peer_count": 0,
"peer_count_inbound": 0,
"peer_count_outbound": 0
},
"code_version": "3.9.1",
"server_time": "1662695305205499417"
}
3. ブロックとトランザクション情報の取得
3.1 トランザクション情報の取得(/getTxByHash)
トランザクションのハッシュ値を指定して、実行したトランザクションの情報を取得します。トランザクションが受け付けられて実行が始まったら、失敗した場合も情報が残ります。また、実行で消費したGAS量も取得できます。レシートも取得できますので、別途取得する必要はありません。レシートだけを取り出すことも可能です。
取得できるのは、次の情報です。
- status: PENDING: ブロックはキャッシュ内、IRREVERSIBLE: ブロックは不可逆(確定)
- transaction: トランザクション情報
- hash: トランザクションのハッシュ値
- time: トランザクション実行時刻
- expiration: トランザクションの有効期限
- gas_ratio: GAS比率、1.00 (1.00–100.00)を推奨。比率を上げるとネットワーク上でのパックが高速化する
- gas_limit: GASの上限値
- delay: トランザクションの遅延時間(ナノ秒)
- chain_id: トランザクションを実行したブロックチェーンのID
- actions: 最小トランザクション実行単位
- signers: トランザクションの署名リスト
- publisher: 手数料を支払うトランザクションの送信者
- referred_tx: 遅延しているトランザクションのためのトランザクションの依存関係
- amount_limit: トークンの送信上限値。例えば、{“iost”: 100} は、各署名者がトランザクションに100IOSTを超えないことを指定
- tx_receipt: トランザクションのレシート
- block_number: ブロック番号
ローカルだと次のようになります。
では、以前に RAM を購入したときのトランザクションの情報を表示してみます。内部で実行されている内容は次のとおりです。
- token.iost コントラクトの issue 関数で、ram.iost に 3,922,344 バイトの RAMを発行
- token.iost コントラクトの transfer 関数で、bobby から ram.iost へ代金(2.91 IOST)を支払い(転送)
- token.iost コントラクトの transfer 関数で、手数料(0.06 IOST)を ram.iost から deadaddr に転送して破棄
- token.iost コントラクトの transfer 関数で、1,000 バイトの RAM(ram)を ram.iost から alice に転送しています。
GASの消費量は65213で、10 バイトのRAMを消費しています。status_code が SUCCESS になっているので成功しています。
$ curl http://127.0.0.1:30001/getTxByHash/BoRSEsLaHr9uwaZh1yHXKkxGX1UuyYmLXeU1mYck4Myg | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1033 100 1033 0 0 29883 0 --:--:-- --:--:-- --:--:-- 35620
{
"status": "IRREVERSIBLE",
"transaction": {
"hash": "BoRSEsLaHr9uwaZh1yHXKkxGX1UuyYmLXeU1mYck4Myg",
"time": "1655895864733451134",
"expiration": "1655895954733451134",
"gas_ratio": 1,
"gas_limit": 1000000,
"delay": "0",
"chain_id": 1020,
"actions": [
{
"contract": "ram.iost",
"action_name": "buy",
"data": "[\"bobby\",\"alice\",1000]"
}
],
"signers": [],
"publisher": "bobby",
"referred_tx": "",
"amount_limit": [
{
"token": "*",
"value": "unlimited"
}
],
"tx_receipt": {
"tx_hash": "BoRSEsLaHr9uwaZh1yHXKkxGX1UuyYmLXeU1mYck4Myg",
"gas_usage": 65213,
"ram_usage": {
"token.iost": "10"
},
"status_code": "SUCCESS",
"message": "",
"returns": [
"[\"2.91\"]"
],
"receipts": [
{
"func_name": "token.iost/issue",
"content": "[\"ram\",\"ram.iost\",\"3922344\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"iost\",\"bobby\",\"ram.iost\",\"2.91\",\"\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"iost\",\"ram.iost\",\"deadaddr\",\"0.06\",\"\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"ram\",\"ram.iost\",\"alice\",\"1000\",\"\"]"
}
]
}
},
"block_number": "2321"
}
3.2 レシートの取得(/getTxReceiptByTxHash/{hash})
トランザクションハッシュを指定して、トランザクション実行時のレシートのみを取得することもできます。
取得できるのは次の情報です。
- tx_hash: トランザクションのハッシュ値
- gas_usage: GAS 消費量
- ram_usage: RAM 使用量
- status_code: 実行結果のステータスコード(SUCCESS: 成功、GAS_RUN_OUT: GAS不足、BALANCE_NOT_ENOUGH: 残高不足、WRONG_PARAMETER: パラメータ間違い、RUNTIME_ERROR: 実行時エラー、TIMEOUT: タイムアウト、WRONG_TX_FORMAT: トランザクション形式不正、DUPLICCATE_SET_CODE: セットコード重複、UNKNOWN_ERROR: その他のエラー)
- message: ステータースコードの説明
- returns: 戻り値
- receipts: イベントのレシート
$ curl http://127.0.0.1:30001/getTxReceiptByTxHash/BoRSEsLaHr9uwaZh1yHXKkxGX1UuyYmLXeU1mYck4Myg | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 566 100 566 0 0 23346 0 --:--:-- --:--:-- --:--:-- 29789
{
"tx_hash": "BoRSEsLaHr9uwaZh1yHXKkxGX1UuyYmLXeU1mYck4Myg",
"gas_usage": 65213,
"ram_usage": {
"token.iost": "10"
},
"status_code": "SUCCESS",
"message": "",
"returns": [
"[\"2.91\"]"
],
"receipts": [
{
"func_name": "token.iost/issue",
"content": "[\"ram\",\"ram.iost\",\"3922344\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"iost\",\"bobby\",\"ram.iost\",\"2.91\",\"\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"iost\",\"ram.iost\",\"deadaddr\",\"0.06\",\"\"]"
},
{
"func_name": "token.iost/transfer",
"content": "[\"ram\",\"ram.iost\",\"alice\",\"1000\",\"\"]"
}
]
}
3.3 ハッシュ値によるブロック情報の取得(/getBlockByHash/{hash}/{complete})
ブロックのハッシュ値からブロック情報を取得することができます。
取得できるのは次の情報です。
- status: PENDING: ブロックはキャッシュ内、IRREVERSIBLE: ブロックは不可逆
- block: ブロック情報
- hash: ブロックのハッシュ値
- version: ブロックのバージョン番号
- parent_hash: 親ブロックのハッシュ値
- tx_merkle_hash: すべてのトランザクションのマークルツリーハッシュ値
- tx_receipt_merkle_hash: すべてのレシートのマークルツリーハッシュ値
- number: ブロック番号
- witness: ブロックプロデューサーの公開鍵
- time: ブロック生成時間
- gas_usage: ブロックの総GAS消費量
- tx_count: ブロック内のトランザクション数
- info: (予約済、現在未使用)
- transactions: トランザクション
$ curl http://127.0.0.1:30001/getBlockByHash/GqJooRLwiC3TtL9mJFaH4eLMyrnBJMPiSmsX3kLQBNSW/false | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 489 100 489 0 0 18297 0 --:--:-- --:--:-- --:--:-- 21260
{
"status": "IRREVERSIBLE",
"block": {
"hash": "GqJooRLwiC3TtL9mJFaH4eLMyrnBJMPiSmsX3kLQBNSW",
"version": "1",
"parent_hash": "5JUaWCo5H6Cp7B5AaNKjgjwT8fB1tCSHQnZM9TrsKz81",
"tx_merkle_hash": "2WTGotWyWeGaiRn7xtsGRpPWAntGyfjFF8mWumVZQXvU",
"tx_receipt_merkle_hash": "3jxwDA88667E9sJn5BKNbXXkGWPSwDLzZDjWLvd4g8Co",
"number": "2321",
"witness": "6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b",
"time": "1655895865005022051",
"gas_usage": 0,
"tx_count": "2",
"info": null,
"orig_info": "",
"transactions": []
}
}
3.4 ブロック番号によるブロック情報の取得(/getBlockByNumber/{number}/{complete})
ブロック番号を指定して、ブロック情報を取得することもできます。取得できる情報はハッシュ値による取得と同じです。
$ curl http://127.0.0.1:30001/getBlockByNumber/2321/false | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 489 100 489 0 0 39232 0 --:--:-- --:--:-- --:--:-- 61125
{
"status": "IRREVERSIBLE",
"block": {
"hash": "GqJooRLwiC3TtL9mJFaH4eLMyrnBJMPiSmsX3kLQBNSW",
"version": "1",
"parent_hash": "5JUaWCo5H6Cp7B5AaNKjgjwT8fB1tCSHQnZM9TrsKz81",
"tx_merkle_hash": "2WTGotWyWeGaiRn7xtsGRpPWAntGyfjFF8mWumVZQXvU",
"tx_receipt_merkle_hash": "3jxwDA88667E9sJn5BKNbXXkGWPSwDLzZDjWLvd4g8Co",
"number": "2321",
"witness": "6sNQa7PV2SFzqCBtQUcQYJGGoU7XaB6R4xuCQVXNZe6b",
"time": "1655895865005022051",
"gas_usage": 0,
"tx_count": "2",
"info": null,
"orig_info": "",
"transactions": []
}
}
4. アカウント情報の取得
4.1 アカウント情報の取得(/getAccount/{name}/{by_longest_chain})
アカウント名からアカウント情報を取得することができます。
取得できるのは、次の情報です。
- name: アカウント名
- balance: アカウントの残高(IOST)
- gas_info: GAS情報
- ram_info: RAM情報
- permissions: 権限
- group_names: 権限グループ名
- frozen_balances: 凍結した残高の情報
- vote_infos: 投票の情報
$ curl http://127.0.0.1:30001/getAccount/alice/true | jq .
\ % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 711 100 711 0 0 7003 0 --:--:-- --:--:-- --:--:-- 7484
{
"name": "alice",
"balance": 9002.85,
"gas_info": {
"current_total": 573000000,
"transferable_gas": 0,
"pledge_gas": 573000000,
"increase_speed": 2196.5,
"limit": 573000000,
"pledged_info": [
{
"pledger": "alice",
"amount": 1000
}
]
},
"ram_info": {
"available": "1000",
"used": "0",
"total": "1000"
},
"permissions": {
"active": {
"name": "active",
"group_names": [],
"items": [
{
"id": "BnmmMpVRaFcC2aUuE5TeVe8fc5qTven25cjcyzdstdvM",
"is_key_pair": true,
"weight": "100",
"permission": ""
}
],
"threshold": "100"
},
"owner": {
"name": "owner",
"group_names": [],
"items": [
{
"id": "BnmmMpVRaFcC2aUuE5TeVe8fc5qTven25cjcyzdstdvM",
"is_key_pair": true,
"weight": "100",
"permission": ""
}
],
"threshold": "100"
}
},
"groups": {},
"frozen_balances": [],
"vote_infos": []
}
4.2 指定したトークンの残高の取得(/getTokenBalance/{account}/{token}/{by_longest_chain})
アカウントの所有するトークンの残高を取得することができます。
取得できるのは、次の情報です。投票やデポジット(プレッジ)ですぐに利用できなくなっている残高も知ることができます。
- balance: 残高
- frozen_balances: 凍結した残高
$ curl http://127.0.0.1:30001/getTokenBalance/alice/iost/true | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 41 100 41 0 0 13 0 0:00:03 0:00:03 --:--:-- 13
{
"balance": 9002.85,
"frozen_balances": []
}
5. GASとRAMの情報の取得
5.1 GAS生成レートの取得(/getGasRatio)
GASの生成レートを取得します。IOSTの場合は、あまり変動しませんし、運営側でGASを負担できるので、あまり問題にはならないとは思いますが、GAS不足になった場合などに、念の為に確認します。
- lowest_gas_ratio: 最低GAS生成レート
- median_gas_ratio: GAS生成レートの中央値
ここでは、ローカルでは意味がないので、メインネットのレートを取得してみます。
$ curl http://api.iost.io/getGasRatio | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 44 100 44 0 0 109 0 --:--:-- --:--:-- --:--:-- 112
{
"lowest_gas_ratio": 1,
"median_gas_ratio": 1
}
5.2 RAM価格情報の取得(/getRAMInfo)
RAMに関する情報を取得できます。
取得できるのは、次の情報です。
- used_ram: 売却済みRAM(バイト)
- available_ram: 利用可能なRAM(バイト)
- total_ram: 合計RAM(バイト)
- sell_price: RAM売却価格(IOST)
- buy_price: RAM購入価格(IOST)
$ curl http://api.iost.io/getRAMInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 157 100 157 0 0 346 0 --:--:-- --:--:-- --:--:-- 352
{
"used_ram": "42153721238",
"available_ram": "348920992098",
"total_ram": "391074713336",
"sell_price": 0.0028280286168408794,
"buy_price": 0.0028845891891776973
}
ローカルだと次のようになります。
$ curl http://127.0.0.1:30001/getRAMInfo | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 156 100 156 0 0 2923 0 --:--:-- --:--:-- --:--:-- 3250
{
"used_ram": "41231889065",
"available_ram": "344738547279",
"total_ram": "385970436344",
"sell_price": 0.002847691004376303,
"buy_price": 0.0029046448244638293
}