EOS小白學習(五)EOS的HTTP API

歡迎來到EOS小白學習系列,本系列會記錄EOS學習過程當中的一些操做和細節,大餅果子非C++出身,若有錯誤,歡迎指出html

接上一篇:mysql

EOS小白學習(四)使用http請求EOS節點

本篇將會列出EOS支持的HTTP API(chain和history),沒有過多的講解,只是小小的給了幾個應用場景和調用的數據,以方便你們使用sql

 

1. chain/get_info(請求鏈的信息)數據庫

應用場景:json

去查當前區塊的業務,尤爲是執行合約的時候,會附帶一個reference的block,用於檢查合約執行的action是否由於過時不容許上鍊api

POST:學習

http://127.0.0.1:8888/v1/chain/get_info

BODY: 什麼都不須要填ui

{}

RESPONSE:
spa

 

{ "server_version": "75635168", "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f", "head_block_num": 43060, "last_irreversible_block_num": 43059, "last_irreversible_block_id": "0000a833ade6bcfaa05490c14b9e2dec3b59271001314048405a0b2b8fb35f7e", "head_block_id": "0000a834303d5901171d86c699f0a00a309dcf86ad28252f1b05191b3f3f509e", "head_block_time": "2018-07-24T06:56:29.500", "head_block_producer": "eosio", "virtual_block_cpu_limit": 200000000, "virtual_block_net_limit": 1048576000, "block_cpu_limit": 199900, "block_net_limit": 1048576 }

 

 

2. chain/get_block(請求block的信息)插件

應用場景:

除了上述執行合約的須要以外,還有比較基本的就是去查詢block的信息

POST:

http://127.0.0.1:8888/v1/chain/get_block

BODY: 須要填寫block的number

{
  "block_num_or_id": 19238
}

RESPONSE:

{ "timestamp": "2018-07-22T02:55:41.000", "producer": "eosio", "confirmed": 0, "previous": "00004b25b6213b5de760937e2315611de3a65cdacfea4bdf757ba46730d79d06", "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000", "action_mroot": "1738e6b70e77ce96a56982dc3eda3cc2191801e1e15854935508c91891c10385", "schedule_version": 0, "new_producers": null, "header_extensions": [], "producer_signature": "SIG_K1_Jwy7AtXzLMX6wy4DfYQhQ2vKSaA77k4RH7fCBh9cq6FMA8hzdwY5nHSSJzUbgTL8tnzRoerAzgrY3aqNPuvCMgWcreN7rz", "transactions": [], "block_extensions": [], "id": "00004b269841c0b8899b8c5218eaf1d5beb1881ece8f1303954cc65d944a8365", "block_num": 19238, "ref_block_prefix": 1384946569 }

 

 

3. chain/get_account(請求account的信息)

應用場景:

查看account是否存在,而且查看account的資源使用狀況

POST:

http://127.0.0.1:8888/v1/chain/get_account

BODY: 須要填寫account的名字

{
  "account_name":"dabingguozi"
}

RESPONSE:

