Qtum 量子链主网上线两周年,重磅推出“2.0”将带来哪些变化?

01 背景

Qtum 一直专注于区块链底层基础设施的研究,在比特币和 EVM 的基础上不断进行技术迭代。Qtum 主网已经稳定运行近两年,在此过程中也暴露出现有系统和共识规则中存在的一些缺陷。这些缺陷在一定程度上阻碍了区块链的技术发展和应用落地。

为了适应日益变化的区块链技术应用场景,Qtum 将逐步对底层协议进行升级,推出 Qtum 2.0。本文介绍的硬分叉将是 Qtum 2.0 相关的第一次升级。

关于 QIP(Qtum Improvement Proposal)

Qtum 量子链改进提案(Qtum Improvement Proposals, QIP)是由 Qtum 开发者和社区提出的一系列关于 Qtum 底层技术升级的具体建议。所有提案均在 github 上公布,所有人都可以对提案进行公开讨论。获得广泛认可的提案将由 Qtum 开发团队进行具体实现。

Qtum QIP:https://github.com/qtumproject/qips/issues

02 目的和动机

扫描二维码关注公众号,回复: 11828871 查看本文章

本次硬分叉是 Qtum 主网上线以来最大的一次版本迭代,是 Qtum 作为未来区块链应用基础设施的技术基础,共包含四个与共识相关的 QIP 升级。分别为:

  • QIP-5:为合约交易的输出脚本增加签名验证

    https://github.com/qtumproject/qips/issues/6

  • QIP-6:在 Qtum 的 EVM 虚拟机中添加 btc_ecrecover 预编译合约

    https://github.com/qtumproject/qips/issues/7

  • QIP-7:升级 Qtum EVM 虚拟机为最新的以太坊君士坦丁堡(Constantinople)版本

    https://github.com/qtumproject/qips/issues/8

  • QIP-9:修改难度调整算法,使出块时间更加平稳

    https://github.com/qtumproject/qips/issues/9

其中,QIP-5 和 QIP-7 为 Qtum 增加了若干新特性,以适应现实中更加复杂的智能合约应用场景,同时也是后续升级(如隐私资产)的技术基础;QIP-6 提高智能合约开发的便捷性,同时降低使用成本;而 QIP-9 则进一步提升了 Qtum 网络的稳定性。

为什么需要“硬分叉”升级?

Qtum 是一个完全去中心化的网络,每个节点各自运行独立的节点/钱包程序,没有人能控制每个节点运行的程序版本,但所有节点可以通过统一的共识规则对 Qtum 网络上的所有交易达成一致。如果有一部分节点采用与其他节点不同的共识规则,就会”分叉“为两条链。

普通的升级不修改任何共识规则,即使有部分节点未完成升级,网络也不会发生分叉。然而,本次升级涉及到的所有改动均与共识规则相关,这就意味着升级后的节点和未升级的节点将采用不同的共识规则,产生硬分叉。强烈建议所有用户在第一时间完成升级,以免因未切换到新版本而造成不必要的损失。

03 硬分叉相关 QIP 概述

QIP-5

描述

为合约交易的输出脚本增加签名验证,从而可以在地址不拥有任何 QTUM 的情况下证明所有权,并调用合约。

动机

在 Qtum 中调用任何智能合约都需要支付相应的 gas 费用。每次调用合约时,都要求调用合约的地址中有余额(哪怕余额非常少)。例如,QRC20 token 的转账就是一种最常见的合约调用,假设一个地址 A中有 1000 QC(一种发布在 Qtum 上的 QRC20 稳定币),要想发送这 1000 QC,必须要求地址 A中有一定量的 QTUM,从而向合约证明你拥有该地址。如果地址 A没有任何余额,则无法调用任何合约,也即无法动用这 1000 QC。目前唯一的解决方案是先往地址 A中转入一些 QTUM,再调用合约发送 token。然而,这不但浪费了宝贵的链上 UTXO 数据集的资源,而且极大地影响了用户体验。同时,对于更复杂的智能合约应用场景(如预测市场应用,去中心化交易所等),这一限制明显提高了用户使用区块链应用的门槛。

好处

QIP-5 通过增加 OP_SENDER 操作码,提供了一种证明合约调用地址所有权的机制,从而可以在地址不拥有任何 QTUM 的情况下提供证明,进而调用智能合约。虽然对原系统的改变不大,但却为现有的智能合约生态带来较大的改变:

  • 地址可以在不拥有 QTUM 代币的情况下调用智能合约(例如收发 QRC20 token),提高普通用户的代币收发体验。注意:并不是免费调用合约,而是可以由其他地址代付

  • 将催生出更多样化的服务,由服务提供方支付手续费,用户只需使用服务即可,更贴近实际应用场景

  • 可以允许在一笔交易中多个地址调用多个合约,增加合约调用的灵活性

  • 节省链上 UTXO 数据集的空间

