跳到主要内容

字节码

使用高级语言 SolidityVyper编写的智能合约,是无法直接运行的。需要先使用编译器编译成字节码(bytecode), 输出给 EVM 解释执行。

假设有以下的智能合约 Test.sol:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.21;

contract Test {
constructor () {}
}

通过 solc 命令编译,如何安装

solc Storage.sol --bin

得到 bytecode 如下所示:

======= Test.sol:Test ======= Binary: 6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea264697066735822122045318ec63deadfc4b6101f2b233ded7fe74c47fa08f6d43730c9ce5499ea75ea64736f6c63430008150033

bytecodefe分成三部分:

  • init bytecode: 6080604052348015600e575f80fd5b50603e80601a5f395ff3
  • runtime bytecode: 60806040525f80fd
  • metadata hash: a264697066735822122045318ec63deadfc4b6101f2b233ded7fe74c47fa08f6d43730c9ce5499ea75ea64736f6c63430008150033