原文精选:在比特币网络里,节点到底要达成什么样的共识呢? 网络里有各种各样的用户在向网络广播交易,节点必须对哪些交易可以进行广播和交易发生的次序达成共识,以此系统将形成一个唯一的全球交易总账。回想我们在第1章1.5节中曾提到的财奴币将交易打包成块,对信息进行优化理。类似地,在比特币体系里,我们也将每个区块进行共识处理。
在任何时点,所有在点对点网络上的节点都有包含一系列区块的总账本,每个区块中都包含了已经被所有节点达成共识的交易清单。除此之外,每个节点还有一堆没有被打包进入区块的交易,就是那些网络节点已经被通知、交易已经发生,但还没有被写进区块的交易。网络节点对于这些交易还没有达成共识,所以每个节点都有一个略有差异、尚待确认的交易池。
读书笔记:
1,比特币网络里有很多用户在向网络广播交易,节点必须对哪些交易可以进行广播和交易发生的次序达成共识,以此形成一个唯一的全球交易总账。
2,所有在点对点网络上的节点都有一个包含所有区块的总账本,每个区块中都包含了已经被所有节点达成共识的交易清单。
3,每个节点还有一堆没有被打包进入区块的交易,他们的交易已经发生,并被网络通知了,但还没有写入区块。
4,每个节点都有一个等待确认的交易池。
原文精选:在实际中,点对点网络是不完美的,所以有些节点听到了交易,而有些节点却没有听到。那么,所有的节点是如何对一个区块达成共识的呢? 一个方法是,在一个时间段里,比如说每隔十分钟,每个节点都提议,自己的未被认可的交易成为已经达成共识的区块链后面的下一个区块,然后那些节点会执行一些共识协议,每个节点把自己提议的区块作为输入。但不可避免地,有些节点可能是恶意的,存心要把不当交易放进区块里,其他节点则是诚实的。如果共识协议能够顺利完成,一个正当有效的区块会被选作输出值。尽管有些被选出的区块是由一个节点提交,但只要这个区块是正当有效的,输出就是正当有效的。这时候可能有人会指出,这个被选出的区块可能未包含所有的正当有效的交易,但这并没有关系,如果有些正当有效的交易没被放进区块,它们可以等待下一次机会。
前面所谈到的这个办法与比特币系统有些相似之处了,但实质还是不完全一样。以上做法有几个技术上的问题:第一,达成共识一般是个难题,因为有些节点会死机或是根本就是恶意节点;第二,就比特币而言,点对点网络是不完美的,并非所有对应的节点是两两相连的,互联网链接的不良可能会造成网络问题,要执行一个所有节点都参与的共识协议好像并不现实;第三,由于交易信息是分布在整个互联网上,信息传递会有严重延迟。
读书笔记:
1,所有的节点对一个区块达成共识的方法就是,在一个时间段里,每个节点都提议将自己的未被认可的交易成为下一个区块,然后再执行共识协议。
2,由于节点有可能死机或者网络问题造成的信息延迟,恶意节点的作恶等等,所有节点想达成共识非常困难。
延迟与全球时间
原文精选:比特币协议达成共识时必须直面两大障碍:其一是不完美网络,例如信息延迟和节点死机,其二是某些故意搞破坏的节点。
严重网络延迟导致的一个后果是,节点之间没有一个统一的全球时间概念。意思是,并非所有节点都能根据每个交易的时间戳来达成交易时间共识,因此,共识协议不能执行以下指令:“在第一步里发了第一个消息的节点必须在第二步里执行X。”这一做法根本无法执行,因为所有的节点对于谁在第一步中发出第一个信息有不同的看法。
读书笔记:
比特币协议达成共识面临网络延迟和恶意节点两大障碍
一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。
作者:全职高手一叶之秋
链接:https://www.jianshu.com/p/ce057884f04e