区块链大学区块链研习社区块链

《锋哥论道区块链》之四区块链1.0之比特币--网络

2019-04-22  本文已影响2人  7dfc697cf7a9

【原译文】
运行该网络的步骤如下:
1)新的交易(transaction)向全网节点进行广播;
2)每一个节点都将收到的交易信息纳入一个区块中;
3)每个节点都尝试为自己的区块中找到一个具有足够难度的工作量证明;
4)当一个节点找到了一个工作量证明(pow),它就向全网进行广播;
5)当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
6)其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而新区块的随机散列值(hash)则基于上一个区快的随机散列值。
节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。
所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。
【解读】
(1)比特节点通常采用TCP协议、使用8333端口(该端口号通常是比特币所使用的,除8333端口外也可以指定使用其他端口)与已知的对等节点建立连接。
(2)如果有两个节点“同时”运气不错,都找到了相同的区块hash,如何处理?
一旦有节点收到了这个区块的广播,那么节点就会进行验证“当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性”;验证通过后,这个节点就不会再接受别的节点的同样区块了,需要注意的是,同时这个节点会终止自己正在进行的包含同样交易的区块计算,也就说不会在进行无用功了,这些节点就会在这个区块基础上启动新的交易区块计算,如此往复,形成链条。
(3)如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别,如何处理?
节点将在率先收到的区块基础上进行工作,但也会保留另外一个链条(分叉),“该僵局的打破要等到下一个工作量证明被发现”,通过一段时间的运行,总有一条区块链条是时序上最长的,那么到最后长的那条就是最终被认可的链条,比特币的区块链条就是在不停的分叉、抛弃、又分叉、又合并的过程中,最终最长的那条才是系统认可的区块链。

上一篇下一篇

猜你喜欢

热点阅读