以太坊虚拟机
想必读者已经对以太坊的全局结构有一个清晰的了解,也部署了一份简单的智能合约。
在以太坊上最重要的活动除了转账以外,就是编译、运行智能合约(Smart Contract)。
智能合约代表了一个以太坊世界里的独立管家。它按照自身代码指示进行以太币的收入,支出活动,也具有一定存储空间可以存储一些数据。
在 Solidity 智能合约编程学习中,经常有一些似是而非的问题,都是因为对于以太坊虚拟机的根基理解不深而导致的,例如下面的问题。
- 排列数据时如何做到紧凑省gas?
- 为何数据加减法会有向上溢出和向下溢出?
- Mapping结构在以太坊里是如何存储的?
为了在编程时做到胸有成竹,知其然并知其所以然,本章用简短的篇幅介绍智能合约的运行环境– 以太坊虚拟机 (Ethereum Virtual Machine, EVM) ,帮助读者理解智能合约运行的上下文环境。了解完这部分知识后,读者能更加理解在Solidity编程中的各种限制和意外情况。
- 虚拟机的执行结果
- 虚拟机的执行资源
- 合约调用合约?
- 虚拟机的输入输出
- Gas 花费与退回
- 虚拟机指令集
以太坊虚拟机执行分为两大类,只读操作和写操作。 仅获取区块链状态的操作为只读操作。只读操作并不修改区块链状态,在链式调用合约的时候也不会触发任何状态变更,所以较为迅速。写操作则会改变区块链的状态。例如一个更改账户状态的操作 ...