2017年5月12,数字加密货币出现以来,分叉的问题一直影响着区块链上面的应用,如何实现区块链网络的自动升级和降低分叉对用户的影响,并且建立更有效的区块链网络治理模式,是区块链行业未来发展中面临的巨大难题和挑战。Qtum 量子链近日发布报告阐述了这几个问题。
分叉对区块链应用的部署带来巨大的影响,目前主流的数字货币都曾经经历过软分叉和硬分叉对社区带来的巨大的伤害和影响,包括比特币、以太坊在内无一幸免。比特币核心代码早期曾通过软分叉的方式解决了操作码可被恶意攻击的漏洞。类似的,以太坊也曾通过硬分叉的方式修复了the DAO智能合约漏洞对以太坊网络的巨大伤害,并且导致社区的纷争和分裂,也正是由于硬分叉不可逆转的影响,造成了以太坊网络分裂成2个独立的网络,ETH 和 ETC。
以太坊在后续发展中,也通过数次的软分叉来解决网络中的问题,并且强制要求所有的矿池和客户端进行更新。分叉作为一种网络和软件升级的手段,无可厚非,类比来说,即使在生命攸关的大型航空器或心脏起搏器中也可能会出现需要修复的漏洞。
但是如何达成分叉的共识,并降低分叉对生态系统的影响是整个区块链行业都需要思考的问题。比如如何更有效的解决比特币网络扩容的问题,如何在比特币不同的扩容方案中做出大多数都认可的选择,以及如何达成这种共识,从而避免1MB 区块还是2MB区块长达2-3年的争论?
Qtum量子链在设计之初就考虑了这些问题,并提出了 分布式自治协议(Decentralized Governance Protocol),通过智能合约来治理区块链网络的参数,并实现一个去中心化的网络自治机制,实现区块链网络的自动升级和快速迭代,而不用担心软硬分叉对网络和社区带来的影响。
通过DGP协议和机制,区块链网络在分叉或者升级过程中,用户无需对核心钱包升级,即可对某些分叉实现自适应,最大程度地减少对区块链网络、生态系统以及用户产生的影响。
分布式自治协议涉及的相关名词:
分布式自治协议 Decentralized Governance Protocol (DGP)
数字化治理技术 Digital Governance Technology
自治共识机制协议 Democratic Consensus Protocol
可调共识机制协议 Adjustable Consensus Protocol
自调节共识经济技术 Self-Regulating Consensus Economy Technology
自动共识机制调节协议 Automatic Consensus Adjustment Protocol
共识机制参数修改协议 Modifiable Consensus Parameter Protocol
什么是分布式自治协议(DGP)
Qtum量子链创造了一个全新的概念:分布式自治协议(DGP),即通过触发特定智能合约对区块链某些特定参数进行修改。更为重要的是,整个过程自动进行,无需用户对钱包进行升级或下载新的节点软件。
分布式自治协议可以修改区块链网络中的以下参数:
1.不同操作码对应gas价格;
2.区块大小的上限;
3.区块gas上下限;
4.DoS攻击情况下,可接受的gas价格最小值;
5.区块或交易中可允许sigops的最大值;
6.标准交易的类型和大小限制。
DGP除了可以修改区块链网络中的简单参数外,DGP还有潜力解决区块链网络的一下问题
1.实现类似于比特币告警系统的网络告警系统;
2.在区块链智能合约中部署新的虚拟机;
3.同步检查点系统,用于区块链动态检查。
这个概念的强大性体现在当系统受到某些未知攻击时,DGP可以自动更改网络相关参数,并在1000个区块内修复相关安全漏洞,用户无需升级或者更新钱包。利用DGP协议网络可在共识达成的情况下,实现自动的区块链网络升级,而无需用户进行强制的钱包更新。
分布式自治协议(DGP)如何实现
Qtum 量子链第一个正式发布的版本会至少包含以下4个DGP协议的功能:
1.每个Qtum虚拟机操作码对应的Gas价格
2.区块创建者可接受的交易对应最低Gas价格(具体技术细节将在另一篇技术稿MPoS中详细解释)
3.区块大小
4.区块gas限制
每个功能都由独立的智能合约控制,这意味着每个功能有独立的治理、授权机制以及内置限制条件。
通常情况下,DGP可通过软分叉实现,以下更为复杂的情况需要利用硬分叉实现:
1.在区块链上设计和部署DGP分布式自治合约
2.发布新钱包,用软件加密代替DGP分布式自治合约地址硬编码
3.等待直至足够多的节点和累积权益进行了更新,并支持全新的DGP
4.这时DGP可以用于更改特定的网络参数。虽然较老版本的钱包无法验证支持DGP的区块,但系统中的新节点可以完成区块验证。
具体的网络参数更改流程为:
1.设计DGP参数更改提案。提案中需要明确新的参数值、实施变更的起始区块以及投票过程所对应的区块数量。区块高度应小于20,000个,投票过程应控制在10,000个区块之内。若有紧急特殊情况,可以将区块高度和投票过程控制在1,000个和500个之内。更改提案禁止在500个区块内生效,以避免出现不必要的孤儿块或分叉;
2.向社区公布更改提案,并收集相关反馈;
3.根据社区反馈,对更改提案进行相应调整;
4.将最终版提案发送至DGP智能合约;
5.投票立即启动;
6.控制节点可以发送一笔交易给DGP智能合约,表达自己的赞成或者不赞成
7.在投票过程中,若提案未获得足够投票或收到过多反对票,则该提案被否决,不执行任何修改;
8.若提案得到足够同意票,则DGP分布式自治合约将提案中的相关数据存储在持久RLP储存器中特殊存储空间内;
9.钱包和区块链上的所有节点可以定时检查RLP储存器从而判断是否有新的更改发生,该操作并不需要通过EVM即可方便地访问RLP数据;
10.在特定区块高度时,钱包和节点执行参数更改。
每个DGP都有一个非常简单的核心治理模式,包括一系列账户(可以是公钥哈希地址或已部署EVM合约地址),账户还可在其他重大决策诸如在DGP分布式自治合约中增加或去除账户、调整提案通过所需同意票的最低票数等事项中起到决策性作用。
尽管这种治理模式看似简单,但后续可以根据实际情况进行调整。通过移除DGP所有账户信息(除了单个智能合约),DGP可以将所有权限管理与治理逻辑授权给外部智能合约。这样,外部智能合约可以部署全新的治理模型,比如通过某更改提案需要一定数量的社区投票、管理层投票以及核心开发者投票。这种治理机制可以随时按需进行调整。
分布式自治协议(DGP)安全模型
当然,DGP也有其限制。尽管可以Qtum量子链所有的网络共识机制都放入一个DGP分布式自治合约,但这会消耗大量的算力资源,而且可能会导致系统性能下降。所以在Qtum的主干网络中,我们只会部署几个DGP分布式自治合约在创始区块中。 此外,并非所有合约都适合放入DGP分布式自治合约中。当Qtum量子链进行重大功能升级时,仍需要人工干预进行分叉。
因此,DGP机制仅适用于在安全范围内对特定参数进行更改。任何可能影响区块链安全或针对某个特定用户/账号的DGP都禁止部署至区块链上。
尽管DGP模型功能强大,但严格的部署应用规定有助于降低DGP模型受到攻击的可能性,也有助于控制DGP实施过程中的各类风险。毕竟与易用性、有效性相比,区块链网络的安全性更为重要。
最后需要特别说明的是,每个DGP分布式自治合约都有自毁功能,用于完全禁用DGP功能。当有重大安全漏洞发生时才会启用DGP自毁动能。后续根据不同DGP功能,通过软分叉或硬分叉进行功能性重建。