不进行硬分叉的话,要如何升级区块链?基于?Substrate?的链有一个绝招,可以轻而易举地做到无分叉升级。
硬分叉
传统上,如果你想升级区块链,例如在比特币或以太坊中添加一些新功能,则必须进行所谓的硬分叉。硬分叉就是指运行支持区块链的软件的实体将其软件更新为较新版本。
之所以称为分叉,是因为每个不升级的人都被遗弃在一个被淘汰的、过时的分叉上,并根据旧代码中的规则生成区块,与新的主链不兼容。一旦这些流浪者更新,他们的节点将重新连接到主链并同步,而分叉将消失。
硬分叉通常是一个非常困难的过程,主要是因为你永远不会真正知道谁在运行软件,而且组织全局代码更新非常困难。在具有合理匿名性的去中心化系统中尤其如此。你得靠运行节点的人员主动查找有关更新的信息,并且必须信任他们在应该更新时进行更新。
Substrate的方式
Kusama和Polkadot等基于Substrate的链对这个问题有独特的解决方案。
基于Substrate的链可以升级,而且不用协调大量人员来进行更新某些软件的操作。它是这样做到这一点的:
在基于Substrate的链中,链本身上存储着一个叫作WebAssemblyBlob或WASMBlob的东西。此Blob包含链构建新区块所需的所有逻辑。链本身的runtime包含在此WASMBlob中。
连接到该区块链的所有节点都不断了解此WASMBlob和它为节点提供的用于生成新区块的规则。节点的本机代码中也存在相同的逻辑:所有节点都使用Rust构建,这些编程指令也告诉他们如何构建区块。这些指令与WASMblob中的指令相同。这么做有什么用呢?
这些节点中有一个开关告诉它们:“如果链上的WASM代码比你的本机代码中的新,请忽略你的本机代码,而选择WASM代码。如果它们相同,则运行本机代码,因为它更快。”
升级基于Substrate的区块链所需要做的,就是上传WASMBlob的新版本,然后与之连接的所有节点都将安装到位并遵守新规则。但是,如果随便一个人都能这样更改链的代码岂不是很危险?
链上治理
链上治理可让任何基于Substrate的链的代币持有者提出对链本身的更改议案。该议案可以是像更改整个链的runtime这样的翻天覆地的改变,也可以是像更改一个链上的常数这样影响较小的事情,例如更改最大验证人数量。
议案会进入队列,在那里,其他代币持有者可以对其进行支持。如果得到足够的支持,该议案将作为公投被提出,然后可以对其进行投票。每个代币持有者都有使用代币投票的权利,如果他们对投票结果格外重视,他们也可以给投票附加信念值,也就是通过锁定代币一段时间以获得投票效力乘数。
如果公投通过,则其背后的逻辑将自动执行——无需人工干预。因此,通过更新WASMBlob来更改链的runtime代码,就是将其提交到系统中并让人们投票支持,而区块链本身将负责其余工作。
原文:https://dotleap.com/upgrading-blockchains-without-hard-forking/
翻译:PolkaWorld
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。