智能合约与可编程性

以太坊虚拟机

以太坊虚拟机(EVM)是以太坊内部那台用来真正运行智能合约的「想象中的计算机」。没有哪一台实体机器是「那台 EVM」;相反,网络里的每个节点都模拟出完全相同的这台计算机,并一步一步地让每份合约在其中运行。可以把它想成一台密封、标准化的引擎,成千上万的运营者各自按同一份规格把它造出来,于是无论把相同的指令和输入喂给其中哪一台,都总会得到相同的结果。它要解决的问题是「达成一致」:一个遍布全球的网络,怎样才能确信大家算出的结果分毫不差?

智能合约用对人友好的语言写成,再被编译成一长串称为字节码的微小指令,供 EVM 理解,就像一份食谱被拆解成基本的厨房步骤。EVM 一次处理一条指令,边走边读取并更新区块链上保存的数据;它被刻意设计成确定性的:给定相同的起点,它不会「跑偏」,在不同机器上给出不同答案。每条指令还有固定的成本,用 gas 来计量,由调用者支付;用光了 gas 预算的合约会被中止并回滚。这样就能防止任何单个程序无休止地运行、把网络冻住。

EVM 的重要意义在于,它是让合约可移植、可预测的共同标准。正因为有这么多人理解并采用了它,其他区块链也造出了各自兼容 EVM 的引擎,于是一份只写一次的合约,往往能几乎不加改动地在多条网络上运行。这个共同的地基,是智能合约生态能如此迅速壮大的重要原因:开发者学会一台机器、一套工具,他们的成果就能广为流传。

当你发送一笔调用合约的交易时,你的节点和其他每个节点都会把合约的字节码加载进 EVM,并用相同的输入运行它。每个节点都独立得出完全一致的新余额和数据,然后把这份共同的结果记录到链上。

许多其他区块链运行兼容 EVM 的引擎,这正是同一份合约代码常常能部署到多条网络上的原因。

又称
EVM以太坊虚拟机以太坊虛擬機