智能合约中 public 状态的属性可以通过 HTTP GET 方式进行查询,查询方式为:
curl {serverAddress}/api/v2/contracts/{contractName}/states/{statePath}
注意,本接口仅能查询基本类型的数据,复杂类型请通过状态查询函数来查询。
- serverAddress:服务地址
- contractName:合约名称
- statePath:由 '.' 分隔的状态路径。如:
holding.0
将会查询contract.holding[0]
- 返回值:如果路径指向的是简单状态值,则返回值本身;如果是 Mapping 或 Vector,返回其包含的元素条数;如果是自定义类型,返回成员数量
例如,查询某地址参与众筹的信息可以访问如下地址:
curl {serverAddress}/api/v2/contracts/CrowdFunding/fundingOf.{Address}
智能合约中通过 @constant
注解修饰的方法为状态查询函数,状态查函数的返回值应是基本类型、简单自定义类型、基本类型及简单自定义类型构成的数组。且序列化为 JSON
后的字符串长度小于32K。状态查询函数通过 HTTP POST 方式查询,查询方式为:
curl -X POST \
{serverAddress}/api/v2/contracts/{contractName}/constant/{methodName}
-H 'Content-Type: application/json' \
-d '["arg1", 2, true]'
- serverAddress:服务地址
- contractName:合约名称
- methodName:查询函数名称
- body:查询函数参数数组转换为的
JSON
字符串,如:'["arg1", 2, true]'
表示三个参数"arg1"
、2
和true
- 返回值:如调用成功,返回查询函数的结果