欢迎来到EOS小白学习系列,本系列会记录EOS学习过程中的一些操作和细节,大饼果子非C++出身,如有错误,欢迎指出
接上一篇:
EOS小白学习(四)使用http请求EOS节点
本篇将会列出EOS支持的HTTP API(chain和history),没有过多的讲解,只是小小的给了几个应用场景和调用的数据,以方便大家使用
1. chain/get_info(请求链的信息)
应用场景:
去查当前区块的业务,尤其是执行合约的时候,会附带一个reference的block,用于检查合约执行的action是否因为过期不允许上链
POST:
http://127.0.0.1:8888/v1/chain/get_info
BODY: 什么都不需要填
{}
RESPONSE:
{
"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就不可用