火星链 火星链
Ctrl+D收藏火星链
首页 > DOGE > 正文

GAS:无版本区别的EVM(以太坊智能合约虚拟机)

作者:

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

编者注:本文为Parity开发者WeiTang写作的,关于如何增强EVM后向兼容性的文章,改进Gas机制的方案堪称大胆。

如果我们有机会可以重新设计EVM、提升其后向兼容性、让它对功能升级更为友好,而且可以完全不必考虑我们现有的历史包袱,我们该怎么做呢?

在这篇文章中,我会探究这个问题,并记录下由此演化出来的技术说明和设计哲学。

目标

Web是没有版本区别的,而且已经存在了几十年。因此我在此假设,我们想做一个同样没有版本区别的EVM。

我们同样希望保证,这种虚拟机具备良好的后向兼容性。也就是说,至少能良好兼容我们现有的合约,而且,也可以轻松加入新功能。

CertiK:Push Protocol项目Discord服务器已被入侵:金色财经消息,据CertiK监测,Push Protocol项目Discord服务器已被入侵,有黑客发布钓鱼链接。在团队确认已重获对服务器的控制之前,请勿点击任何链接。[2023/5/30 11:47:40]

无效操作码

要设计一个永续的EVM,最简单可能也最重要的改动便是为合约部署添加一个验证过程。并非所有的字节序列都是有效的EVM代码,任何无效的操作码都不应该被部署到链上,因为在未来,这些代码可能会被分配以一个新的操作码,有不一样的功能。

此种检查的技术详述初次成文化是在EIP-1712中。简要来说,在执行合约创建的状态转变函数之前,执行下列检查:

数据:以太坊Layer2扩容网络Arbitrum活跃账户数突破100万,交易总量超4000万笔:金色财经报道,据Dune Analytics最新数据显示,以太坊Layer2扩容网络 Arbitrum活跃账户数突破100万,本文撰写时为116.5万个;链上交易总额超过4000万美元,当前约为4104万笔。此外,Arbitrum链上锁定总价值达到25.62亿美元,锁定的全部以太坊ERC-20代币总价值达到31.20亿美元。[2022/10/14 14:27:41]

遍历代码的字节码

如果代码是一个PUSH(n)操作码,则跳过接下来n个字节

Web3自动化解决方案Doxy Chain完成220万欧元种子轮融资,Level2 Ventures领投:9月6日消息,Web3 自动化解决方案 DoxyChain 完成220万欧元种子轮融资,Level2 Ventures领投,CVVC、Polish Satus Starter 和 Müller Medien 参投。

据悉,DoxyChain是一个为传统文档管理向Web 3.0世界的过渡构建解决方案。

目前该公司推出了两项新的SaaS功能,允许构建一个模块化的基础架构,让客户能够在此基础上开发自己定制的高级工作流程和用例。 10 月,该公司将推出NFT平台DoxyCert和数据交易平台DoxyConnect。[2022/9/6 13:11:00]

如果字节码是一个有效的操作码,或者指定了无效指令,继续

否则,捕捉到错误

上述检查有点类似于jumpdestination检查。注意,对于例外情形,我们在这里使用的是“trap”,下文我们会详细解释。

功能调查

如果EVM要消弭掉版本的差别,基于EVM的代码执行应有能力调查出底层环境是否支持一种特定的功能。给定EVM所承担的角色,我们总是希望一个已经定义好的操作码的功能可以保持不变,并且还可以引入新的操作码来添加功能。而一些合约可能在引入某些特定功能之前就已经部署上去了。这些合约可以安排一个备用的子程序,在EVM不支持某功能的时候就运行子程序,而一旦硬分叉激活后就立即开始使用新功能。功能调查组件就像这里要用到的跳转器。因此,我们正式地定义一种新的操作码HAS_FEATURE。

该操作码接收一个堆栈参数。它会检查该参数是否位于0到2^8之间,如果不是,就捕捉错误

如果参数不受支持,就把0x0推回栈中;否则就推入0x1

例外与捕捉

在EVM的运行过程中,可能有很多因素会导致执行失败。单个交易可能因为耗尽Gas而失败;调用栈中的每一层都可能单独失败,而其错误必须被父调用框架明确处理。这些特性给了我们一定的弹性,但对于要运行在区块链上的合约来说,并不必然就是好事。这里,我们想重新定义一下,任何EVM本身发出的异常,都可以有trap行为,作为对fail的替代。也就是说,所有调用框架的所有执行过程中、消耗任意gas的时候、甚至被当前的状态函数回滚变更的时候,都可以有trap。合约接下来就被会鼓励使用返回值,在它们想跟父调用者交流非致命错误的时候。

Gas消耗量

过去的经验已经证明,我们总是想调整Gas消耗量。因为我们要这样做,我们不希望合约开发者对交易的Gas消耗量甚至是任何操作码的Gas消耗量作任何假设。要实现这一点,只需将EVM内所有关于Gas消耗量的公开信息都移除。这样Gas消耗量就成了一个外在于EVM、被隐藏起来的“实现上的细节”,只需在区块层执行中妥善处理。正式地移除0x5a的Gas操作码。此外,重新定义CALL、CALLCODE和DELEGATECALL,不再使用gas栈参数,而是采取现有执行框架中所有可用的Gas。

原文链接:

https://that.world/~essay/nevm/

作者:WeiTang

翻译:阿剑

标签:GASALLCALRAPGASC币ALL币callacarCoinbase Wrapped Staked ETH

DOGE热门资讯
SDT:JEX上线周ETH期权0912公告

ETH看涨期权代码周ETH看涨0912期权标的ETH合约类型欧式看涨期权计价单位USDT最小价格单位0.0001USDT合约比例25:1.

1900/1/1 0:00:00
加密货币:NoJoke | 美国雨林基金会出大招 区块链解决慈善透明问题

区块链的价值在数据,区块链的数据就是事实。你知道还有多少比特币躺在矿床里吗?你知道有多少比特币永远也找不回来了吗?你知道现在有多少款数字货币在流通吗?你知道中本聪的真实身份吗?NoJoke告诉你.

1900/1/1 0:00:00
HASH:公钥加密、加密Hash散列、Merkle树......区块链的密码学你知多少?

大家都知道,区块链是比特币的底层技术,但区块链技术的核心,又是什么?是密码学。密码学是区块链技术的核心。所有的交易信息都会被编码到区块里,而区块链则是由这一个个区块连接在一起而形成的结构.

1900/1/1 0:00:00
YAK:俄联邦储蓄银行完成采用区块链技术的首笔交易

俄罗斯联邦储蓄银行董事会第一副主席AlexanderVedyakhin称,该行已通过区块链与新加坡托克公司(TrafiguraPTELtd)签署了第一笔交易.

1900/1/1 0:00:00
APP:8月公链观察:以太坊到底“满”了吗?

说明公链是区块链产业的重要组成部分。全网共有2651种加密货币,市值约为2624亿美元,其中,比特币市值占70.9%。而在占剩余30%市值的加密货币中,其他公链代币占据了相当大的比重.

1900/1/1 0:00:00
区块链:金色周报丨央行数字货币已开始“闭环测试” 另类比特币ETF获准发售

金色周报区块链、数字货币信息推荐阅读《中国央行:将于9月16日下调金融机构存款准备金率0.5个百分点》《穆长春履新央行数研所掌门人中国数字货币将正式亮相》《央行数字货币已开始“闭环测试”》《澳本.

1900/1/1 0:00:00