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成本)的预编译合约来实现的:

  1. GADDSUBBASE: 15

  2. GMULDIVBASE: 30

  3. GMODEXPBASE: 45

  4. GARITHWORD: 6

  5. 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/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
量子纠缠是两个或多个量子系统之间存在高度关联的一种状态,其中一个系统的状态依赖于另一个系统的状态,无论它们之间有多远的距离。使用Python语言可以很容易地实现2-qubit量子纠缠的代码示例,下面是一个简单的例子。 首先,我们需要导入一些必要的库,比如Numpy和QuTiP,这两个库能够帮助我们进行量子计算和模拟。 ```python import numpy as np import qutip as qp ``` 接下来,我们可以创建一个2-qubit的量子体系,并将它们纠缠在一起。 ```python # 创建两个量子比特 qubit1 = qp.basis(2, 0) # 量子比特1的初始态 qubit2 = (1/np.sqrt(2))*qp.basis(2, 0) + (1/np.sqrt(2))*qp.basis(2, 1) # 量子比特2的初始态 # 创建纠缠态 entangled_state = qp.tensor(qubit1, qubit2) ``` 在这个例子中,我们使用了QuTiP库中的`basis`函数来创建量子比特的初始态,并使用`tensor`函数将两个量子比特纠缠在一起。 最后,我们可以通过对纠缠态进行操作,来展示量子纠缠的一些特性。 ```python # 对第一个量子比特施加Hadamard门 qubit1_entangled = qp.qip.operations.hadamard_transform(1) * entangled_state # 计算两个量子比特的纠缠度 concurrence = qp.qip.operations.concurrence(entangled_state) print("纠缠态经过Hadamard门后的状态:\n", qubit1_entangled) print("两个量子比特的纠缠度为:", concurrence) ``` 在这段代码中,我们对第一个量子比特施加了Hadamard门来改变纠缠态,并计算了纠缠度来展示量子纠缠的特性。这就是一个简单的2-qubit量子纠缠的Python代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值