可能的风险

QIP-5 增加了额外的共识规则,但对原规则仍保持兼容,因此理论上不会带来安全性风险。但会对已有的基础设施带来一些影响:

  • 需要开发额外的 RPC 命令来正确地使用该功能,服务提供商需要同步基础设施进行升级

  • 由于增加了额外的脚本,服务提供商需要对脚本进行额外的验证,否则将无法识别此类交易

QIP-6

描述

在 Qtum 的 EVM 虚拟机中添加 btc_ecrecover 预编译合约,供普通合约直接调用。

动机

在 Solidiy 中,ecrecover函数可以将椭圆曲线签名还原成对应的公钥地址。Qtum 的智能合约中的 msg.sender 采用的是和比特币类似的 P2PKH 地址,而通过 ecrecover 函数返回的地址格式与以太坊相同,两者无法直接比较。对于开发者来说,这将使合约中一些逻辑判断变得繁琐。目前要解决这一问题的常用方法是调用额外的库合约,但会消耗更多的 gas 费用,增加智能合约的使用成本。

好处

QIP-6 通过预编译合约的方式,实现了名为 btc_ecrecover 的函数。新函数在兼容原函数所有接口的同时,可以带来以下好处:

  • btc_ecrecover 返回的地址类型与 msg.sender 地址格式完全一致,可以进行直接比较,简化了合约开发过程中的逻辑判断

  • 预编译合约可以大大节省 gas 消耗,降低智能合约的使用成本

可能的风险

QIP-6 不对原系统进行任何改动,且新函数与原函数接口完全兼容,因此理论上不会带来任何风险。

QIP-7

描述

升级 Qtum EVM 虚拟机为最新的以太坊君士坦丁堡(Constantinople)版本。

动机

当前 Qtum 采用的是较早版本的 EVM 虚拟机。在 Qtum 主网发布后,EVM 先后升级到 Byzantine和 Constantinople 版本。新版的虚拟机中增加了许多对开发者友好的新特性,比如返回长度可变的数据,以及静态合约调用等。越来越多的开发者需要依赖这些新特性进行合约和应用的开发。

好处

QIP-7 包含了所有 EVM Byzantine 和 Constantinople 版本的新特性,可以实现更加复杂的智能合约和应用。例如 Qtum 在QIP-19中计划支持的隐私资产,其中相关的智能合约就需要依赖新版 EVM 中提供的新特性。此外,在升级完成后,理论上以太坊上所有的智能合约和应用都可以移植到 Qtum 上,同时可以获得底层 UTXO 模型独有的安全性和稳定性。

可能的风险

EVM Byzantine 和 Constantinople 版本均已在以太坊主网激活,稳定性已经得到验证,并且完全前向兼容,风险较低。但 Qtum 底层采用 UTXO 模型,和 EVM 的账户模型不一致,开发者在移植已有合约时需要注意 Qtum 版 EVM 的特性。

QIP-9

描述

QIP-9 实际包含两个升级:

1.修改 Qtum 主网的挖矿(Staking)难度调整算法,使出块时间更加平稳,且更接近期望时间;(共识相关)

2.修改全网 weight 估计算法,使其更接近真实值。(与共识无关)

动机

Qtum 设计的区块间隔为 128 秒,理论上,当区块间隔出现波动时,共识机制将会通过调整难度值,来延长或缩短区块间隔,从而使平均出块时间保持在 128 秒。然而,目前 Qtum 采用的的难度调整算法波动较大,直接导致的结果就是主网运行至今,平均出块时间约为 144 秒,这意味着潜在地减少了约 12% 的 TPS。

另一方面,Qtum 网络的 weight(可以理解为正在 Staking 的币的总和)体现了整个网络的安全性,也决定了 Staking(挖矿)的预期收益。由于 Qtum 是一个完全去中心化的网络,全网的 weight 只能通过挖矿难度进行估计。然而,现有的 weight 估计算法波动较大,且根据仿真结果,其与真实 weight 的方差较大,因此无法准确地反映当前网络的状态。

好处

  • QIP-9 提供了一种改进的难度调整算法,根据区块间隔的指数移动平均值对进行难度调整,可以使平均出块时间更接近 128 秒。交易的平均确认时间也将相应缩短

  • QIP-9 改进了网络 weight 的估计算法,采用移动平均值进行估计,和原算法相比,新算法与真实 weight 间方差更小,波动也较小,可以更准确地反映当前网络 staking 状态

可能的风险

  • QIP-9 涉及的难度调整算法本身并没有安全隐患

  • 网络 weight 估计算法虽然对估计值较平滑,但在实际 weight 剧烈波动时无法及时反映网络状态的变化,因此后续仍有改进的空间。但此项升级不涉及共识机制,故可以在后续常规升级中再次修改

04 硬分叉发布计划

本次硬分叉相关的代码已经全部开发完成,并经过近半年的测试。此次硬分叉升级会先在测试网络上激活,在测试网络稳定运行后,将会在 Qtum 主网激活。

升级将在预先设定的区块高度自动激活,测试网络的分叉高度为 446,320(预计为 2019 年 9 月 20 日),Qtum 主网的分叉高度为 466,600(预计时间为 2019 年 10 月 16 日 - 10 月 17 日)。建议用户保持运行的钱包始终是官方发布的最新版本,从而可以自动完成升级。

可能的影响

  • 升级激活时,如果仍有大量节点未完成升级,则在升级激活时可能短暂分叉为两条链,直到绝大部分节点完成升级,这时有进行双花攻击的可能;同时,若矿工节点未完全升级,则有可能使全网 weight 不稳定,导致出块时间产生较大波动,所有交易的确认时间可能变长(比如交易所的充提)

  • 升级激活后,如果发现重大的共识相关的漏洞,可能需要开发团队快速修复并提醒用户升级,否则可能再次发生分叉

对策

对于节点未完全升级的问题,Qtum 将提前通知所有交易所、服务提供商(钱包,浏览器)、Staker(矿工)以及普通用户完成升级,确保大部分节点在主网激活前完成升级,保证升级顺利进行;

对于升级本身的漏洞,Qtum 开发团队在发布前已进行长达半年的内部测试,目前各项测试均已通过。同时,本次升级会提前三个月在测试网络上激活,确保在主网激活升级前发现并修复所有漏洞。

所有用户请保持节点更新到最新版,并在硬分叉激活期间,对所有交易进行多次确认,或等网络稳定后再进行转账。

以后还会有硬分叉吗?

只要与共识相关的升级,都可能需要硬分叉,届时会采取与本次类似的流程通知用户进行升级。后续 Qtum 计划发布的 x86 虚拟机,隐私资产,以及智能合约挖矿等特性,可能都需要硬分叉。Qtum 开发团队会将需要分叉的升级合并,尽量减少硬分叉升级的次数。

用户需要做什么?

从安全性角度考虑,所有正在运行 Qtum 节点/钱包 的用户都需要在主网激活之前升级到最新版钱包。

最新版钱包的发布信息请关注:

  • https://github.com/qtumproject/qtum/releases/

  • https://qtumeco.io/wallet

并在新版本发布时第一时间更新。

对于网络中不同的参与者,建议为升级做好充分准备:

交易所、钱包

  1. 在硬分叉激活前后,需要关注 QTUM 及 QRC20 代币的充提记录,在交易获得主链足够多的确认后再确认充提;

  2. 对于 QRC20 代币的提币,可以提前升级配套的程序(QIP-5相关),从而可以第一时间运用新特性代付 gas 费用。

服务提供商(如浏览器)

  1. 建议提前开发 QIP-5 相关的配套程序,以免升级激活时无法识别带有 OP_SENDER 的交易输出。

矿工(矿池,个人staker)

  1. 升级激活前后,需要时刻关注网络 weight,根据预期收益调整用户的收益和手续费等。

开发者

  1. 可以先利用测试网络开发具有新特性的合约和应用,在主网激活时即可部署。(QIP-7)

  2. 结合 QIP-5 思考更多应用场景。

普通用户

  1. 时刻备份好您的钱包。

05 参考链接

  1. QIP-5 的具体实现请参考:

    https://github.com/qtumproject/qips/issues/6

  2. QIP-6 的具体实现请参考:

    https://github.com/qtumproject/qips/issues/7

  3. QIP-7 的具体实现请参考:

    https://github.com/qtumproject/qips/issues/8

  4. QIP-9 的具体实现请参考 :

    https://github.com/qtumproject/qips/issues/9

  5. Byzantine:https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/

  6. Constantinople :https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/

  7. QIP-19:https://github.com/qtumproject/qips/issues/19

猜你喜欢

转载自blog.csdn.net/weixin_42667079/article/details/101194534