https://github.com/XChainLab/documentation/blob/master/VM/EOS/EOSVMArch.md
EOS虚拟机实现思路分析
EOS在智能合约目标格式选择上应该做过一定的考虑,对于wasm的选择可能出于社区支持和实现上的双重考虑,这点在采用LLVM-JIT技术就有所体现。EOS在选择如何实现虚拟机的方案上采用的是开放的态度,即如白皮书所讲。EOS为了使项目完整,需要提供一个的虚拟机。首先选定wasm不仅仅是因为支持的大厂比较多,还有出于多语言支持的考虑,敲定wasm目标格式后痛苦的事情就来了目前需要一个能执行他的虚拟机容器,目前都是浏览器支持,落地就是JS的解析引起支持,如果用JS解析引擎,工程量大,发布还要附带js胶水代码加麻烦的还有结果如何安全获取。于是需要的是一个wasm的执行的轻量级虚拟机,WAVM成了首选,多亏AndrewScheidecker之前写过一个这样的项目,于是直接Fork,加些接口就完成了implementation。从另外一个角度看 如果不考虑生态的问题,LLVM中的bc也可以作为智能合约的语言,通过修改lli来完成虚拟机的实现,而且工程实践更加简单,但是问题就是和LLVM绑定了,虚拟机只能和LLVM混,这个限制太大。
网友评论