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 地址的信息,请参阅 地址。