以太坊 交易的生命周期

那么,交易发出去以后会经历什么呢?

交易的生命周期从用户通过某节点/软件广播该交易为起点,经过网络扩散、矿工挖矿记账、被共识算法选入最终区块链条,到达终点。

http://static.codebaoku.com/pics/74/84/7484097b7fc8428e1d2d1f46b838c6fb.jpg

一笔交易的流转过程

从最源头开始,一笔交易的流转过程如下所示。

  • 客户端软件在收集完交易信息,组织成相应的结构体,需要使用用户的私钥来签名该交易。
  • 交易后编码为一个公开消息,通过节点网络发出并逐渐扩散到网络中各个节点。
  • 挖矿节点和众多其他普通节点同时收到该消息,矿工将其暂时缓存起来。
  • 若矿工决定将该交易打包入某区块,则执行该消息内容并获得执行结果。
  • 矿工把打包好的区块(包含该交易)广播到网络中,参与共识算法挑选。
  • 区块进入最终的区块链被永久保存。

若该笔交易费过低,则可能被调低优先级,在矿工的交易等待池(pending transaction pool)中等待较长的时间,或者在等待时,被其他高交易费的交易挤出等待池子。

若所调用的智能合约在执行时Gas花费过高,超过用户在交易中指定的的Gas上限,则会导致交易失败。

实际世界里,在以太坊网络的拓扑结构中,普通的节点运行着不同厂家出品的节点程序,比如 Geth、Parity 等。节点之间通过“广播”的形式互相传递信息,用户的交易请求,在初始阶段经由某一个联网节点传递入网络中,如图所示。

http://static.codebaoku.com/pics/9b/19/9b19ec9c2f86e185ff0d0a435346e6cc.jpg

一笔交易在以太坊网络的节点间传播过程

以太坊上最常见的交易是:

  • 以太币转账
  • 智能合约调用
  • 智能合约创建

这三种交易在交易发送时经历的步骤是一模一样的,区别仅在于填写交易时选择传递数据 data 还是传递价值 value 。 传递数据的即为合约相关操作,传递价值即为转账操作。 我们将在 第 6 章 手把手教你部署智能合约 中用动手实践的方式为读者展示具体的操作方法。

共识是区块链系统的核心灵魂,它决定弱信任环境下大家如何达成信任。目前,以太坊共识是基于工作量证明的机制(Proof of Work, PoW)。一个好的共识机制能够鼓励正直的矿工记账出块,防止双花攻击的发生,也能够 ...