Qtum量子链发布QIP-7:Qtum虚拟机升级,五大更新全面提升开发性能

QIP-7 : Qtum虚拟机全新升级
QIP-7 集成了以太坊虚拟机的最新功能,同时进行了全面的改进,使Qtum虚拟机功能更强大。本次更新的改进包括:成本更低的密码学内置模块、新的数学运算符、存储的gas成本优化,以及部署智能合约/与智能合约交互的新方法。

有了这些更新,相信Qtum平台上的智能合约开发人员就可以构建出新型的应用程序,在Qtum去中心化的生态系统中实现更好的隐私性、信任、安全性和可用性。
虚拟机改进
本次更新添加了一些新的指令到虚拟机中,以便改进虚拟机功能并降低gas成本:
1. 添加了位移运算符SHL和SHR,作为其他位运算符的补充;
2. 添加了extcodehash以降低验证地址是否具有预期智能合约代码的成本;
3. 添加了revert指令,用于向用户报告错误信息,并退还未使用的gas;
4. 添加了staticcall指令,以便在“只读”模式下调用另一个合约;
5. 提供了一种允许智能合约方法返回多个值的实现方式;
6. 添加了create2指令,因此可以将智能合约部署到预先确定的地址。
值得一提的是,create2指令的添加使得“反事实合约(counterfactual contract)”的创建成为了可能。在此之前,智能合约的地址部分由它的创建者的nonce决定,因此它是不可预测的。有了Create2,开发人员可以预先确定智能合约的地址,而不用实际去部署代码。这一点是很有用的,因为一些智能合约逻辑的细节现在可能不对公众开放,除非相关参与方需要这些细节。这就好比一个公正的仲裁员,在产生争议的时候,将遵循密封信封中的指示进行操作。
反事实智能合约使Qtum上可以实现通用的状态通道(generalized state channel)[1],从而赋能链下隐私解决方案。
密码学改进
Qtum智能合约虚拟机是一个通用的计算平台。虽然开发人员可以直接在智能合约中实现任何加密算法,但这样做对于实际使用来说往往代价太高。加密算法通常需要特殊的优化才能有效地运行。
本次更新引入了高度优化的数学函数实现,大大降低了一些有意思的算法的gas成本,使它们适用于实际使用场景。
大整数算术
虚拟机针对256位整数进行了优化,可用于实现现代椭圆曲线密码(Elliptical Curve Cryptography, ECC)算法。然而,像RSA这样的较老的加密算法会依赖不同的数学实体,而这些实体又需要更多位数来实现同样的安全性。当前关于RSA的使用指南建议使用4028位长的公钥来实现与256位长的ECC公钥同等的安全性。
为了支持这些算法,本次更新引入了一些高效且成本更低的方式,实现对大于256位的数字进行数学运算。这是通过添加可支持以下这些操作(以及相关的gas成本)的预编译合约来实现的:
GADDSUBBASE: 15
GMULDIVBASE: 30
GMODEXPBASE: 45
GARITHWORD: 6
GQUADDIVISOR: 32
ZK-SNARKs支持
激动人心的是,零知识证明系统使得在Qtum区块链上构建隐私相关应用成为了可能。然而,这些系统所依赖的椭圆曲线类型与Qtum使用的原生椭圆曲线不同。
本次更新增加了对alt_bn128曲线的支持,这是许多zk-snarks系统所使用的曲线。特别地,这是加密货币ZCash 所选择的曲线。
储存的gas成本优化
在区块链上存储数据的成本是高昂的,因为每个存储项会存储在网络的每个节点中,而且是永远保存的!然而,存储指令sstore的实现方式实际上是经过优化的,从而降低某些情况下的存储成本,但是系统还是会收取相同数量的gas。本次更新降低了某些特殊情况下的gas成本,在这些情况中,可以对sstore指令进行优化。
在智能合约调用中考虑使用以下这些指令,将位置0x0设置为不同的数字:
sstore 0x00 0x1
sstore 0x00 0x2
sstore 0x00 0x3
在这个序列中,实际上只有最后一个sstore指令会对成本产生影响,因为最后设置的数字才是最终上链的数字。以前所有这些指令都需要很高的gas成本。有了本次的更新,只有最后一个指令的成本是高昂的,而执行前面这几个指令的成本是很低的。
参考文献
1.https://www.counterfactual.com/statechannels/