fabric官方文档笔记,文档地址:Transaction Flow
1. client发起交易
调SDK提交交易请求
2. endorsing peer 验签并执行交易
验证内容:
1) 请求的格式
2) 是否被提交过
3) 签名有效
4) 发起人是否有权限发起相应请求
执行交易
模拟执行交易,产生用来更新的read集和write集并做背书签名,将响应返回给client
3. client使用响应
1) 查询请求:只需要查看响应结果,交易结束
2) 更新请求:查看响应的背书信息,以决定是否提交更新(可选,不强制提交到Odering server的请求是符合背书策略的)(提交大量不符合背书策略的请求会影响什么?)
4. 提交请求并结块
client将收集的背书响应和请求提交给ordering server
ordering server将收集的请求按channel排序(按什么顺序是不重要的,重要的是有一个唯一特定的顺序),按结块策略组成区块
5. 验证并确认交易
odering server将区块广播到相应channel的所有peer上,peer独立检查区块中的每条交易是否有效,并打上相应标记
peer检查交易的内容:
1) 是否符合背书策略
2) read集中的值在2步生成以后有没有发生改变(CAS中的C)
6. 更新账本
peer将区块添加到本地区块链的末尾,并将有效交易中的write集更新到状态数据库中(CAS中的S),同时通知client