我正在学习Hyperledger Fabric。
我在交易流程中有两个问题。
(我很抱歉我的英语不好)
[简单示例] - >交易流程
1)客户请求交易。
2)Peer检查事务并执行链代码功能。
Peer将结果保存在世界状态(KVS或CouchDB - > A:90,B:60)。
3)将结果返回给客户。客户将结果发送给订购服务。
4)订购服务收集交易并按时间对其进行排序。
(也有共识。)
4-1)创建一个块。
5)订购服务将块广播到对等体,并且对等体将块提交到分类帐。
[问题]
在flow2中,事务的结果存储在KVS或CouchDB中。
如果我在块创建完成之前查询A的剩余点,
回复{A:90}?或{A:100}
(请求flow3和flow4之间的查询。在flow4,5之前)
在flow4和flow4-1中,订购服务会检查交易(以协商一致方式?)并对其进行排序。
如果一项交易被拒绝,(以协商一致或某些错误或其他方式......)
并创建了块。
那么世界状态(KVS或CouchDB)值如何回滚?
(按事务日志回滚??)
感谢您阅读我的帖子。
答案 0 :(得分:1)
在您的步骤2中,对等方不存储该状态。相反,它模拟了提议并记录了事务的读写集(读取集是模拟之前的状态,写集是将提交/写入分类帐后的内容订购和随后对认可政策的验证(在步骤5中)。
流程是:
客户提交交易提案给1-n支持同行 频道
支持对等体模拟事务,返回签名读/写 设置为客户端
客户端比较结果,打包模拟交易和 发送到订购服务
订购服务执行共识并将事务添加到块 订购服务广播以验证渠道
验证对等体验证块中的事务以确保这一点 a)读取集不变,b)满足认可政策 c)所有签名均有效。
最后是验证对等方 应用写集来更新世界状态并添加块 即使是无效(未提交)的交易,也要到分类账。
希望这会有所帮助。您可以在documentation。
中找到更多信息