其他分享
首页 > 其他分享> > 1.7 以太坊节点

1.7 以太坊节点

作者:互联网

节点就是计算机,它们之间通过 p2p 协议互相连接,组成了以太坊网络 。

以太坊有两种类型的节点:

  • EVM
  • 挖矿节点

需要注意的是,这种分类只是为了对概念进行细分,在大多数场景中,并没有专门的 EVM,相反的是,所有的矿工节点都承担了 EVM 的职能 。

1.7.1 EVM

EVM 是以太坊网络的运行环境,其主要职能就是提供执行智能合约代码的环境。EVM 能够访问智能合约内部和外部的账户,以及自己存储的数据,但它只能访问当前交易内的信息,不能访问全部账本。

EVMs 是以太坊的执行组件,其目的就是逐行地执行智能合约中的代码。但是,需要注意,当交易提交时,它实际上并没有被立即执行,而是被存放到交易池中,当然也就没有写入到以太坊账本上。

1.7.2 以太坊挖矿节点

矿工的日常工作与财务会计很相似,会计的主要工作就是在财务账本上记录数据,同样的道理,矿工的主要职责就是向以太坊写入交易数据。驱动他这样工作的原因是可以获得奖励,矿工的奖励有两种:第一种是向 区块链写入区块的奖励,第二种是能够获得区块内的交易所支付的 gas 费用。一般情况下,区块链上存在很多矿工,它们之间互相竞争,然而,最终只有一个矿工能够获胜并向账本写入区块,其他矿工则无权写入。判断矿工获胜是通过破解一道难题的方式。在挖矿时,每个矿工需要解决的难题是一样的,矿工们只能通过自己的机器计算能力去破解。第一个解决了这个难题的矿工会把含有交易的区块写入自己本地的账本,然后发送区块和 Nonce 值(破解的答案)。给其他矿工进行确认,其他矿工接收区块并验证该答案是否正确,通过后,区块就会被矿工写入到自己的账本中。在这个过程中,赢得挑战的矿工也会得到 5 个以太币的回报。每个节
点都维护了一套以太坊账本的副本,矿工的职责就是通过数据同步使得本地账本处于最新的状态,最终各个矿工之间的账本实现了一致性。

矿工或者挖矿节点有三个重要的功能:

  • 挖矿或打包交易产生新的区块并写入到以太坊账本
  • 向其他矿工发送最新的区块,并通知他们接收
  • 接收其他矿工的区块,并更新本地的账本

挖矿节点指的是那些属于矿工的节点,它们和 EVM 节点都是整个网络的一部分。在某一时刻,矿工将产生新的区块,然后从交易池中收集交易,打包到新创建的区块中。最终,这个区块被添加到区块链上。

1.7.3 如何挖矿

对于网络上的全部矿工而言,挖矿程序是相同的,它们需要做的就是按照程序中的规则不断地执行挖矿任务 。矿工一方面拼命计算程序以便挖到新的区块,另外,也在时刻接侦听交易池中新的交易,接收、验证和转发其他矿工的区块。正如前面所说,首先矿工创建一个区块,然后从交易池中收集交易并添加到区块中,在添加之前,会检查交易是否已经被其他矿工写入到了区块中,如果已经被写人,就去掉它。

为了获得挖矿奖励,矿工需要添加自己的币基(coinbase)交易(译者注:区块中第一笔交易是挖矿的回报交易),接着,产生区块头并执行下列步骤:

  1. 矿工抓取两个交易的散列值,进行再次散列并产生一个新的散列值,直到对所有交易完成散列后,将得到唯一的散列值,这就是根交易散列值或 Merkle 根交易散列值,它将被添加到区块头。
  2. 矿工也需要确定上一个区块的散列值,因为它是当前区块的父区块,父区块的散列值要保存在当前区块头中。
  3. 矿工计算交易 的 state 和 receipts 根散列值(这里的 state 和 receipts 指的是另外两个Merkle 树。以太坊有三棵 Merkle 树,即:交易 Merkle 树,state Merkle 树和收据 Merkle 树。),然后写入区块头。
  4. Nonce 和时间戳记录到区块头 。
  5. 产生整个区块(包括区块头和区块体)的散列值。
  6. 挖矿流程开始,矿工持续变换 Nonce 值,直到发现该散列值能够解决难题为止,需要记住的是,对网络上的矿工而言,执行过程是一样的 。
  7. 很显然,某一矿工最终能够找到这个难题的答案,它会将结果发送给网络上的其他矿工 。其他矿工会先确认该答案是否正确,如果是正确的,将开始验证每个交易,然后接受该区块,并添加到他们的本地账本中 。

上面的整个挖矿流程,因为矿工提供了经过不断计算而获得了解题答案的证明,所以,被称之为工作量证明(PoW)。另外,还有其他一些算法,如:权益证明(PoS)权威证明(PoA)。 区块头和它的组成部分如下图所示:

image

标签:1.7,以太,交易,矿工,区块,账本,节点,挖矿
来源: https://www.cnblogs.com/Huang-zihan/p/16370501.html