Skip to content

Latest commit

 

History

History
24 lines (15 loc) · 2.99 KB

evm之总结.md

File metadata and controls

24 lines (15 loc) · 2.99 KB

为什么会写这个系列的文章

虽说是作为一个coder, 其实大部分时间在做学习和研究工作,然后一小部分时间是在写代码来实现想要的功能。 回顾自己的工作, 发现除了留下一堆代码好像可视化的文档少之又少。 留意身边的同事大都很反感写文档。 其实文档是一个很好的锻炼自己的方式, 一来可以将之间学习的到知识再一次梳理和巩固一遍。 二来以后需要的时候可以随时查看,比去翻代码强多了。三来纵观各位程序员大佬都有写文章的习惯, 虽说不能达到一些大神的高度,学习其习惯总是没有错的。

这个系列的文章的收获有哪些

  1. 对编译原理和计算机结构有更深入的了解。

在看evm的源码之前,其实也有做过很多功课。 当时也有想法去实现一个新的智能合约虚拟机。 只是难度太大, 个人精力和时间都有限, 遂放弃。但是编译原理的知识对阅读整个evm的帮助很大。在这里推荐一本书叫做<> 算是真正的使用Go写一个解释器的实战项目。从token解析, 到语义分析到生成抽象语法树以及最终解释器的实现都有详细的说明。 真的是实战派的好帮手。

  1. 对整个以太坊的智能合约理解更透彻 在之前使用以太坊的大部分工作都是查看RPC接口, 调用接口或者官方封装的方法。 很多过程都不是很理解, 比如调用合约到底是如何一个流程, 创建的input的数据是怎么打包的, abi到底是个什么东西。 在整个代码看完之后,其实这些自然就不在是问题。

  2. 善用调试工具 在前在使用go的过程中,很少会用到调试工具, 主要是golang的goroutine模型会导致调试的时候程序莫名其妙就跑飞了。 gdb在其上的支持并不是很完善。 后来的dlv依然有这些问题, 久而久之打日志倒是使用最频繁的调试方法了。 但是evm的整个流程并不涉及任何并发, 所以非常适合使用调试工具进行调试。整个调试的时候你会明显的看到整个PC计数器,栈的状态。对于理解evm非常有帮助。

  3. 对知识更深一步巩固 很多时候我们理解一个知识点是一方面,但是将其用文章描述出来又是另外一方面。 写文章的过程其实更是一种巩固和消化的过程。 整个过程就好像你要把你知道的东西尽最大能力通俗准确的解释给其他人。

是否还会有后续

evm的移植文章暂时也就写到这里,一来自己大部分的工作并不是围绕着智能合约展开的。 二来好像大部分人对这个方面的关注也比较少好像并部分给别人提供到帮助, 三来自己也已经了解整个过程也自己动手实践过算是已达到目的。

最后

如果你能看到这篇文章, 那真的应该是有缘人。 区块链寒冬, 期望能耐得住寂寞好好磨练功力。大家共勉之!