这篇文章详细介绍 fabric 的交易流程,以图片加文字的形式呈现。
## [](https://learnblockchain.cn/2018/11/21/fabric_transaction_process/#Fabric-1-0%E4%BA%A4%E6%98%93%E6%B5%81%E7%A8%8B "Fabric 1.0交易流程")Fabric 1.0 交易流程
Fabric 中的所有交易都是通过 chaincode 执行
![](https://img.learnblockchain.cn/2018/transaction_process.png!wl)
1. 应用程序客户端通过 SDK 调用证书服务(CA)服务,进行注册和登记,并获取身份证书。
2. 应用程序客户端通过 SDK 创建好交易提案(Proposal),交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等信息发送给背书(Endorser)节点。
3. 背书(Endorser)节点收到交易提案(Proposal)后,开始进行验证,验证的内容如下:
* 交易预案是完好的
* 该预案以前没有提交过 (防止重放攻击)
* 携带的签名是合法的
* 交易发起者是否满足区块链写策略, 即 ACL 权限检查
满足以上要求后,背书节点把’交易预案’作为输入参数,调用 chaincode 中的函数,chaincode 根据当前的账本状态计算出一个’交易结果’,该结果包括返回值,读写集。此时,区块链账本并不会被更新。’交易结果’在被签名后与一个是 / 否的背书结果一同返回,称之为’预案回复’。
1. 应用程序客户端收到背书(Endorser)节点返回的信息后,判断提案结果是否一致,以及是否收到足够多的背书节点返回的结果(参照指定的背书策略执行),如果没有足够的背书,则中止处理,这个交易就会被舍弃。否则,将交易提案、模拟交易结果和背书信息打包组成一个交易并签名发给 Orderer 节点(一个排序服务)。
2. Orderer 节点对来自客户端(SDK)的交易信息进行共识排序,分通道对’交易消息’按时间排序,并按通道将交易打包成块,发送给提交(Committer)节点。
3. 提交(Committer)节点收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,验证背书策略是否满足,验证完成后将区块追加到本地的区块链,更新账本,并修改世界状态。具体过程如下:
* 运行验证逻辑(VSCC 检查背书策略)
* 在区块中指明哪些交易是有效和无效的。
* 在内存或文件系统上把区块加入区块链
* 将区块内的有效交易写入状态数据库。
* 发出 Event 消息,使得客户端通过 SDK 监听知道哪些交易是有效的或无效的。
本文的作者是 lgy
[深入浅出区块链](https://learnblockchain.cn/)\- 打造高质量区块链技术博客,学区块链都来这里,关注[知乎](https://www.zhihu.com/people/xiong-li-bing/activities)、[微博](https://weibo.com/517623789)掌握区块链技术动态。
- 空白目录
- CentOS 7安装配置Shadowsocks客户端
- CentOS 7.3 安装 libsodium 1.0.18
- npm安装(Centos7)——CentOS7常用软件
- Fabric
- Hyperledger Fabric1.4.2 主要更新内容:从Kafka迁移到Raft
- Fabric1.0 交易流程
- v1.4
- Hyperledger Fabric v1.4(LTS) 系列(1) - Fabric 的第一个LTS版本
- Hyperledger Fabric v1.4(LTS) 系列(2) - 简介
- Hyperledger Fabric v1.4(LTS) 系列(3.1) -关键概念
- Hyperledger Fabric v1.4(LTS) 系列(3.2):关键概念-功能性
- Hyperledger Fabric v1.4(LTS) 系列(3.3):关键概念-模型
- Hyperledger Fabric v1.4(LTS) 系列(3.4):关键概念-区块链网络
- HyperLedger Fabric 1.4 智能合约 Helloworld运行(9)
- 常见错误
- hyperledger-fabric的Error: got unexpected status: BAD_REQUEST错误(执行Building Your First Network时)
- 操作指南
- first_network
- 命令
- peer
- peer
- 链码测试
- 交易流程
- fabric共识机制
- etcdraft算法
- 人才发展
- 密码学
- 区块链背后的密码学原理
- 椭圆曲线加密算法
- 共识机制
- pow共识机制
- pos共识机制
- dpos共识机制
- POI共识机制
- pop共识机制
- 共识机制总结
- Bitcoin
- 白皮书
- 网络
- p2p