调用合约方法接口
更新时间:2020-04-09
调用合约方法接口
接口描述
调用以太坊智能合约方法,包括call和transaction类型方法。
权限说明
API权限认证采用Basic Auth方式,请求发起人需要具有合法的Username和Password才能发起请求,其中Username和Password详见所创建的以太坊网络。查看以太坊网络
注意事项
如果请求中没有用户认证信息(即匿名访问),返回401 Unauthorized
,错误信息:401 Authorization Required
。
服务域名
以太坊合约网关接口服务域名地址<ContractGateWayHost>
详见BBE中所创建的以太坊网络详情。查看以太坊网络
请求结构
POST /v2/ethereum/tx/{contract}/{funcName}?clientToken={clientToken} HTTP/1.1
Host: <ContractGateWayHost>
Content-Type: application/json
请求头域
头域 | 说明 | 是否必须 |
---|---|---|
Content-Type | 值为application/json | 必须 |
请求参数
名称 | 类型 | 位置 | 描述 | 是否必须 |
---|---|---|---|---|
contract | String | URL参数 | 合约地址 | 必须 |
funcName | String | URL参数 | 请求的合约方法 | 必须 |
clientToken | String | Query参数 | 幂等性Token,是一个长度不超过64位的ASCII字符串 | 非必须 |
from | String | RequestBody参数 | 合约调用者地址 | 必须 |
jsonrpcUrl | String | RequestBody参数 | 节点JSON-RPC地址 | 非必须 |
callbackUrl | String | RequestBody参数 | 交易成功回调地址 | 非必须 |
privateKey | String | RequestBody参数 | 合约调用者地址私钥 | 选填,call类型可为空,transaction类型必填 |
invokeParameters | JsonObject | RequestBody参数 | 合约方法参数 | 选填,根据合约方法所需参数填写 |
optConfigs | OptConfigs | RequestBody参数 | 合约通用参数,可选包括gasLimit、gasPrice、nonce、ethValue | 选填 |
使用限制
- 支持合约方法输入参数: intX/uintX, string, address, array, slice, bytes, bytes32
- 支持合约方法输出参数: intX/uintX, string, address, slice, bytes, bytes32
响应头域
除公共头域外,无其它特殊头域。
响应参数
名称 | 类型 | 描述 |
---|---|---|
requestId | String | 用户请求ID |
result | JsonObject | 请求返回结果数据 |
txId | String | transaction类型请求时返回的交易Hash |
Transaction类型请求示例
说明:
- optConfigs中的参数为可选,如不指定或值为0,合约网关将根据合约方法计算nonce、gasLimit和gasPrice。
- callbackUrl回调参数为transaction类型交易上链成功后,合约网关会将上链信息以POST请求形式推送给回调地址,推送信息详见交易结果查询接口
POST /v2/ethereum/tx/0x134bfd7a3d43ca3b4599718045156ada22ec8591/setValue?clientToken=8dbe1955-c616-4d60-97e8-e48bd2063906 HTTP/1.1
Host: 106.12.189.XXX:8080
Content-Type: application/json
{
"from":"0x7244Ea287849942bAAC280B1912A575aEeCCc792",
"privateKey": "3BAB234C5FC756C317BB1CF12F3F5C*****114B0F2B2033BDBA41AA22F6734E4",
"jsonrpcUrl":"",
"callbackUrl":"",
"invokeParameters":{
"i": 111,
"s": "baidu"
},
"optConfigs": {
"ethValue": 0,
"gasLimit": 0,
"gasPrice": 0,
"nonce": 0
}
}
Transaction类型请求响应示例
HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 07:07:08 GMT
Content Type: application/json; charset=utf-8
Content-Length: 153
{
"requestId": "47026c75-008f-4fe5-be1f-807f8244df6f",
"result": {
"txId": "0x208140b148622f260f354c38d9424722949cb1b31f542cd33125630dfa6c9809"
}
}
说明:根据txId获取交易上链结果详见:交易结果查询接口
Call类型请求示例
POST /v2/ethereum/tx/0x134bfd7a3d43ca3b4599718045156ada22ec8591/getValue HTTP/1.1
Host: 106.12.189.XXX:8080
Content-Type: application/json
{
"from":"0x7244Ea287849942bAAC280B1912A575aEeCCc792",
"jsonrpcUrl":"",
"invokeParameters":{}
}
Call类型请求响应示例
HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 07:16:36 GMT
Content Type: application/json; charset=utf-8
Content-Length: 105
{
"requestId": "a8739881-8eb0-411c-bbbb-5bd5cf0eba65",
"result": {
"i": 111,
"s": "bbe"
}
}