比如现在A账户只有10元,A同时给B、C都转10元,两笔交易都成功就是”双花“问题了。在Fabric中多个节点同时接到更新同一key不同value的交易请求时,背书节点因是仿真操作,不会真的去改账本数据,所以两个交易 都是成功的,假设当前World state中A的version为1,那么两个交易关于A的读集version都是1,写集version都是2。背书节点将结果进行背书并响应给客户端,客户端收集到足够的消息和背书签名之后,构建合法的交易请求并将交易请求广播给排序集群服务,排序集群服务不检查交易中的数据只对交易按时间顺序排序并打成区块,将块广播给记账节点。记账节点会按照排序的顺序对区块中的交易进行验证,它先处理第一笔交易, 验证是有效交易后会去更新账本里的值,此时World state中A的version就变成了2,验证第二笔交易时, 交易中A的读集version还是1,就和当前World state中的version不匹配了,就会被判定为无效交易,第二笔交易数据就不能更新成功,就不会有”双花“问题了。
修改日期 | 修改人 | 备注 |
2020-10-08 15:20:28[当前版本] | 陈曦 | 格式调整 |
2020-10-08 15:17:44 | 陈曦 | 格式调整 |
2020-03-23 14:22:38 | 陈曦 | 修改内容 |
2020-03-12 17:31:26 | 陈曦 | 创建版本 |