月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 聚币 > 正文

ODE:EIP-3855 如何让合约更精简_PUSH币最新价格

作者:

时间:1900/1/1 0:00:00

前言

本文将深入介绍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。

MetaMask启用适配EIP-1559的新版本:8月19日,MetaMask官方称目前已针对所有用户启用适配EIP-1559的新版本。MetaMaskChrome浏览器插件钱包的最新版本是v10.0.2。另外,MetaMaskiOSv3.0版也已启用EIP-1559相关功能。[2021/8/19 22:23:43]

EVM与Opcode概念

在介绍EIP-3855之前,我们先来简单了解Ethereum中最重要的EVM概念!

EVM

我们为了让智能合约在独立且安全的环境中执行,而从Ethereum节点中会切出一块具有储存、执行等功能的运算环境,我们将之称之为EVM虚拟机。

而这个EVM具备执行智能合约所需的堆叠、记忆体、纪录Gas费用及储存下一行指令位址等各种必要元件,以便完成开发人员要求的各种计算。

Bytecode与Opcode

星火矿池市场负责人邱晓栋:我们还是反对EIP 1559,但无法阻挡实施:7月25日,“2021世界区块链大会·杭州”在杭州未来科技城学术交流中心进行。在 “伦敦升级在即,EIP-1559开启以太坊新时代?”圆桌论坛上,星火矿池市场负责人邱晓栋表示:目前EIP 1559对交易的性能以及参与DeFi的手续费并没有节省什么成本。我们还是坚持反对立场,但本质上结果已经不可阻挡。预计8月4日、5日会进行部署,最近还有很多言论说到2022年,这也是谣言。我们自己的程序员也在测试过程中发现EIP 1559的测试网的确有BUG,有BUG还要在8月4日这么短的时间内部署,看来决心很强,因为这是集体开发者通过的,所以反对的声音还在。我们的立场不变,但结果肯定不会改变,我们只是说期待它的上线能让DeFi的使用者清楚地知道什么是BaseFee,什么是矿工的小费。(巴比特)[2021/7/25 1:14:19]

我们用Solidity等语言所撰写的智能合约,要先编译成一连串EVMOpcode,这一连串Opcode称为Bytecode。我们接着来进行一段简单的操作就会比较清楚!

BitMEX前CEO:EIP-1559升级与即将到来的伦敦硬分叉将使ETH供应紧缩:BitMEX前首席执行官Arthur Hayes在Medium发文指出,EIP-1559升级与即将到来的伦敦硬分叉打包,将使供应紧缩,这是目前的主要牛市的理由。然而,他警告说,总供应量最终可能太少,导致DeFi生态系统无法正常运转。因此,Arthur Hayes预测必须改变这样一个“有缺陷的”通货膨胀时间表,这将使价格“跌至底部”。(U.Today)[2021/5/14 22:01:59]

有兴趣的读者可以透过EtherVM了解更多关于Opocde的介绍。

首先,我们先在Remix上编译下方这份简易的加法智能合约,编译完成后就可从artifacts资料夹中看到包含此智能合约Bytecode与Opcode的Json资讯档。

智能合约在线编译工具Remix

与此同时,这个智能合约也已部署到Goerli测试网中,我们可点选在Etherscan上的钮从Bytecode切换到Opcode观看模式。这时,即可得知一连串Opcode称为Bytecode。

以太坊开发者反驳EIP-1559还有几周时间推出的传闻:去中心化组织PieDAO市场负责人William Brealey今日在推特表示,EIP-1559可能最终导致通货紧缩的ETH模型,现在只剩下几周时间了。对此,以太坊开发者Tim Beiko回复称,我从没提过EIP-1559还有“几周”推出。说清楚一点,不是这样的。[2021/1/14 16:09:16]

这里就只截取这份合约部份的Opcode。

部份Bytecode与Opcode对照表

现在我们有了EVM、Bytecode、Opcode的概念后,那EIP-3855到底要改进什么问题呢?

前面的例子中,我们了解到若想要将一个零的值推到Stack中,这个动作会被编译成「PUSH0x00」(两个Byte,分别是0x60及0x00,其中0x00代表零的值,所以0x6000整整占了2个Byte的Storage空间!

1ByteBytecode空间需要支付200Gas的费用。

Deipool借贷挖矿支持质押BIKI挖DIP:据官方消息,Deipool借贷挖矿已上线BIKI资金池,支持质押BIKI挖DIP,借方和贷方任意一方,质押BIKI参与流动性挖矿,每天都有一定比例的收益。Deipool连续5日公测,10月10日至10月15日每日挖矿总产出5万DIP,正式挖矿将于10月15日开启,每日挖矿总产量23万DIP,每天借贷挖矿的产量,由智能函数确定,线性减产,激励早期参与者。

?BiKi已上线DIP,并支持DIP流动性挖矿,通过网格宝开启DIP/USDT网格交易的用户将瓜分该币对前一日币币手续费50%,一键即可享受网格收益+流动性挖矿双收益。[2020/10/12]

另外,执行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

?

标签:ODECODECODPUSHLODECODEX币COD价格PUSH币最新价格

聚币热门资讯
比特币:比特币价格延续盘整,为何可以遏制上行空间_USD

比特币价格在28,800美元阻力位下方开始盘整阶段。BTC正在苦苦挣扎,可能在28,500美元和28,800美元上方面临大量抛售兴趣。比特币正在缓慢走低,交易价格远低于28,800美元的阻力位.

1900/1/1 0:00:00
AVA:Avalanche 在 Fuji 测试网激活 Cortina 升级,包括迁移 X-Chain 以运行 Snowman++ 共识和提升 C-Chain Gas 上限_GDEFI币

ForesightNews消息,AvaLabs工程主管PatrickO''Grady表示,Avalanche已于北京时间4月6日23:00在Fuji测试网上激活Cortina升级.

1900/1/1 0:00:00
ANC:CFTC诉讼能否影响 Binance的加密货币市场主导地位?_Dego Finance

全球见证了全球交易量最大的加密货币交易所币安的无可挑剔的崛起。然而,美国商品期货交易委员会最近对该公司提起的诉讼在很多方面都具有破坏性。该交易所的声誉和市场份额都受到了打击.

1900/1/1 0:00:00
以太坊:金色晚报 | 4月4日晚间重要动态一览_区块链最新局曝光

12:00-21:00关键词:Voyager、OPNX、肯尼亚、zkSync1.沙特主权基金Sanabil披露多项对Web3领域的投资;2.法庭文件:Voyager和Binance.

1900/1/1 0:00:00
LST:如果卡尔达诺 ADA突破“巨大的卖墙”,它可能会进入牛市反弹_ADA

智能合约平台Cardano($ADA)的原生代币价格如果成功突破目前拥有“巨大卖墙”的关键水平,将进入牛市.

1900/1/1 0:00:00
比特币:分析师评狗狗币(DOGE)前路:短期前景如何?_波特币与比特币

在埃隆马斯克用狗狗币吉祥物替换推特标志后,全球最大的表情包代币再次突破0.10美元的水平。尽管DOGE价格在撰写本文时跌至0.93美元的水平,但与反弹前的水平相比仍然很高.

1900/1/1 0:00:00