跳到主要内容

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,始终使用栈顶的元素进行操作