Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1.62 KB

4.3 查询合约状态.md

File metadata and controls

37 lines (27 loc) · 1.62 KB

4.3.1 简单状态查询

智能合约中 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}

4.3.2 状态查询函数查询

智能合约中通过 @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"2true
  • 返回值:如调用成功,返回查询函数的结果