字节码
使用高级语言 Solidity
或 Vyper
编写的智能合约,是无法直接运行的。需要先使用编译器编译成字节码(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
bytecode
被fe
分成三部分:
init bytecode
: 6080604052348015600e575f80fd5b50603e80601a5f395ff3runtime bytecode
: 60806040525f80fdmetadata hash
: a264697066735822122045318ec63deadfc4b6101f2b233ded7fe74c47fa08f6d43730c9ce5499ea75ea64736f6c63430008150033