Skip to main content

Conflux 网络 v2.1.0 升级详解

Conflux 网络将在近期进行一次小的 hardfork 升级 -- v2.1.0,测试网已升级完成 具体参看 For English check here

本次升级包含四个 CIP,其中CIP94, CIP99影响大一些,其他是修复 bug 及优化. 本文对这次升级做一个详解。

CIP-94 详解

CIP-94 为 Conflux 链引入了一个 DAO 投票机制。允许社区通过质押CFX 并投票的方式调整链共识参数。目前支持投票的两个参数:

  • PoW base reward
  • PoS interest rate

投票每隔两个月会进行一次,任何人都可以参与,在一轮投票结束之后,会根据投票的结果调整参数。该升级可让 Conflux 社区成员充分参与治理,同时此两个参数的调整更加灵活,无需硬分叉即可调整。

具体的 CIP 内容和机制可参看这篇介绍。

另外官方也提供 DAO 投票 Dapp,用户可直接使用 Fluent 钱包,连接参与 DAO 投票。

CIP-99 详解

CIP-99 主要是调整了 PoS 节点进委员会后,不参与投票被强制退休的检测时间长短。CIP-99 之前,如果一个委员会成员节点,超过 1 小时不正常工作,那么该节点状态会被强制设为退休,所有的票自动 unlock,节点的退休状态会持续 7 天,unlock 的票经过 7-14 天的时间方可取出。

为了降低 PoS 节点的运行成本和复杂度,CIP99将参数做了一些调整:

  • 强制退休检测时间由一小时改为三小时,即如果一个委员会节点超过三小时不持续投票,才会被认为 down 掉,并进行强制退休操作。
  • 节点强制退休状态持续时间从 7 天改为 1 天。
  • PoS 票 unlock 锁定时间由 7 天改为 1 天。但锁定时间由 7 天改为 13 天。

这些参数的调整可以大大降低节点被强制退休的概率,并且强制退休节点恢复的时间也被大大缩短。

FullState

v2.1.0 版本另外一大更新是优化了节点 FullState 的实现。所谓的 FullState 即是支持区块链全历史状态查询。比如查询某账户地址在任意区块高度时的 balance, 任意高度时的 nonce 等。大部分情况下只需查询最新状态,但一些特殊应用会有此需求,比如 TheGraph。

在本次升级之前,Conflux-Rust 是通过节点 snapshot 机制来实现 FullState 查询的,随着数据的增大,单个 snapshot 所占用的存储空间越来越大(几十G),一个 snapshot 只能支持 2000 epoch 状态查询,如果想通过 snapshot 支持全量状态查询从空间占用来说是不可能的。

本次升级后,采用了新的 FullState 存储实现。使得全历史状态查询成为可能,如果想运行一个支持 FullState 查询的节点需要做一些额外的配置,并且机器需要额外的空间存储 FullState 数据。

  • enable_single_mpt_storage 以存储所有的历史状态
  • single_mpt_space = "evm" 以仅存储 eSpace 状态。

注意,你需要重新同步一个归档节点来重建所有的历史状态。如果只需要 eSpace 的 fullstate 则只需要从 eSpace hardfork 区块开始重新同步即可。

另外开启 FullState 会给节点增加额外的内存消耗,目前 FullState 节点内存用量为 21-25G 左右