调用合约方法接口
更新时间:2019-09-24
调用合约方法接口
接口描述
调用Quorum智能合约方法,包括call和transaction类型方法。
权限说明
API权限认证采用Basic Auth方式,请求发起人需要具有合法的Username和Password才能发起请求,其中Username和Password详见所创建的以太坊网络。查看Quorum联盟
注意事项
如果请求中没有用户认证信息(即匿名访问),返回401 Unauthorized
,错误信息:401 Authorization Required
。
服务域名
Quorum合约网关接口服务域名地址<ContractGateWayHost>
详见BBE中所创建或加入的Quorum联盟详情。查看Quorum联盟
请求结构
POST /v2/quorum/tx/{contract}/{funcName}?clientToken={clientToken} HTTP/1.1
Host: <ContractGateWayHost>
Content-Type: application/json
请求头域
头域 | 类型 | 说明 | 是否必须 |
---|---|---|---|
Content-Type | String | 值为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参数 | transaction类型交易,上链成功后回调地址 | 选填 |
privateKey | String | RequestBody参数 | 合约调用者地址私钥 | 选填,transaction类型必填,call类型可为空 |
privateFor | Array | RequestBody参数 | 私有合约相关节点公钥 | 必须,公开合约值为空 |
invokeParameters | JsonObject | RequestBody参数 | 合约方法参数 | 选填,根据合约方法所需参数填写 |
optConfigs | OptConfigs | RequestBody参数 | 合约通用参数,可选包括gasLimit、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、gas。
- callbackUrl回调参数为transaction类型交易上链成功后,合约网关会将上链信息以POST请求形式推送给回调地址,推送信息详见交易结果查询接口
POST /v2/quorum/tx/0x5c695f5b6c14d4d59b1b2f65a7fb66f02fe15469/setValue?clientToken=562dcec4-61c7-4bd5-932e-673861022f8b HTTP/1.1
Host: 106.12.189.XXX:8080
Content-Type: application/json
{
"from":"0x04c512DEA0943e27D036EA5550987d0fF8b48a60",
"privateKey": "3BAB234C5FC756C317BB1CF12F3F5C*****114B0F2B2033BDBA41AA22F6734E4",
"jsonrpcUrl":"http://106.12.189.XXX:8081/quorum-jsonrpc/ba9f7aad-2f49-4aab-8bd2-12d7ab009937/6d398463",
"callbackUrl":"http://xxx",
"privateFor":["DMAxFR47Q8oIi4Qdb+IM6iepOkxFqz5XMNsZgiFhbEY=","pRpHnO/G+9tRlCfiy/OuSXuNRWy9J+d22f7l05W6LHQ="],
"invokeParameters":{
"i":111,
"s":"baidu"
},
"optConfigs":{
"ethValue": 0,
"gasLimit": 0,
"nonce": 0
}
}
Call类型交易请求示例
POST /v2/quorum/tx/0x5c695f5b6c14d4d59b1b2f65a7fb66f02fe15469/getValue HTTP/1.1
Host: 106.12.189.XXX:8080
Content-Type: application/json
{
"from":"0x04c512DEA0943e27D036EA5550987d0fF8b48a60",
"jsonrpcUrl":"http://106.12.189.XXX:8081/quorum-jsonrpc/ee7aa8d8-ac62-4824-9e2d-585c5ac54b17/249f2b8a",
"privateFor":["DMAxFR47Q8oIi4Qdb+IM6iepOkxFqz5XMNsZgiFhbEY=","pRpHnO/G+9tRlCfiy/OuSXuNRWy9J+d22f7l05W6LHQ="],
"invokeParameters":{}
}
Transaction类型请求响应示例
HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 09:22:16 GMT
Content Type: application/json; charset=utf-8
Content-Length: 157
{
"requestId": "7b4faa25-d74f-49aa-9299-8de6981dec59",
"result": {
"txId": "0x9efd1bae01055189f067d7f0a0095f9626672894f5132bc4573abb3728dde026"
}
}
说明:根据txId获取交易上链结果详见:交易结果查询接口
Call类型请求响应示例
HTTP/1.1 200 OK
Date: Thu, 19 Sep 2019 09:46:00 GMT
Content Type: application/json; charset=utf-8
Content-Length: 107
{
"requestId": "91c0ed8b-69c8-42c2-8daf-6f8c23e29000",
"result": {
"i": 111,
"s": "baidu"
}
}