本文介绍了在以太坊虚拟机工具包(ETK)中实现以太坊对象格式(EOF)的计划。EOF旨在通过在部署时验证结构化的EVM代码,提高链上代码验证的效率和安全性。该项目将基于Ipsilon团队设计的“Mega EOF Endgame”规范,并实现相关的EIP,目标是为EVM语言提供第一个100%可用的EOF实现,并扩展到其他语言。
当前的链上EVM字节码缺乏定义的结构,导致在运行时重复进行JUMPDEST分析,从而引入了开销并阻碍了功能演进。
如相关EIP所述,EOF为EVM提供了一个结构化且可扩展的容器,在部署时进行验证,从而无需运行时验证。 通过这样做,它提供了代码和数据之间的清晰分离。 这种区分对于链上代码验证器至关重要,例如第2层扩展解决方案(例如Optimism)中的代码验证器,从而可以更轻松地实现,提高可靠性并节省潜在的gas。
EVM Toolkit(或ETK)是一组用于在以太坊虚拟机上创建和分析智能合约程序的工具。 到目前为止,它由一个汇编器(eas)和一个反汇编器(disease)组成。
汇编器将人类可读的助记符(例如sload、push2)转换为EVM解释器期望的原始字节,并提供一些工具(例如标签和宏)以简单的方式编写高效的代码。
反汇编器则相反,将原始字节转换为人类可读的助记符,使用户能够以更友好的语言分析为EVM生成的代码。
尽管仍处于实验阶段,但ETK的目标不仅是作为EVM的汇编语言,而且还是一个分析工具(包括基于Z3定理证明引擎的用于分析EVM字节码的工具),供高级用户使用。 如果我们想增加其用户群并提高部署在以太坊网络上的代码的安全性,保持其实现的最新状态至关重要。
本项目旨在在ETK语言中实现以太坊对象格式(EOF)规范。 通过我们在ETK中实现的EOF,我们正在推进此规范的实际应用,从而促进更高效的开发、更高的安全性,并确保ETK与不断发展的以太坊格局保持一致。
根据Ipsilon团队设计的“Mega EOF Endgame” 规范,EOF格式由以下EIP组成:
EIP-3540:EOF - EVM对象格式v1
EIP-3670:EOF - 代码验证
EIP-4200:EOF - 静态相对跳转
EIP-4750:EOF - 函数
EIP-5450:EOF - 堆栈验证
EIP-6206:EOF - JUMPF指令
EIP-7480:EOF - 数据段访问指令
EIP-663:无限制的SWAP和DUP指令
EIP-7069:改进的CALL指令
该文档还提到了其他尚未分配EIP的拟议更改,例如合约创建以及对代码和gas内省的限制。
第一周或一个半星期将专门用于重新阅读组成EOF规范的每个EIP,并整理一份技术文档,其中指定必要的更改、每个EIP的特殊性以及在其各自实现中可能出现的问题。
关于实现本身,虽然很难预测每个EIP的实现需要多长时间(有些很简单,而另一些则需要大量工作),但我估计平均每个EIP大约需要一周时间(包括实现、广泛的单独测试和集成测试)。 至少在ETK(一种汇编语言,其结构相对接近最终程序字节码)的情况下是这样。
该项目的主要目标可以分为两类:
总体目标:在EVM语言中拥有第一个100%可用的EOF实现。
个人目标:更多地了解编译器/Rust
如果一切顺利,ETK语言中的EOF实现有可能在EPF持续时间之前得到解决。 在这种情况下,同样的知识可以很容易地扩展到其他语言。
虽然我们尚未进行深入讨论,但有可能与Fe语言开发团队合作,后者在语言设计方面似乎处于更深入的研究阶段(如果这种合作富有成果,将上传一个新的项目提案并在此处链接)。
- 原文链接: github.com/eth-protocol-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!