cfx 命名空间
JSON-RPC规范说明
在GitHub上有一个cfx命名空间的JSON-RPC API规范。 您可以在open-rpc playground中查看它。
惯例
十六进制值编码
有两种关键的数据类型通过 JSON 传递:未格式化的字节数组和数量。 二者都使用十六进制编码传递,但对格式化有不同的要求。
数值
当编码数值(整数,数字)时:使用最紧凑的表示方式编码为十六进制,并加上“0x”前缀。 零应表示为"0x0"。 例如:
- 0x41(十进制的 65)
- 0x400(十进制的 1024)
- 错误样例:0x(应该至少有一位数字 - 零是“0x0”)
- 错误样例:0x0400(不允许有前导零)
- 错误样例::ff(缺少0x前缀)
未格式化的数据
当编码未格式化的数据(字节数组、哈希值、字节码数组)时:使用两个十六进制数字表示每个字节,并在前面加上“0x”作为前缀。 例如:
- 0x41(size 1,- "A")
- 0x004200(size 3,- "\0B\0")
- 0x(size 0,- "")
- 错误: 0xf0f0f(必须是偶数位数)。
- 错误: 004200(缺少0x前缀)。
请注意,区块和交易的哈希值是用32个字节来表示的。
Base32 地址
BASE32:Base32 地址应该编码为一个ASCII字符串,包含42个字符加上网络前缀、分隔符和可选字段。 请注意以下关于base32地址作为RPC参数的限制条件:
- 网络前缀应该与节点的网络匹配,例如:cfx:acc7uawf5ubtnmezvhu9dhc6sghea0403y2dgpyfjp可以发送给主网节点,cfxtest:acc7uawf5ubtnmezvhu9dhc6sghea0403ywjz6wtpg可以发送给测试网节点。 值得注意的是,这两个示例地址对应于不同网络上的同一个账户。
- 无论包含还是省去地址类型都是可以接受的,例如:cfx:aarc9abycue0hhzgyrr53m6cxedgccrmmyybjgh4xg和cfx:type.user:aarc9abycue0hhzgyrr53m6cxedgccrmmyybjgh4xg是等价的。 但是,类型不正确的地址,例如:cfx:type.contract:aarc9abycue0hhzgyrr53m6cxedgccrmmyybjgh4xg,会被拒绝。
- 全大写或者全小写地址都是可以接受的,例如:cfx:aarc9abycue0hhzgyrr53m6cxedgccrmmyybjgh4xg和CFX:AARC9ABYCUE0HHZGYRR53M6CXEDGCCRMMYYBJGH4XG都是有效的。 但混合大小写地址会被拒绝。
为获取更多关于 Base32 地址的信息,请参阅 地址。