对于初入区块链领域的朋友来说,常常会有一个疑问:像以太坊这样的智能合约平台,其核心执行环境——以太坊虚拟机(EVM,Ethereum Virtual Machine),究竟是运行在哪一台具体的机器上呢?是一台超级计算机,还是某个数据中心的服务器?答案可能会让人有些意外:以太坊EVM并非运行在某一台特定的、单一的机器上,而是运行在全球成千上万台参与以太坊网络的计算机节点上。

要理解这一点,我们需要先了解几个关键概念:

  1. 以太坊网络:以太坊是一个去中心化的全球性计算机网络,它不像传统的互联网应用(如你访问的某个网站)那样,运行在某个公司拥有的中心服务器上,相反,以太坊网络由成千上万个分布在世界各地、自愿参与维护的节点(Node)组成。

  2. 节点(Node):节点就是一台运行着以太坊客户端软件的计算机,这些计算机可以是个人电脑、服务器,甚至是树莓派等设备,节点的主要功能包括:

    • 存储区块链数据:保存以太坊区块链的完整或部分副本。
    • 验证交易:检查新提交的交易是否符合以太坊的规则。
    • 执行交易和智能合约:这是EVM发挥作用的核心环节。
    • 共识:通过共识机制(目前是权益证明PoS,以前是工作量证明PoW)就区块链状态的更新达成一致。
  3. 以太坊虚拟机(EVM):EVM是以太坊的“心脏”和“大脑”,它是一个图灵完备的虚拟环境,它是一个标准化的、隔离的执行环境,专门用于处理以太坊上的交易和运行智能合约,智能合约的代码就是在EVM上被解释和执行的。

EVM具体是如何在这些节点上运行的呢?

当你向以太坊网络发起一笔交易,比如调用一个智能合约函数时,会发生以下与EVM相关的事情:

  1. 广播交易:你的交易被广播到以太坊网络中的各个节点。
  2. 节点接收与验证:每个收到交易的节点首先会对交易进行基本验证,比如签名是否有效、 nonce 是否正确、手续费是否足够等。
  3. 进入交易池:验证通过的交易会被节点放入本地的交易池中,等待被打包。
  4. 打包与执行(EVM核心作用)随机配图