当peer节点从orderer或者peer节点接收到block之后,主要有两个验证的步骤,
1、验证交易的格式,签名、背书策略等,txid是否重复,结果会存储到blockmetadata中;
2、MVCC交易,block存储,block/tx indexes 存储等;这一步中会再次检测txid是否重复,但是这次是从leveldb中查询;
步骤二中,检测txid是否重复的时候,存在重复操作,而且从leveldb中查询会导致效率低下,当一个block中有1000笔交易时,这就意味着需要访问leveldb1000次,才能证明txid是否重复,所以我们可以在步骤二中,检测交易是否重复时,可以直接获取步骤一的结果,而不需要再去查询leveldb。
测试结果:
性能最高提高大约10%
修改: