本文首发于深刻浅出区块链社区
原文连接:Fabric1.0 交易流程原文已更新,请读者前往原文阅读数据库
这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现。函数
fabric中的全部交易都是经过chaincode执行
1.应用程序客户端经过SDK调用证书服务(CA)服务,进行注册和登记,并获取身份证书。区块链
2.应用程序客户端经过SDK建立好交易提案(Proposal),交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等信息发送给背书(Endorser)节点。spa
3.背书(Endorser)节点收到交易提案(Proposal)后,开始进行验证,验证的内容以下:code
知足以上要求后,背书节点把’交易预案’做为输入参数,调用chaincode中的函数,chaincode根据当前的帐本状态计算出一个’交易结果’,该结果包括返回值,读写集。此时,区块链帐本并不会被更新。’交易结果’在被签名后与一个是/否的背书结果一同返回,称之为’预案回复’。排序
4.应用程序客户端收到背书(Endorser)节点返回的信息后,判断提案结果是否一致,以及是否收到足够多的背书节点返回的结果(参照指定的背书策略执行),若是没有足够的背书,则停止处理,这个交易就会被舍弃。不然,将交易提案、模拟交易结果和背书信息打包组成一个交易并签名发给Orderer节点(一个排序服务)。图片
5.Orderer节点对来自客户端(SDK)的交易信息进行共识排序,分通道对’交易消息’按时间排序,并按通道将交易打包成块,发送给提交(Committer)节点。内存
6.提交(Committer)节点收到区块后,会对区块中的每笔交易进行校验,检查交易依赖的输入输出是否符合当前区块链的状态,验证背书策略是否知足,验证完成后将区块追加到本地的区块链,更新帐本,并修改世界状态。具体过程以下:rem