61

Fabric1.0 交易流程

 5 years ago
source link: https://learnblockchain.cn/2018/11/21/fabric_transaction_process/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现。

Fabric 1.0交易流程

Fabric中的所有交易都是通过chaincode执行

ERbuEjE.png!web

  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

深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK