Fabric 1.0 中一次交易的生命周期与账本的交互
来源:互联网 发布:手机上编写c语言的软件 编辑:程序博客网 时间:2024/06/02 05:04
Transaction lifecycle and interaction with ledgers
最近在学习用go写chaincode和使用node-sdk,看到IBM网课中有这样一幅图,所以想详细的解读下,一次交易在Fabric中到底做了哪些事,下面开始:
在容器中用Chaincode或直接运行SDK,我们的指令或代码都有类似{“Args”:[“invoke”,”a”,”b”,”10”]},调用invoke函数,a给b转账10。第一步做的就是客户端将这些参数发送到endorsing peer节点。
endorsing peer节点内执行Chaincode,与docker进行实例通信,并提供模拟的本地读写集。
.endorseing peer把这些读写集连同签名返回给客户端。
客户端再把读写集发送给Orderer节点,Orderer节点是进行共识的排序节点,在单机测试的情况下,只启动一个orderer节点,使用solo共识机制,在生产情况下用kafka。
Orderer节点负责排序和打包工作,处理事物的结果是一个Block。
Committing 节点批量接收Orderer节点打包排序好的block。
提交节点收到Orderer节点的数据后,会先进行VSCC校验,检查Block的数据是否正确。接下来是对每个Transaction的验证,主要是验证Transaction中的读写数据集是否与State Database的数据版本一致。验证完Block中的所有Transactions后,提交节点会把吧Block写入区块链。然后把所有验证通过的Transaction的读写集中的写的部分写入State Database。另外对于区块链,本身是文件系统,不是数据库,所有也会有把区块中的数据在LevelDB中建立索引。
之前看过一个更简易的图如下:
1.应⽤用向一个或多个Peer节点发送对事务的背书请求;2 背书节点执⾏行ChainCode,但并不将结果提交到本地账本,只是将结果返回给应⽤;
3 应⽤用收集所有背书节点的结果后,将结果广播给
Orderers;4 Orderers执⾏行共识过程,并⽣生成Block,通过消息通道批量的将Block发布给Peer节点;
5 各个Peer节点验证交易,并提交到本地账本中。
如果有理解不对的地方 还请大家多多指教~
- Fabric 1.0 中一次交易的生命周期与账本的交互
- 超级账本Fabric的架构与设计
- Fabric 1.0 交易完整生命周期
- 超级账本Fabric 1.0 多节点集群的部署(3)
- Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本
- 干货 | 超级账本Fabric 1.0 多节点集群的部署(1)
- 赠书 | 超级账本Fabric 1.0多节点集群的部署(2)
- 用Kubernetes部署超级账本Fabric的区块链即服务
- 用Kubernetes部署超级账本Fabric的区块链即服务(3)
- 用Kubernetes部署超级账本Fabric的区块链即服务(2)
- 用Kubernetes部署超级账本Fabric的区块链即服务(1)
- Activity切换中生命周期的交互
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之九《查询指定的交易信息》
- 超级账本-面向企业的分布式账本
- fabric-samples中first-network如何启动并手动进行查询,交易和初始化操作的简单做法
- 商人的账本
- 区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程)
- hyperledger fabric 1.0交易流程理解
- Writable的实现
- 敏感信息泄漏
- js读取上传的文件内容
- YOLOv2源码分析(二)
- zookeeper和dubbo的关系【转】
- Fabric 1.0 中一次交易的生命周期与账本的交互
- C#如何调用以管理员身份运行的cmd命令提示符
- Springboot添加jsp的依赖包
- C++ 判断
- 转载一篇文件头标识的汇总
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- 在Eclipse下,出现“找不到或无法加载主类 ”的问题的解决方式
- Notepad++ v7.5.1 制表符的设置
- [喵咪大数据]Hadoop节点添加下线和磁盘扩容操作