orderer节点会存储所有的链吗?
来源:4-6 ChainSupport源码阅读

时间毁人心智
2019-01-12
orderer节点除了系统通道的系统账本,会存储所有应用通道的账本吗? 还是只存储系统账本? 为什么源码中ChainSupport是对链的操作?是因为orderer存储了所有的链所以它可以随便读取一个链的配置交易吗?
如果存储所有链的话,那老师说的orderer存储临时区块又是什么意思呢?区块不是有效交易和无效交易都打包吗? 最后的区块是以peer节点存储的区块链为准吗?那怎么保证最后orderer最后存储的各个通道区块链和peer节点是一致的呢?
写回答
1回答
-
亲,你好。排序节点是存储了所有链的信息,这里的信息只包括区块,而不是peer节点的区块、状态以及历史状态。
排序节点存储的临时区块就是其存储的数据,如果是使用file模式存储,其格式就跟peer上的区块存储类似,因为底层上是使用的同一个代码模块。排序节点的区块交易里并不区分有效交易、无效交易。因为通过阅读代码我们知道排序节点并不会去解析区块内交易的内容,因为他不知道交易的内容所以也就不知道是否是有效无效了,他只负责排序跟打包区块。
如果保证排序节点跟peer一致这个问题应该改为如果保证peer跟排序节点的区块一致,因为peer都是从排序节点获取区块的,区块的顺序是以排序节点为准的,peer接收到以后会去校验区块里的交易有效性,然后对交易做标记之后再存入peer节点。也就是说如果排序节点的区块打包出错(假设出错的意思是跟你预想的结果不一致),所有的peer接收到的区块也是错的。
祝你学习愉快!
092019-01-15
相似问题