REST 常见问题

更新时间: 2022-11-08 14:25:41

合约调用入参[inputParamListStr]不是JSON格式

如果参数是identity,传入的identity的样式为:

"inputParamListStr" : "[{\"data\":\"n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=\",\"empty\":false,\"value\":\"n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=\"}]"
  • identity 的具体数据,如果是Java语言,可以参考SDK接口,通过使用Utils的工具类Utils.getIdentityByName,可以得到identity 参数的传值。

    Identity identity = Utils.getIdentityByName(name);
    System.out.println(JSON.toJSONString(identity));
    image
    说明

    其中datavalue的值相同, 是通过原始值进行SHA256算法后,并通过base64编码后得到的。

  • 非Java语言,针对一个账户名称,如:testAccount

    1. 对 testAccount 字符串转成 byte(如有中文,按utf-8编码),进行hash(按照SHA256Hash算法)。

    2. 对以上的结果进行Base64编码,转成String格式。

    3. 将String格式的内容替换到 inputParamListStr 的JSON格式中的data的值和value的值,如:n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=

byte32 类型的参数在调用合约中如何传值

参考以下SDK的接口示例:

image
上一篇: 密钥托管交易接口 下一篇: Solidity 合约开发
阿里云首页 区块链服务 相关技术圈