请稍等 ...
×

采纳答案成功!

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

交易切割的问题

老师您好,下面这句是在什么条件下才会触发呢,我感觉之前几个条件判断已经做过,不会触发这一句。
我是这么理解,暂不说配置交易,假设一个普通交易来到order:
1.如果当前交易内容 > 区块大小,先将已有的切割队列里的交易切割成一个区块,再把当前交易单独切割成一个区块。
2.如果当前交易内容 <= 区块大小,将切割队列里的交易 + 当前交易,如果超出了会把切割队列的交易先切割,然后当前交易进入切割队列。
那么此时这个切割队列就不可能大于区块大小了呀,下面这一步感觉就走不到了。
当前我知道区块大小和出块时间会决定如何出块,交易数量也会影响吗?
图片描述

正在回答

1回答

你已经理解了一大半了。fabric的区块切割规则是有两个大维度,以及多个小限制。

比如交易内容大小,区块总大小,这是属于小限制。这些规则在有交易过来的时候依次触发,当满足的时候就切块。

两个大的维度,一是时间,二是数量。

当时间维度满足条件时,orderer节点会自己主动触发切割动作。

最后来看数量维度,这个是没法主动触发的,只有通过被动的检查当前等待的交易数量是不是已经达到了设置的上限,如果是,就切割。这段逻辑其实就是你图中框出来的这一段。


举个例子,我们允许一个区块10个交易,2s出一个块,在这之前已经有9个交易了,他们既没有越过小限制的红线,而且这9个交易前后间隔不足2s。假设我第10个交易过来的时候,同样不触发限制以及时间维度的规则。那这个交易会被放入等待队列里(图中第一段),然后逻辑就会走到最后检测交易数量的维度,我们发现等待的10个交易已经跟配置的10个交易一个区块这个维度的规则匹配上了,所以触发切割动作。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标5272691 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-23 10:04:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信