{ "account_name": "dabingguozi", "head_block_num": 44279, "head_block_time": "2018-07-24T07:06:39.000", "privileged": false, "last_code_update": "1970-01-01T00:00:00.000", "created": "2018-07-21T08:04:17.000", "core_liquid_balance": "554.0000 SYS", "ram_quota": 8150, "net_weight": 10000000, "cpu_weight": 10000000, "net_limit": { "used": 0, "available": "347781061036", "max": "347781061036" }, "cpu_limit": { "used": 0, "available": "66333973128", "max": "66333973128" }, "ram_usage": 2996, "permissions": [ { "perm_name": "active", "parent": "owner", "required_auth": { "threshold": 1, "keys": [ { "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "weight": 1 } ], "accounts": [], "waits": [] } }, { "perm_name": "owner", "parent": "", "required_auth": { "threshold": 1, "keys": [ { "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV", "weight": 1 } ], "accounts": [], "waits": [] } } ], "total_resources": { "owner": "dabingguozi", "net_weight": "1000.0000 SYS", "cpu_weight": "1000.0000 SYS", "ram_bytes": 8150 }, "self_delegated_bandwidth": null, "refund_request": null, "voter_info": null }

 


4. chain/get_abi(請求合約的信息)

應用場景:

去查看合約暴露的方法,去看合約的表名,方便合約執行,方便數據庫讀取

POST:

http://127.0.0.1:8888/v1/chain/get_abi

BODY: 須要填寫合約用戶名字

{
  "account_name":"eosio.token"
}

RESPONSE:

{ "account_name": "eosio.token", "abi": { "version": "eosio::abi/1.0", "types": [ { "new_type_name": "account_name", "type": "name" } ], "structs": [ { "name": "transfer", "base": "", "fields": [ { "name": "from", "type": "account_name" }, { "name": "to", "type": "account_name" }, { "name": "quantity", "type": "asset" }, { "name": "memo", "type": "string" } ] }, { "name": "create", "base": "", "fields": [ { "name": "issuer", "type": "account_name" }, { "name": "maximum_supply", "type": "asset" } ] }, { "name": "issue", "base": "", "fields": [ { "name": "to", "type": "account_name" }, { "name": "quantity", "type": "asset" }, { "name": "memo", "type": "string" } ] }, { "name": "account", "base": "", "fields": [ { "name": "balance", "type": "asset" } ] }, { "name": "currency_stats", "base": "", "fields": [ { "name": "supply", "type": "asset" }, { "name": "max_supply", "type": "asset" }, { "name": "issuer", "type": "account_name" } ] } ], "actions": [ { "name": "transfer", "type": "transfer", "ricardian_contract": "" }, { "name": "issue", "type": "issue", "ricardian_contract": "" }, { "name": "create", "type": "create", "ricardian_contract": "" } ], "tables": [ { "name": "accounts", "index_type": "i64", "key_names": [ "currency" ], "key_types": [ "uint64" ], "type": "account" }, { "name": "stat", "index_type": "i64", "key_names": [ "currency" ], "key_types": [ "uint64" ], "type": "currency_stats" } ], "ricardian_clauses": [], "error_messages": [], "abi_extensions": [] } }

5. chain/get_table_rows(請求表的信息)

應用場景:

取出數據庫數據,好比幣種餘額,合約代碼要求存的中間狀態等等

POST:

http://127.0.0.1:8888/v1/chain/get_table_rows

BODY: 其中code是合約帳戶,scope是合約中設定的(至關於mysql的database),table也是合約中設定的(至關於mysql的table)

{
  "code":"eosio.token",
  "scope": "dabingguozi",
  "table": "accounts",
  "json": true
}

RESPONSE:

{ "rows": [ { "balance": "554.0000 SYS" } ], "more": false }

 

6. chain/get_currency_balance(請求餘額的信息)

應用場景:

取出餘額

POST:

http://127.0.0.1:8888/v1/chain/get_currency_balance

BODY: 其中code是合約帳戶,account是用戶account

{
  "code":"eosio.token",
  "account": "dabingguozi"
}

RESPONSE:

[ "554.0000 SYS" ]

 

7. history/get_transactions(請求transaction的信息)

應用場景:

合約執行流水,好比說轉帳流水,帳戶建立流水等

POST:

http://127.0.0.1:8888/v1/history/get_transaction

BODY: 須要填寫transaction的id

{
  "id":"b09395d938e594b838277453cea832ddc5d57ab5e92d8763ea011df9e35d7b34"
}

RESPONSE:

{ "id": "b09395d938e594b838277453cea832ddc5d57ab5e92d8763ea011df9e35d7b34", "trx": { "receipt": { "status": "executed", "cpu_usage_us": 2751, "net_usage_words": 16, "trx": [ 1, { "signatures": [ "SIG_K1_KfYZbh4ed1qamontvHfnV5AVUFkMd5NzGxTAXqGmN96xmtUHw5YqJMkFwejRs8JbngUgdD44y8zrRszNwTKVjzZ9tJkEJW" ], "compression": "none", "packed_context_free_data": "", "packed_trx": "4bf2535b264b899b8c52000000000100a6823403ea3055000000572d3ccdcd010000000000ea305500000000a8ed3232210000000000ea305500dca79ab1e98e49a08601000000000004535953000000000000" } ] }, "trx": { "expiration": "2018-07-22T02:56:11", "ref_block_num": 19238, "ref_block_prefix": 1384946569, "max_net_usage_words": 0, "max_cpu_usage_ms": 0, "delay_sec": 0, "context_free_actions": [], "actions": [ { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "eosio", "permission": "active" } ], "data": { "from": "eosio", "to": "dabingguozi", "quantity": "10.0000 SYS", "memo": "" }, "hex_data": "0000000000ea305500dca79ab1e98e49a086010000000000045359530000000000" } ], "transaction_extensions": [], "signatures": [ "SIG_K1_KfYZbh4ed1qamontvHfnV5AVUFkMd5NzGxTAXqGmN96xmtUHw5YqJMkFwejRs8JbngUgdD44y8zrRszNwTKVjzZ9tJkEJW" ], "context_free_data": [] } }, "block_time": "2018-07-22T02:55:42.000", "block_num": 19240, "last_irreversible_block": 63969, "traces": [ { "receipt": { "receiver": "dabingguozi", "act_digest": "f8ce7062290be813e6484e50c7c0e3c22a9898e3240bab76f7e11b99c07abe52", "global_sequence": 19298, "recv_sequence": 5, "auth_sequence": [ [ "eosio", 19293 ] ], "code_sequence": 1, "abi_sequence": 1 }, "act": { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "eosio", "permission": "active" } ], "data": { "from": "eosio", "to": "dabingguozi", "quantity": "10.0000 SYS", "memo": "" }, "hex_data": "0000000000ea305500dca79ab1e98e49a086010000000000045359530000000000" }, "elapsed": 6, "cpu_usage": 0, "console": "", "total_cpu_usage": 0, "trx_id": "b09395d938e594b838277453cea832ddc5d57ab5e92d8763ea011df9e35d7b34", "inline_traces": [] } ] }

 

8. history/get_actions(請求actions的信息)

應用場景:

合約執行流水

POST:

http://127.0.0.1:8888/v1/history/get_actions

BODY: 其中account_name若是沒有在config中filter設置過,response就什麼都拿不到

{
  "pos":0,
  "offset":1000,
  "account_name": "dabingguozi"
}

RESPONSE:

{ "actions": [ { "global_action_seq": 19298, "account_action_seq": 0, "block_num": 19240, "block_time": "2018-07-22T02:55:42.000", "action_trace": { "receipt": { "receiver": "dabingguozi", "act_digest": "f8ce7062290be813e6484e50c7c0e3c22a9898e3240bab76f7e11b99c07abe52", "global_sequence": 19298, "recv_sequence": 5, "auth_sequence": [ [ "eosio", 19293 ] ], "code_sequence": 1, "abi_sequence": 1 }, "act": { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "eosio", "permission": "active" } ], "data": { "from": "eosio", "to": "dabingguozi", "quantity": "10.0000 SYS", "memo": "" }, "hex_data": "0000000000ea305500dca79ab1e98e49a086010000000000045359530000000000" }, "elapsed": 6, "cpu_usage": 0, "console": "", "total_cpu_usage": 0, "trx_id": "b09395d938e594b838277453cea832ddc5d57ab5e92d8763ea011df9e35d7b34", "inline_traces": [] } }, { "global_action_seq": 21095, "account_action_seq": 1, "block_num": 21034, "block_time": "2018-07-22T03:10:39.000", "action_trace": { "receipt": { "receiver": "dabingguozi", "act_digest": "72ae6a2af84b85d4b4e20190a56904f53afa2a79ab4c47ca2f15874c4c309205", "global_sequence": 21095, "recv_sequence": 6, "auth_sequence": [ [ "eosio", 21090 ] ], "code_sequence": 1, "abi_sequence": 1 }, "act": { "account": "eosio.token", "name": "transfer", "authorization": [ { "actor": "eosio", "permission": "active" } ], "data": { "from": "eosio", "to": "dabingguozi", "quantity": "2.0000 SYS", "memo": "" }, "hex_data": "0000000000ea305500dca79ab1e98e49204e000000000000045359530000000000" }, "elapsed": 6, "cpu_usage": 0, "console": "", "total_cpu_usage": 0, "trx_id": "e1cafa2561470a0b489a4e2032375a5c88665f75e5172bac7b574cd051079d42", "inline_traces": [] } } ], "last_irreversible_block": 64270 }

 

致此,一些目前經常使用的HTTP API,就列在這裏了,以後會有進階版舉例其餘API

下一篇是時候總結和討論一下eos的結構了,接鏈接:

(在編輯。。。)

 

ps. 由於我沒有在插件中設置wallet-api,因此wallet相關的HTTP API就不可用

相關文章
相關標籤/搜索