从账本到状态机
我们通常用“分布式账本”的类比来描述像比特币这样的区块链,它使用密码学的基本工具来实现去中心化的货币。而以太坊也有自己的本土加密货币并同样遵循着分布式账本规则,但同时它也支持更强大的功能“智能合约”,这也是以太坊可编程的关键,因此以太坊除了是一个分布式账本之外,还是一个状态机器,可以根据预定义的规则(智能合约)在不同区块之间更改。

EVM 如何工作
EVM 运行在以太坊的每个节点上,当部署一个智能合约时,合约代码会被编译成字节码,然后通过网络广播到所有节点。EVM 在每个节点上执行这些字节码,确保所有节点对交易和合约状态达成共识。
和 Java 的 JVM 不同,EVM 不是一个需要单独下载的独立软件,而是嵌入在以太坊客户端中的运行时环境。开发者可以通过以下方式获取 EVM 环境:
- 安装以太坊客户端 :如 ethereumjs-vm(js 实现)、evnone(c++实现)、revm(rust 实现) 或 Py-EVM(python 实现),这些客户端都内置了 EVM。
- 使用开发框架 :如 Hardhat 或 Truffle,它们在本地启动一个模拟的 EVM 环境,方便开发和测试。
- 在线 IDE :如 Remix IDE,无需本地安装,直接通过浏览器连接到远程 EVM 实例。
比如用 Solidity 编写的合约,.sol 编译为 EVM 字节码(十六进制操作码)和 ABI 应用二进制接口。每个操作码执行会消耗燃料,具体看EVM 操作码
