# BatchEvm **Repository Path**: xinghanting/batch-evm ## Basic Information - **Project Name**: BatchEvm - **Description**: 实验性质的多线程加速的EVM - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-04-25 - **Last Updated**: 2022-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BatchEvm ## 简介 实验性质的多线程加速的EVM ## 代码说明 为了后续的兼容性考虑,现有的代码尽力和Geth/core/vm部分的代码保持一致。主要的差异在于使用BatchStorage替换Geth中的StateDB接口。BatchStorage由四部分组成 ```Go type BatchStorage struct { ExecuteCache *ExcuteCache BatchCache *BatchCache StateDB ChainDB } ``` - ExecuteCache 记录该笔交易在执行的时候涉及到的世界状态的修改。 - BatchCache 记录批处理交易中设计到的状态的缓存。 - StateDB 一组接口,负责访问世界状态,在运行时只读。 - ChainDB 一组接口,负责访问链上信息,Geth中将这些函数分布在各个数据结构体中。 ## 进度计划 - [x] Frontier阶段所有指令操作的实现 - [ ] 动态Gas计费的函数实现 尚未完成的动态Gas费指令:Call,CallCode和SelfDestruct指令 主要没有理解[EIP161](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md)中Empty账户和Suicide账户的概念,和EIP150分叉有关。 - [ ] 以太坊分叉导致的EIP适配 - [ ] 测试框架搭建