前言
本文将深入介绍EthereumOpcode的最新成员:PUSH0
在过去,我们只能使用PUSH10x00来达成将数值0存入EVM的Stack中,而上海升级中包含诸多EIP之一的EIP-3855提案则引入了PUSH0这项新的Opcode来达成相同的效果。透过节省1Byte的指令空间,减少了智能合约编译后的Bytecode大小,进一步降低智能合约部署的成本。
而本文将会快速地带到EVM、Bytecode与Opcode的基本概念,并一步一步地带你了解PUSH0的核心意义和对现有合约的影响。
文章会从EVM、Opcode到PUSH0详细说明,若您为区块链开发人员,我们可用一句话函盖整篇文章:
EIP-3855引入新Opcode:PUSH0来取代PUSH10x00,因减少1Byte指令空间,所以减少了部署智能合约的200Gas,所有合约加总一年大约可省1,362.23ETH。
zkSync:EIP-4337为避免硬分叉做出妥协:金色财经报道,zkSync在社交媒体发文解释了EIP-4337和zkSync Era对原生账户抽象之间的区别,zkSync表示为了避免硬分叉,EIP-4337做出一些妥协,比如外部拥有账户 (EOA)和账户抽象 (AA)单独的交易流、单独的内存池、单独的验证器/捆绑器角色、外部拥有账户不能使用Paymasters,而zkSync通过在协议级别集成账户抽象对EIP-4337进行了改进,上述功能均可实现。[2023/3/30 13:33:53]
EVM与Opcode概念
在介绍EIP-3855之前,我们先来简单了解Ethereum中最重要的EVM概念!
EVM
我们为了让智能合约在独立且安全的环境中执行,而从Ethereum节点中会切出一块具有储存、执行等功能的运算环境,我们将之称之为EVM虚拟机。
而这个EVM具备执行智能合约所需的堆叠、记忆体、纪录Gas费用及储存下一行指令位址等各种必要元件,以便完成开发人员要求的各种计算。
以太坊开发者Tim Beiko:以太坊网络实施EIP-1559后baes费用达到150 Gwei:推特网友询问,以太坊在实施EIP-1559后,为了让ETH的供应开始减少,网络交易量需要持续到什么程度(销毁率超过区块奖励)?以太坊开发者Tim Beiko表示,在当前的gas限制下,baes费用达到150 gwei(区块奖励为133,一些用于区块奖励),PoW链将通货紧缩。在链PoS上,按照目前的每日发行量(约1100 ETH),在11 gwei情况下,将通货紧缩。但是在合并后,鉴于验证节点收入(来自交易费用/MEV)的增加,PoS发行量可能会增加,因此“通货紧缩数字”也会更高(将大于11 gwei)。
据悉,EIP-1559试图通过引入固定费用和销毁机制来降低交易费,预计使以太坊区块链的收费市场更加可预测并缓解拥堵。[2021/7/16 0:56:51]
Bytecode与Opcode
我们用Solidity等语言所撰写的智能合约,要先编译成一连串EVMOpcode,这一连串Opcode称为Bytecode。我们接着来进行一段简单的操作就会比较清楚!
以太坊开发者Tim Beiko正在以太坊测试网Ropsten测试EIP-1559:以太坊开发者Tim Beiko表示,希望以太坊Ropsten测试网巨鲸发送给其1000至10000 ETH,用于测试EIP-1559。
据悉,EIP-1559试图通过引入固定费用和销毁机制来降低交易费用,由V神于2018年首次提出。该提案是一个对以太坊交易机制进行优化的机制,旨在使以太坊网络上的交易费用更加可预测,解决当前“按需付费”的收费模式问题。另外,EIP 1559的收费结构将自动适应网络需求。[2021/5/27 22:49:32]
有兴趣的读者可以透过EtherVM了解更多关于Opocde的介绍。
首先,我们先在Remix上编译下方这份简易的加法智能合约,编译完成后就可从artifacts资料夹中看到包含此智能合约Bytecode与Opcode的Json资讯档。
智能合约在线编译工具Remix
金色相对论 | Esther:ETH 实现PoS共识和EIP 1559之后,每年的发行量会降低至0-200万:11月27日消息,在今日举行的金色相对论中,针对“可以预测的是阶段0会持续较长的一段时间,这段时间投资者存入的ETH和信标链出块奖励的BETH都无法兑现,这对于以太坊生态来说,是好是坏?有哪些补足办法?”的问题,ECN以太坊中文社区 Esther表示,长期来看,对整体以太坊网络来说,这是一个比较保守和稳健的策略。但上面谈到的新路线图已经对eth1和eth2的合并过程进行了简化和提速,技术上来看,甚至可能在分片之前就能实现合并。但是为了观察PoS链的稳定性和安全性,在合并之前阶段0信标链需要持续运行一段时间,同时还需要对合并进行反复测试,此后社区才会放心从PoW链完全迁移到PoS链上。阶段0还会带来一个不可忽视的直接影响,即ETH的发行量和流通量。由于在合并之前,eth1和eth2并行存在,网络发行量会有所上升。根据Vitalik本人的说法,在接下来1-2年中(eth1和eth2合并前),ETH的发行计划为每年约470万。而完全实现PoS共识和EIP 1559之后,每年的发行量会降低至0-200万。当然Staking也有其不确定性所在,比如说自己跑节点的话可能因为操作失当或是网络因素面临惩罚,对于投资者来说主要还是流动性不足和机会成本方面,现在多家平台已经推出了质押和流动性方案,大家打算参与的话需要多做点功课进行评估。[2020/11/27 22:21:14]
与此同时,这个智能合约也已部署到Goerli测试网中,我们可点选在Etherscan上的钮从Bytecode切换到Opcode观看模式。这时,即可得知一连串Opcode称为Bytecode。
以太坊矿工反对EIP-2878提案 区块奖励降至0.5 ETH或威胁网络安全:8月20日消息,ConsenSys常务董事此前提交EIP-2878提案,欲将区块奖励降至0.5 ETH。以太坊矿工对这一区块奖励减少提案表示担忧,利用GPU挖矿的人对这项提议尤其不满。之前的区块奖励减少幅度在40%到33%之间,从2 ETH降至0.5 ETH将意味着区块奖励减少75%,这可能会迫使矿工离开网络,降低其整体安全性。(BeInCrypto)[2020/8/20]
这里就只截取这份合约部份的Opcode。
部份Bytecode与Opcode对照表
现在我们有了EVM、Bytecode、Opcode的概念后,那EIP-3855到底要改进什么问题呢?
前面的例子中,我们了解到若想要将一个零的值推到Stack中,这个动作会被编译成「PUSH0x00」(两个Byte,分别是0x60及0x00,其中0x00代表零的值,所以0x6000整整占了2个Byte的Storage空间!
1ByteBytecode空间需要支付200Gas的费用。
另外,执行1个PUSH1的操作需支付3Gas,而PUSH0也是,所以PUSH0主要是减少编译后的程序码大小,但实际上执行时的Gas消耗和PUSH1是一样的。
我们来看一下以下关于Push10x00指令在2020年的统计数据:
Push10x00指令占了2020年全年度智能合约Bytecode的4.57%之多,它被如此常用,以致于几乎所有的智能合约中都可看到它的身影!
这时,如果我们新增一个Opcode来做和PUSH10x00完全一样的事,是否就可以再减少1个200Gas的空间消耗?
答案是可以的!EIP-3855即将会在这一次的上海升级中在Opcode中引入一条PUSH0新指令,而这个新指令的编号是0x5F!
会选择0x5F做为PUSH0的原因,除了0x5F在上海升级前没有被使用外,而且它也刚好是在PUSH1指令的前一个编号!是一个连续且有意义的指令空间。
0x5F及0x60的Opcode指令编号,图片来源:https://ethervm.io/
EIP-3855带来的改变
将0x6000指令瘦身至0x5F有一个最重要的改变,就是部署合约时的Gas费用变便宜了!程式码中每个使用到PUSH10x00的地方都可以因为这个改变而省下200Gas!
那我们一样以2020全年度使用340,557,331次0x6000指令来计算,大约需耗费340,557,331x200Gas=68,111,466,200Gas。接着若以1Gas需支付20GWei来计算,也就是可以为整个网路省下整整约1,362.23ETH,而且各个Ethereum节点也可省下不少储存空间。
此外,对于开发人员来说,也可减少使用一些特殊优化手段来减少PUSH10x00的200Gas开销,例如使用DUP指令等。使用0x5F代表着可减少开发人员进行各种优化成本与风险,也利于估算智能合约的Gas费用。
结论
带来的改变有以下两点。
EIP-3855将减少部署智能合约时的Bytecode大小此外,EIP-3855也可减少过去开发人员在进行各种优化上的成本与风险本文介绍了Ethereum的EVM及Opcode的概念,并且深入探讨了EIP-3855改进的重要意义与影响。一旦这次的上海升级完成,就可减少开发人员部署合约时所需的储存空间费用,而EIP-3855提案和新的特性,也将吸引更多的开发者加入到以太坊的生态中。感谢您阅读本文!
参考资料
中文以太坊虛擬機https://ethereum.org/zh/developers/docs/evm/英文EIP-3855提案https://eips.ethereum.org/EIPS/eip-3855EIP-3855英文討論區https://ethereum-magicians.org/t/eip-3855-push0-instruction/7014EVMCodes列表https://www.evm.codes/EthereumVirtualMachineOpcodeshttps://ethervm.io/PDF-ethereum-evm-illustratedhttps://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf关于EIP-3855常见问题
1、EIP-3855提案通过后是否可提升TPS?
TPS增长量不大,因为实际在主网上部署合约的交易并不多,假设在一个区块内有10笔部署合约交易的状况,若每个合约部署只「一次性」省约25个PUSH0,所以TPS可提升的有限。
2、一般Solidity开发人员如何应用此EIP-3855提案?
一般Solidity开发人员要等到上海升级完成才能享受到程式码大小变小的好处,EIP-3855主要是让Solidity编译器将所有PUSH10x00改为PUSH0,以节省空间、减少gas等好处。
2020年「PUSH」系列指令數量統計表
此表格参考EIP-3855中作者之一HugoDelacruz所統計的2020全年度EthereumOpcode数量表格,并进行延伸计算。
表格链接:https://mirror.xyz/0x347c9872A2a1dE370D798f9FE96341A9A0E05af8/mmOWhqg5WUkVD54iS210GPcX728x1kz2XZp94mOMtcE
?
原文作者:Ignas,DeFi研究员原文编译:Leo,BlockBeatsPancakeSwap刚刚推出了新的V3版本,也是UniswapV3的一个分叉.
今天和大家聊聊为什么有人看多有人看空?我以前喜欢和别人争论对于行情的看法,现在有人和我不同观点,我会附和对方,然后还是相信自己的判断和交易原则,其实很多时候看多和看空都是对的.
元宇宙,作为虚拟现实技术的下一步发展,正在快速发展并引起了全球的广泛关注。它是一种数字世界的扩展,可以让用户通过虚拟现实技术来与人、物、事件和场景进行互动.
尊敬的BitVenus用户:BitVenus合约关于当合约价格达到一定的值,未实现盈亏亏损到一定程度时,保证金率达到最低维持保证金率。此时维持保证金率等于最低维持保证金率,此价格称为预估强平价.
比特币价格重新测试每日FVG从23,951美元扩展至22,184美元。以太坊价格可能下跌10%至1,703美元,但如果看跌势头持续,ETH甚至可能跌至1,564美元.
原文作者:0x?ShinChan|加密?KOL原文编译:Felix|PANews像Base最近发布的文章中提到的那样.