Nethermind 的 IL-EVM 的操作码实现、测试、代码分析和统计

本文介绍了 Nethermind 团队的 IL-EVM 项目,该项目旨在通过将 EVM 代码动态转换为 .NET 中间语言并进行实时优化来提高 EVM 的效率。项目包括实现 LOG0-LOG4 操作码,生成 2-7 个操作码模式的统计信息,并根据统计信息实现常见的操作码模式,最后进行测试和修复 bug。

Nethermind 的 IL-EVM 的指令码实现、测试、代码分析和统计。

动机

进行 EVM 优化项目有许多内在和外在的动机。

  1. 个人动机:我想更多地了解优化和更底层的编程,而拥有一个项目可以帮助我实现这个目标。
  2. 技术动机:通过优化提高 EVM 的性能可以加快交易处理速度,从而通过增加每秒处理的交易数量来提高 Layer 1 的可扩展性。
  3. 环境动机:优化可以提高资源利用率,这意味着资源可以更有效地用于给定的任务。或者,优化可以减少执行相同任务所需的资源量。这会带来更加环保的节点。优化 EVM(节点的资源密集型组件)将显着提高硬件利用率。
  4. 经济动机:可以通过优化降低节点的运营成本,这可能会降低 gas 价格

项目描述

我的项目的目标是与 Nethermind 正在进行的项目 IL-EVM 的近期目标保持一致。IL-EVM 旨在通过将超过特定阈值的合约的 EVM 代码段动态转换为 .NET 的中间语言来提高 EVM 的效率。此外,它采用 .NET 堆栈而不是 EVM 堆栈来执行 EVM 操作,并且在运行时生成的 IL 代码会经过即时编译,然后由 .NET 运行时实时优化为本机机器代码。该项目包含一个代码分析器,可以检查代码中是否存在特定模式的实例,并确定何时应分析智能合约是否存在模式以及何时应编译它。以下是项目演示中的一些幻灯片,其中概述了 IL-EVM 的现有组件和潜在的优化思路。

我的项目任务按优先级顺序可分为以下几类:

  1. 为 IL-EVM 编译器实现 LOG0、LOG1、LOG2、LOG3、LOG4 指令码:
    • 这是 IL-EVM 项目中非常重要的下一个任务。
    • 这涉及学习底层 IL 代码生成库 Sigil。
    • 编写一个可用的实现。
  2. 生成 2-7 个指令码模式组的统计信息
    • 确定时间模式挖掘算法或策略
    • 使用脚本更早地检索统计信息
    • 增强节点,使其能够为正在执行的频繁出现的 2,3,4,5,6 和 7 个 Op Code 模式生成统计信息
  3. 实现 2-7 个指令码模式组
    • 从之前的任务中选择最常调用的 2-7 个指令码模式,并在 IL-EVM 的模式匹配模式中实现它们。
  4. 测试和错误修复:
    • 调试并修复发现的实现错误
    • 其他待定的测试

路线图

周次 任务 1 (40%)
Week 6-8 实现 5 个 LOG0 - LOG4 指令
Week 8-10 开始开发 n-gram 统计工具
Week 10-12 统计工具
Week 12-14 "
Week 14-16 编写 2 个指令码实现
Week 16-18 2-7 个 Op code 实现和统计
Week 18-20 测试
Week 20-21+ Devcon 演示

可能的挑战

  1. 缺乏 dotnet 知识和 c# 技能。
  2. 第一个涉及优化的项目。

项目目标

完成上述大部分任务,并在任何剩余任务上取得良好进展。

合作者

导师

资源

IL-EVM 问题 特性:IL-Evm 优化

  • 原文链接: github.com/eth-protocol-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
eth-protocol-fellows
eth-protocol-fellows
江湖只有他的大名,没有他的介绍。