该项目旨在提供一个以太坊虚拟机的精简版程序库。项目主要工作在于将以太坊项目中的虚拟机部分代码抽离出来,精简并合并虚拟机部分代码的依赖,提供一个EVM的最小执行环境,可以一定程度上解决区块链兼容以太坊智能合约开发的成本,对于开发者需要实现和具体链相关的底层数据操作以及地址接口。
构建该项目你需要机器上装有go语言和工具,并设置好GOPATH。除以上描述并无其他的编译依赖。
通过git复制源代码到本地的任意一个目录,打开目录后你将看到三个文件夹分别为
- kernal 存放EVM的所有的核心代码和接口
- crypto EVM中依赖的加密算法的实现,目前是该项目的唯一依赖,该实现来自于go-ethereum
- demo 该目录下存放的是一个该项目的演示示例
进入demo目录,执行go build之后将生成demo程序,直接运行即可。
如果要将该项目集成到你的项目中你需要做以下的工作:
- 实现StateDB接口,该接口主要是数据存储操作接口,需要结合你的数据存储实现进行开发实现,demo中实现了一个Mock的数据存储
- 需要实现ChainHanlder接口,目前只需要实现BlockHeader的Hash获取接口。
- 由于是EVM的精简版,代码上已经尽量的做了删减,但考虑到最大的兼容,因此保留了几乎所有的针对以太坊的配置设置
- 具体的配置可以根据实际集成的链进行调整,可以参考demo/runtime.go进行调整 ##后续计划
- 抽离interprter部分实现,更加的通用的解释器,确定指令集合
- gas模型剥离,提供resource的消费接口
- 通用的StateDB接口设计 .....
项目采用License为License