2、以太坊交易
一个交易的生命周期要经历以下几个过程:
● 构造一笔交易(这里的交易要包含交易双方的地址、以太币数量、时间戳、签名等信息,它是不含任何私密信息的合法交易数据)
● 将消息广播到网络(几乎网络中的所有节点都会收到这笔交易数据)
● 验证交易的合法性(生成交易的节点要首先进行验证,其它节点也要进行验证,没有经过验证的交易是不能进入到区块链网络的)
● 将交易写入区块链
构造一笔交易需要以下字段:
● nonce:交易发送者的交易序列号
● gasPrice:gas价格
● gasLimit:消耗的gas上限
● to:交易接收者的地址
● value:要发送的以太币(以wei为单位)
● data:可选的数据域(在该例子中是必须的字段)
对交易进行签名
需要使用交易发送者账号的私钥对交易进行签名。
本地对交易进行验证
签名后的交易会首先提交至你的本地以太坊的节点,你的本地节点会首先对该笔交易进行验证,它会验证签名是否有效。
把交易广播至区块链网络
之后,你的本地以太坊节点会将交易广播至整个网络,在广播之后会返回一个交易id,你可以通过该id查看和追踪该交易的状态和相关信息。几乎以太坊网络上的所有节点都会收到这笔交易。有一些节点会设置一个最低的gas价格,它们会忽略低于该gasPrice值的交易。
矿工节点接收到交易
生成的交易需要被区块链网络中的矿工打包到区块,才能写入到区块链中。矿工会有一个待处理的交易列表,其中的交易是按交易的gasPrice进行排序的,交易的gasPrice越高,处理的优先级就越高。如果交易的gasPrice过低,有可能一直得不到矿工的处理,从而被忽略。
矿工将交易打包至区块并广播至网络
矿工会取若干交易然后打包至一个区块中,一个区块中能够包含多少条交易是和区块的gasLimit有关的,所有交易的gasLimit总和不能超过区块的gasLimit。当矿工选择好要打包的交易之后,就开始了PoW(Proof of Work)挖矿过程,最先发现新的区块的矿工能够将交易打包至区块,并且获取到相应的奖励。
其它节点同步新的区块数据
由于新的区块已经产生,所有的节点都需要对区块进行同步,你的交易会随着区块的同步被同步至所有节点上。
至此,一笔交易的生命周期彻底结束,它被永远的写入到了区块链中。