如果交易在订购者中被拒绝,世界状态(KVS 或 CouchDB)值如何回滚?
if transaction was refused in orderer, how world state (KVS or CouchDB) value rollback?
我正在研究 Hyperledger Fabric。
我有两个关于交易流程的问题。
(对不起,我的英语不好)
[简单示例] -> 交易流程
- 甲:100,乙:50
- A送10分给B
- 排序服务已达成共识(PBFT、kafka、SBFT 等...)
1) 客户请求交易。
2) 节点检查交易并执行链代码功能。
Peer 将结果保存在世界状态中(KVS 或 CouchDB -> A : 90, B : 60)。
3) Return 结果给客户。客户端将结果发送到排序服务。
4) 排序服务收集交易并按时间排序。
(也做共识。)
4-1) 创建区块
5) 排序服务将区块广播给节点,节点将区块提交到账本。
[问题]
在flow2中,交易结果存储在KVS或CouchDB中。
如果我在块创建完成之前查询 A 的剩余点,
响应是{A : 90}吗?或 {A : 100}
(请求flow3和flow4之间查询。在flow4,5之前)
在flow4和flow4-1中,排序服务检查交易(通过共识?)并对它们进行排序。
如果一笔交易被拒绝,(由于共识或某些错误等...)
并且块已创建。
那么world state(KVS或CouchDB)的值如何回滚?
(通过事务日志回滚??)
感谢您阅读我的post。
在您的第 2 步中,对等方 不 存储状态。相反,它模拟了提案并记录了交易的读写集(读取集是模拟之前的状态,写入集是将 committed/written 在订购和随后根据背书政策进行验证后(在步骤 5 中)到分类帐。
流量为:
客户端向1-n个背书节点提交交易提案
频道
背书节点模拟交易,返回签名read/write
设置为客户端
客户比对结果,打包模拟交易,
发送到订购服务
排序服务执行共识并将交易添加到区块
订购服务广播到通道
中的验证节点
验证节点验证区块中的交易以确保
a) 读取集不变,b) 背书策略得到满足
c) 所有签名均有效。
最后是验证节点
应用写入集来更新世界状态并添加块
即使有无效(未提交)的交易也到账本。
希望这对您有所帮助。您可以在 documentation.
中找到更多信息
我正在研究 Hyperledger Fabric。
我有两个关于交易流程的问题。
(对不起,我的英语不好)
[简单示例] -> 交易流程
- 甲:100,乙:50
- A送10分给B
- 排序服务已达成共识(PBFT、kafka、SBFT 等...)
1) 客户请求交易。
2) 节点检查交易并执行链代码功能。
Peer 将结果保存在世界状态中(KVS 或 CouchDB -> A : 90, B : 60)。
3) Return 结果给客户。客户端将结果发送到排序服务。
4) 排序服务收集交易并按时间排序。
(也做共识。)
4-1) 创建区块
5) 排序服务将区块广播给节点,节点将区块提交到账本。
[问题]
在flow2中,交易结果存储在KVS或CouchDB中。
如果我在块创建完成之前查询 A 的剩余点,
响应是{A : 90}吗?或 {A : 100}
(请求flow3和flow4之间查询。在flow4,5之前)
在flow4和flow4-1中,排序服务检查交易(通过共识?)并对它们进行排序。
如果一笔交易被拒绝,(由于共识或某些错误等...)
并且块已创建。
那么world state(KVS或CouchDB)的值如何回滚?
(通过事务日志回滚??)
感谢您阅读我的post。
在您的第 2 步中,对等方 不 存储状态。相反,它模拟了提案并记录了交易的读写集(读取集是模拟之前的状态,写入集是将 committed/written 在订购和随后根据背书政策进行验证后(在步骤 5 中)到分类帐。
流量为:
客户端向1-n个背书节点提交交易提案 频道
背书节点模拟交易,返回签名read/write 设置为客户端
客户比对结果,打包模拟交易, 发送到订购服务
排序服务执行共识并将交易添加到区块 订购服务广播到通道
中的验证节点
验证节点验证区块中的交易以确保 a) 读取集不变,b) 背书策略得到满足 c) 所有签名均有效。
最后是验证节点 应用写入集来更新世界状态并添加块 即使有无效(未提交)的交易也到账本。
希望这对您有所帮助。您可以在 documentation.
中找到更多信息