以太坊区块链一个普通交易简要流程

以太坊区块链一个普通交易简要流程

(搬下砖,具体参考哪个文章未知了)

当前以太坊区块链是比较流行的一个区块链,不仅仅是以太坊,而且三大交易所推出的公链也都是基于以太坊的,虽然共识有所不同。虽然我们经常在以太坊区块链上发交易,然而一笔交易的详细流程是什么呢?

要回答这个问题,需要对以太坊基础知道有一点点了解,当然个人觉得也可以作为以太坊相关的面试题。下面就简单介绍一下以太坊区块链发起一个交易的流程,大家有兴趣的读一下,看是否和自己心中所想的一样。

  1. 用户从Dapp或者钱包初始化一笔交易,比如发送资金或者调用合约。这个类似弹出了MetaMask交易界面。
  2. 用户使用它们的钱包(私钥)签名这个交易。这个例如我们在第一步弹出的交易界面点击确定按钮(签名交易)。
  3. 钱包将签名后的交易发送到连接到以太坊网络的一个节点,通常叫着网关节点。比如我们常用的Infura节点。
  4. 网关节点验证该交易有效并将它放入自己的内存池(交易池/交易队列)中。此时,该交易为Pending状态,所有人都可以读取(前提是提供该项服务)。具体的对象名称在Geth和Parity客户并不相同。进入pending状态的交易代表着将要被交易,具体交易区块由打包矿工决定。很多套利机器人和攻击者就是读取pending中的交易,然后获取交易详情(包括交易发送对象,接收者,交易参数等),然后决定下一步的行动。
  5. 网关节点将该交易向其它节点(邻近节点)扩散(广播)。这是个Pending交易传播过程。
  6. 它节点接收到该交易后也验证有效性,然后放入自己的内存池中。然后再向其它节点扩散。这是其它节点将pending放入自己的内存池中。
  7. 重复上述步骤,直到该交易扩散到整个网络。
  8. 矿工是一种特殊节点,它们除了接收交易和验证它以外,还试图把它加入一个区块。矿工特权,具有打包交易的权利。
  9. 最终,会有一个矿工将该交易打包到区块中(这里假定交易成功并且会被打包)并添加到区块链上(产生一个新区块)。这就是通常所说的挖矿(出块)。
  10. 新产生的区块向全网广播。(以太坊大概13秒左右出一个块,基本上能够全网广播)。
  11. 所有节点接收到该区块,查看其中包含的交易并将其从自己的内存池中移除。

当然,这里是有前提的,假定该交易一定被打包,实际上,交易有可能不会被打包,还有可能会被挤出内存池,因为矿工遵循利益最大化原则,谁出的价格高(gasPrice),先给谁打包,这个原则也催生了跟随交易和抢先交易。

猜你喜欢

转载自blog.csdn.net/weixin_39430411/article/details/118197937
今日推荐