节点治理
节点治理
EOS
是为商用分布式应用设计的一款区块链操作系统,以后会有很多在EOS
上开发的DApp,不同的应用难免会有许多不可预见的问题,而这些问题不可能完全在系统软件层面被解决。所以,在遇到这方面问题的时候,EOS
提前做好了解决方案EOS
的节点治理。而目前存在的区块链项目没有这部分解决方案,例如我们熟悉的比特币和以太坊,因为没有这样的解决方案,社区经常因为一些原因分裂,进而导致分叉。2017年比特币已经被分叉无数次了,以太坊也已经出现了数次分叉,而这样的结果就是没有考虑到那些在软件层面之外的问题所造成的。
宪法和协议指导下的关键操作
EOS
操作系统使用区块链技术在签名用户之间建立P2P服务协议或约束性合约,也就是所谓的“宪法”。宪法内容定义了仅依靠代码无法完全执行的用户间义务,同时结合相互间的公认规则,确立司法权和适用的法律。每一个在网络中签名广播的交易,其签名信息中必须包含宪法的哈希值,以明确约束合约签名者。 EOS
系统中,真正治理的权力在Token
持有者手中而不在于区块生产者BP
手中。Token
持有者可以将自己的权利代理给区块生成者,这样区块的生成者就有了相应的权限(冻结账户、更新有缺陷的应用程序、提出对底层协议硬分叉的改变等)。权限代理出去后,区块生成者并不是就可以随便乱用权限,那些权限是受限的、被监督的、被检查的。所有的区块链变更都需要区块生产者同意,如果区块生产者拒绝Token
持有人想要的变更,那么他将被投票出局;如果区块生产者的变更没有经过Token
持有人的同意,那么其他非区块生产者的全节点会拒绝该改变。
- 冻结账户:一个智能合约可能会出现异常,比如说因为bug的原因导致行为不正确或者资源消耗不在一个合理的范围内,这时候区块生产者就有权力冻结账户。冻结后这个账户所做的行为就没用了。当然也不是随便就能冻结,冻结账户需要15/21的区块生产者同意才行。如果区块生产者滥用权力,解决方案也很简单,就是将他投票出局,这样被冻结的账户就会被解冻。
- 改变账户代码:如果“冻结账户”已经不能解决问题,不可预知的代码(病毒)已经造成了破坏,此时
EOS
可以支持在不需要硬分叉的前提下修改账户代码。这类似于交易的回滚。当然与冻结账户类似,也需要21个中的15个区块生产者同意才行。
宪法和协议的升级
“宪法”会随着当地环境的变化而变化,所以EOS
也提供了修改的方法。EOS
操作系统使用源代码定义宪法和协议,同时也定义了宪法及协议的更新方法。对宪法或协议进行变更,需要完成以下步骤:
- 区块生产者
BP
提交一个宪法变更协议,并获得15/21以上的赞成票。 - 区块生产者
BP
将15/21以上的赞成票维持连续30天。 - 要求所有用户都使用新宪法的哈希值确认交易。
- 区块生产者
BP
采用修改源代码的方式反映宪法的变更,使用gt提交的哈希值将变更提交到区块链上。 - 区块生产者
BP
继续将15/21以上的赞成票维持连续30天。 - 变更的代码7天后生效,源代码修改通过后,将有1周的时间来对所有节点进行升级。
- 所有没有升级为新代码的节点将自动关闭。
根据EOS
操作系统的默认配置,更新区块链来添加新功能这一进程需要2到3个月的时间,而修复那些不需要更改宪法的非关键性漏洞需要1到2个月的时间。一般情况下变更所花费的时间比较长,当遇到特殊情况的时候,EOS
也提供了解决方案。紧急变更一面临一个损害用户利益的有害漏洞或安全漏洞时,区块生产者可以加速宪法变更过程。一般来说,加速新特性更新过程或修复无害漏洞,都是违反宪法的行为。