cfx 命名空间
JSON-RPC规范说明
在GitHub上有一个cfx命名空间的JSON-RPC API规范。 你可以在 open-rpc 测试平台中查看它。 查看 Conflux-Rust RPC 的更新日志 以了解更多。
惯例
十六进制值编码
有两种关键的数据类型通过 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 地址的信息,请参阅 地址。
默认的 epochNumber (纪元数) 参数
有几个RPC方法有一个epoch number参数。 Epoch的概念在Conflux中有点类似于其他账本中的区块号(高度),但是一个epoch可能包含多个区块。
Epoch number指定了在一个时间点时,系统的相应状态,这些状态受到共识的约束。 Epoch number参数有以下几种可能的选项:
HEX String
- 整数纪元数。 例如,0x3e8
是epoch 1000。String “earliest”
表示创世区块的epoch。String “latest_checkpoint”
表示存储在内存中的最早的epoch。String “latest_finalized”
- 表示最新的已经确定(通过PoS)的epoch。 (添加自conflux-rustv2.0.0
)String “latest_confirmed”
- 表示最新的已经确认的epoch(使用确认计量器的估计值)。string "latest_state"
- 表示已经执行的最新纪元。String “latest_mined”
- 表示最新的已知epoch。
请注意,由于性能优化,最新的已知epoch没有被执行,所以这些epoch没有可用的状态。 对于大多数与状态查询有关的RPC,推荐使用"latest_state"
。 (有关Conflux中交易生命周期的更多信息,请参考交易生命周期)