请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

orderer节点会存储所有的链吗?

orderer节点除了系统通道的系统账本,会存储所有应用通道的账本吗? 还是只存储系统账本? 为什么源码中ChainSupport是对链的操作?是因为orderer存储了所有的链所以它可以随便读取一个链的配置交易吗?

如果存储所有链的话,那老师说的orderer存储临时区块又是什么意思呢?区块不是有效交易和无效交易都打包吗? 最后的区块是以peer节点存储的区块链为准吗?那怎么保证最后orderer最后存储的各个通道区块链和peer节点是一致的呢?

正在回答

1回答

亲,你好。排序节点是存储了所有链的信息,这里的信息只包括区块,而不是peer节点的区块、状态以及历史状态。

排序节点存储的临时区块就是其存储的数据,如果是使用file模式存储,其格式就跟peer上的区块存储类似,因为底层上是使用的同一个代码模块。排序节点的区块交易里并不区分有效交易、无效交易。因为通过阅读代码我们知道排序节点并不会去解析区块内交易的内容,因为他不知道交易的内容所以也就不知道是否是有效无效了,他只负责排序跟打包区块。

如果保证排序节点跟peer一致这个问题应该改为如果保证peer跟排序节点的区块一致,因为peer都是从排序节点获取区块的,区块的顺序是以排序节点为准的,peer接收到以后会去校验区块里的交易有效性,然后对交易做标记之后再存入peer节点。也就是说如果排序节点的区块打包出错(假设出错的意思是跟你预想的结果不一致),所有的peer接收到的区块也是错的。

祝你学习愉快!

0 回复 有任何疑惑可以回复我~
  • 提问者 时间毁人心智 #1
    老师,您讲的是否是这样:orderer节点存储的区块叫“临时区块”,peer节点存储的区块是“最终区块”,两者区块结构不一样。orderer向peer节点广播“临时区块”,peer把里面的交易拿出来标记为有效还是无效再存储为“最终区块”?那交易做标记再放回区块里面,这时临时区块变成了最终区块,那这个最终区块相对于临时区块哈希不是变了吗?peer节点会重新计算每个区块的哈希然后形成后续的最终链吗?
    
    还有一个问题,peer节点的区块数据丢失了,会从orderer获取吗?如果是的话,peer是相信orderer节点不会作恶的是吗?
    回复 有任何疑惑可以回复我~ 2019-01-13 23:41:58
  • 自游蜗牛 回复 提问者 时间毁人心智 #2
    哈希是在排序节点就确认了,所以不碍事的,实现里的哈希只跟区块header相关。跟区块体无关。
    回复 有任何疑惑可以回复我~ 2019-01-14 09:11:23
  • Peer丢了会从排序节点获取,只能相信其不作恶
    回复 有任何疑惑可以回复我~ 2019-01-14 09:12:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信