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