2 JSON-RPC API
2.1 请求-响应模板
区块链节点对外提供 JSON-RPC 方式的服务。服务采用 Http 或 Https 的网络传输协议。JSON-RPC 的服务采用请求-响应的方式。请求报文中包含方法名和参数数组。响应报文中包含结果。根据请求的操作是否需要改变区块链账本数据,大体可以把请求-响应的模板分为两类。
第一类:无需改变账本数据,这类操作不会改变账本数据,无需节点间共识。如查询交易结果,生成账户密钥对等;
第二类:需要改变账本数据,这类操作可能会改变账本数据,执行的结果要等到节点间达成共识之后才能确定。如激活账户,创建通证等。
1. 无需改变账本数据的模板
请求:
{
"method": "方法名",
"params": [
{
"参数名": "参数值",
"参数名": "参数值"
}
]
}
字段名称 | 类型 | 描述 |
---|---|---|
method | string | JSON-RPC API 的方法名 |
params | array | 参数数组 |
成功情况的响应:
{
"result": {
"status": "success",
...,
...
}
}
错误情况的响应:
{
"result": {
"status": "error",
...,
"error": "badSecret",
"error_code": 40,
"error_message": "Secret does not match account."
}
}
字段名称 | 类型 | 描述 |
---|---|---|
error | string | 响应错误原因,可参考响应错误代码 |
error_code | int | 响应错误代码 |
error_message | string | 响应错误信息 |
status | string | 响应状态,即JSON-RPC服务状态。success:表示正常。error:表示错误。 |
2. 需要改变账本数据的模板
请求:
{
"method": "方法名",
"params": [
{
"secret": "ss3ZBtHP********ryGE4Kuf",
"tx_json":{...},
"参数名": "参数值",
"参数名": "参数值"
}
]
}
字段名称 | 类型 | 描述 |
---|---|---|
method | string | JSON-RPC API 的方法名 |
params | array | 参数数组 |
交易成功情况的响应:
{
"result": {
"status": "success",
...,
"engine_result": "tesSUCCESS",
"engine_result_code": 0,
"engine_result_message": "The transaction was applied. Only final in a validated ledger.",
"tx_blob": "1200002280000000240000000F614000000000000064684000000000002710732103......9EA7C06737472696E677D0474657374E1F1",
"tx_json": {
"Account": "hDg53Haik2475DJx8bjMDSDPj4VX7rtaMd",
"Amount": "30000000",
"Destination": "hnUy2SHThB9DubsPmkJZUXTf5FcNDGhYEA",
"Fee": "10000",
"Flags": 2147483648,
"Sequence": 15,
"SigningPubKey": "029A80E85C9EAFE4CF660724D4ECE4F2B619376524AF37A2E1172E81CC071B7D0C",
"TransactionType": "Payment",
"TxnSignature": "3045022100936B1065E93A8E727A967D2FFFB530402206FB684B1CEE49682B4F3F1E741C3D75CB9E189F8CFD764D56A0AB49261FDB05561F88A4DE3B1F893A90E0F8942322894F",
"hash": "D6CC7C7790AFAE6E1C40BDD8F4264FE070DACD9EEEAFEFB3B6BCBEC57964354F"
}
}
}
交易失败情况的响应:
{
"result": {
"status": "success",
...,
"engine_result": "tecUNFUNDED",
"engine_result_code": 129,
"engine_result_message": "The transaction was applied. Only final in a validated ledger.",
...,
}
}
字段名称 | 类型 | 描述 |
---|---|---|
engine_result | string | 交易执行结果,可参考交易结果代码 |
engine_result_code | int | 交易结果代码 |
engine_result_message | string | 交易结果信息 |
status | string | 响应状态,即JSON-RPC服务状态。success:表示正常。error:表示错误。 |
tx_blob | string | 交易要素,二进制数据格式 |
tx_json | object | 交易要素,json格式 |
Account | string | 源账号地址 |
Fee | string | 交易的gas费用,单位为Drops |
Flags | unsigned int | 交易标志位,默认是 2147483648 = 0x80000000 ,表示需要完整的规范签名。 |
Sequence | string | 交易序号。每个账户拥有自己的sequence,从1开始,每次主动发起的交易,sequence自增1,不能重复使用。 |
SigningPubKey | string | 签名公钥 |
TransactionType | string | 交易类型,包括:Payment:转账;AccountSet:账号设置;TrustSet:授信;OfferCreate:创建挂单;OfferCancel:取消挂单等,详见JSON-PRC API接口 |
TxnSignature | string | 交易签名。对除TxnSignature字段外序列化后的交易要素,用源账户私钥进行签名的结果。 |
hash | string | 交易流水号 |
Destination | string | (可选)目标账号地址(有些交易没有目标账号地址) |