1. EVM Intro
EVM是以太坊协议的一部分,用于控制智能合约的部署和执行,可以想象成一台超级计算机,拥有数百万个可执行的东西,也就是合约,每一个东西都有自己的永久存储。
Solidity代码需要先编译成字节码,才能部署到以太坊网络,字节码代表着一系列用于EVM的Opcode
ByteCode
当一个合约被编译的时候,大部分合约都会被编译成三个部分:
- Contract Creation Code
- Runtime Code
- Metadata
在中间会有INVALID
来分割。
当看到CODECOPY-39
的时候一般就是合约 的创建部分
OpCode
实际上就是对Stack Memory Storage做一些事情。
Stack
EVM是堆栈的,深度游1024个items,每个item都有256bit也就是32字节。因为是堆栈的所有符合后进先出。
Opcodes使用堆栈元素作为input,始终使用栈顶的元素进行操作