以太坊虚拟机 (Ethereum Virtual Machine (EVM))
简而言之: 以太坊虚拟机(EVM) 是一种“图灵完备”的虚拟机,为以太坊上的每个智能合约提供运行环境。它确保开发者部署的代码按预期执行,并在网络的每个节点上以完全相同的方式…
以太坊虚拟机(EVM)是一种“图灵完备”的虚拟机,为以太坊上的每个智能合约提供运行环境。它确保开发者部署的代码按预期执行,并在网络的每个节点上以完全相同的方式运行。
为什么重要
开发者使用 Solidity 或 Vyper 等语言编写智能合约,并将其编译成由 EVM 运行的字节码。每个全节点都会用相同的输入执行相同的字节码,并且必须得出相同的结果。网络正是通过这种方式,在无需信任任何单一服务器的情况下,就余额和合约状态达成一致。“图灵完备”意味着 EVM 理论上可以运行任何程序。但在实践中,每项操作都要消耗 Gas,每笔交易也都有 Gas 上限,因此程序无法无限循环、堵塞网络。许多其他区块链也兼容 EVM:它们运行同类字节码,并使用相同的 0x 地址格式。这有助于开发者复用代码,但也正因如此,交易所会要求你在充值或提现时选择正确的网络。
示例
一位开发者用 Solidity 编写了一个代币合约,编译后将字节码部署到以太坊上。之后当用户调用该合约的转账函数时,每个节点上的 EVM 都会运行同一段代码,检查发送方的余额并更新双方的余额。如果代码出错或 Gas 耗尽,EVM 就会撤销这些更改。