激活协议

1. 特征

Waves软件的新版本带来了新功能。 这些新功能应当由许多节点同时激活。 在此之前,功能被时间戳激活。 这使得节点所有者在一个紧凑的时间段内更新他们的节点。 未及时更新节点导致无意中产生分叉。 功能激活协议赋予Waves社区以适当的步调去适应应用新功能。 或者根本不应用其中一些功能。

1.1 特征识别

每个新功能都将被分配一个独特的序列号。 每个新版本都会提供新功能及其ID的列表。 由软件提供功能支持。

新功能由节点软件的新版本提供。 不同的版本可以进行相同的操作,直到新功能被激活。 激活特征网络后将分成两部分:实现此功能的节点和不能够实现此功能的节点。

1.2 区块链上的功能状态

功能状态存储在区块链中。 该功能可以处于三种状态之一。 初始状态称为 Defined。 每个功能,甚至不存在,都有其最初状态。 下一个状态 - Approved。 这意味着该功能获得了开采者所需的投票数。 经过defined状态,(区块数) 已批准的功能变为 Activated。 从那时起(区),实现该功能的节点开始以新的方式运行。

2. 投票

投票由实行。 如果矿工支持某些功能并希望投票为“是”,则必须将其编号(ID)放入配置文件中支持的功能列表中。 从现在起,这个矿工伪造的每个区块都将包含支持的功能的ID。 每10000个区块(该数量可能在其他区块链上不同),该节点对一个特性的支持数量进行了统计。 如果某个功能在上一个计算周期的90%以上的区块中受支持,则该功能就会被批准。 否则,投票继续进行,并可能需要另一个投票期(主网的10千区块)或更多。

如果节点发现一个新功能已获批准,但该节点未实施该功能,则会记录有关即将激活不支持此功能的警告消息。

在批准的功能被激活之前,必须通过另外10000个区块。 这段时间旨在将非开采节点更新为新版本。

如果激活了一项新功能但未更新节点以支持该功能,则节点将自行关闭(默认行为)并记录关于激活不支持功能的错误。

警告

在测试网上,批准和激活期间分别设置为3000个区块。
它将为了能够更快地激活新功能以进行测试。

3. 配置文件更改

引入了新的配置文件部分功能。 它包含两个参数:

  • 自动关闭不支持的功能可以是yes或no。如果打开此设置,则在激活未由节点的代码库实现的功能时节点将被关闭。 默认情况下,它设置为yes。

  • 支持包含节点所有者支持的功能ID列表。默认情况下,列表是空的。

以下您可以看到一个新部分的示例。

 features {
   auto-shutdown-on-unsupported-feature = yes
   supported = []
 }

功能 :自动关闭不支持的功能 = yes,受支持的= 空格 []

4. REST API 的变化

为了支持功能激活协议,新的API方法被添加到节点/激活路由中。 作为响应,JSON将返回描述当前的功能状态。

 {
   "height": 678929,
   "approvalInterval": 10000,
   "approvalThreshold": 9000,
   "nextCheck": 680000,
   "features": [
       {
           "id": 1,
           "blockhainStatus": "ACTIVATED",
           "nodeStatus": "SUPPORTED"
       },
       {
           "id": 2,
           "blockhainStatus": "APPROVED",
           "nodeStatus": "SUPPORTED"
       },
       {
           "id": 3,
           "blockchainStatus": "VOTING",
           "nodeStatus": "SUPPORTED",
           "supportBlocks": 7892,
       },
       {
           "id": 4,
           "blockchainStatus": "VOTING",
           "nodeStatus": "UNSUPPORTED",
           "supportBlocks": 7892
       }
   ]
 }

返回对象的字段:

  • height - 高度 - 节点上当前的区块链高度

  • approvalInterval - 批准间隔 - 批准或激活期限,以区块为单位

  • approvalThreshold - 适用阈值 - 支持功能批准的区块数

  • nextCheck - 下次检查 - 下一个高度用于计算功能的审批或激活状态

  • features - 功能-功能列表

  • id - 功能ID

  • blockchainStatus - 区块链状态 - 区块链上功能的当前状态可以是 DEFINED, VOTING, APPROVED 或 ACTIVATED

  • nodeStatus - 节点状态 - 节点功能状态,可以是 SUPPORTED 或 UNSUPPORTED

  • supportBlocks - 支持区块 - 包含对该功能支持的区块数

5. 举例说明

在1.0.0版本中引入了一个新的酷炫功能。 它有ID 123。

拥有40%股份的挖矿池“超级矿工”支持该功能。 '超级矿工'的管理员将节点从版本0.9.9更新到1.0.0。 并将123添加到配置文件中支持的功能列表中。 因为高度为1228765,“超级矿工”节点开始将ID 123放入每个挖出区块中,但并没有其他矿工支持该功能,但其中一些矿工将其节点更新为版本1.0.0。

在区块号为1230000的节点中计算出只有50%的区块支持功能123。因此,功能状态保持不变,投票在该时间段内不成立,由此继续。

在接下来的10000个区块中,“超级矿工”说服了几个小矿工支持这一功能。 在区块1240000上证明该功能在最后10000个区块由9102个支持。 这意味着91%。 所以 该功能的状态被更改为已批准 Approved。 目前,在0.9.9和更早版本上运行的节点中有警告其所有者关于批准不支持的功能。

在区块1250000处,功能号码123将被激活,并且可以在节点1.0.0及以上版本中开始使用它。 早期版本的节点将停止工作。

results matching ""

    No results matching ""