关于以太坊虚拟机的实现原理及操作码分析,我自身掌握的一些知识也比较零散,但网上有很好的资料可以学习,通过阅读一系列文章,有助于梳理自己的知识点,把一个个离散的点串成一条线,为更加深入的学习打下基础。
个人推荐这五篇文章,但由于时间紧张,我也没有工夫逐篇说明了,自己找想要的看吧。(建议前置知识:一些Solidity编程基础)
Diving Into The Ethereum Virtual Machine 系列:
有网友对以上文档制作了翻译版:
读完之后,相信你会对EVM的原理有深入的认识,或许会解答你的一些疑惑!
比如:
EVM汇编代码与 Solidity 的对应关系是什么?
答:请查阅第一部分。
为什么有些人的钱包地址会比别人节省Gas?
答:因为他们钱包地址0比较多(哈哈) 请查阅第一、第二部分。
为什么有些合约操作这么费Gas?
答:有些指令(尤其是存储)的Gas价格是很贵的。请查阅第一、第二部分。
映射、数组这两种看似不同的数据结构,在虚拟机的存储器中是怎样的存在?
答:其实数组属于是一种有着更加高级特征的映射,具体查阅第三部分。
调用合约一定要ABI吗?ABI是如何对参数进行编码的?
答:不一定。 ABI 可以将参数编码为字节序列,以进行交易的发送。详情参阅第四部分。
当一个新合约被创建时,EVM里究竟发生了什么?
答:说来话长,看第五部分吧!
注:译文(第4部分)似乎URL打不开了,可尝试到CSDN博客查看。