一、申请交易
角色
1. Endorser
背书节点 ,都是peer节点,E0,E1,E2。
一定要部署链码。
2. Commiter
提交节点,记账节点,没有背书功能,都是peer节点,P3,P4
可以没有部署和执行任何链码。
3. Ledger
账本,保存所有交易信息。
每个节点都有一个自己的账本。
4. Application
客户端
5. Orderer
排序节点
可以是一个分布式的
6. Smart Contract(Chain code)
智能合约,链码
7. Endorsement Policy
背书策略
二、背书节点执行交易
1. 背书节点在收到交易提案后会进行一些验证
§ 交易提案的格式是否正确
§ ·交易是否提交过(重复攻击保护)
§ ·交易签名有效(通过MSP);
§ ·交易提案的提交者在当前通道上是否已授权有写权限。
2. 验证通过后
背书节点会根据当前账本数据模拟执行链码中的业务逻辑并生成读写集(RwSet),其中包含响应值、读写集等。
在模拟执行时账本数据不会更新。
而后背书 节点对这些读写集进行签名成为提案响应 (Proposal Response),然后返回给应用程 序
三、客户端收到响应
四、客户端发送交易给排序节点
构造交易请求并发送给排序服务节点
应用程序接收到所有的背书节点签名后,根据背书签名调用SDK生成交易,发送给排序服务节 点。
生成交易的过程比较简单,确认所有的背书节点的执行结果完全一致,再将交易提案、提 案响应和背书签名打包生成交易
五、Orderer排序并转发交易
1. 排序服务节点以对交易进行排序并生成区块
排序服务不读取交易的内容,如果在生成交易信封内容的时候伪造了交易模拟执行的结果, 排序服务节点也不会发现,但会在最终的交易验证阶段 校验出来并标记为无效交易。
2. 排序服务节点以广播给各通道的锚点peer
六、记账节点验证交易
记账节点验证区块内容并写入区块
§ 1.交易数据的验证,
- § 是否为合法的交易:交易格式是否正确,是否有合法的签名,交易内容是否被篡改;
- § ·记账节点是否加入了这个通道。
- § 基本的验证通过以后会提交给VSCC进行背书策略的验证。
§ 2. 基于状态数据的验证和MVCC检查
§ 3. 无效交易的处理
七、通知客户端