HyperLedger(超级账本)项目下的 Fabric 技术原理—链码消息交互 ... [复制链接]

845
 
Fabric是最早加入到HyperLedger(超级账本)项目中的顶级项目,Fabric主要由IBM、DAH等企业于2015年底提交至社区。该项目的定位是面向企业的分布式账本平台,创新的引入了权限管理支持等技术,设计上支持可插拔、可扩展等。其目前处于活跃状态。本文将以分步介绍的方式,对其链码消息交互进行阐述。Mercina-zy
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城用户链码容器和所属的Peer节点之间主要的交互过程可用下图表示。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城attachments-2017-12-EhD6TsB35a445c9924929.png 8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城Mercina-zy
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城现以典型情况为例,将链码和Peer之间的交互过程,分步骤阐述如下:
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城1)用户链码调用 shim.Start() 方法后,首先会向Peer发送 ChaincodeMessage_REGISTER 消息尝试进行注册。其后,开始等待接收来自 Peer 的消息。此时候的状态为初始的 created 。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城2)Peer 在收到来自链码容器的 ChaincodeMessage_REGISTER 消息后,会注册到本地的一个 handler 结构,返回 ChaincodeMessage_REGISTERED 消息给链码容器。并且更新状态为 established ,然后会自动发出 ChaincodeMessage_READY 消息给链码侧,并且更新状态为 ready 。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城3)链码侧在收到 ChaincodeMessage_REGISTERED 消息之后,先不进行任何的操作,完成注册步骤。更新状态为 established 。在收到 ChaincodeMessage_READY 消息之后再更新状态为 ready
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城4)Peer侧发出 ChaincodeMessage_INIT 消息给链码容器,对链码进行初始化。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城5)链码容器收到 ChaincodeMessage_INIT 消息之后,调用用户代码 Init() 方法进行初始化,成功之后,返回 ChaincodeMessage_COMPLETED 消息。到此,链码容器可以被调用了。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城6)链码被调用的时候,Peer 发出 ChaincodeMessage_TRANSACTION 消息给链码。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城7)链码在收到 ChaincodeMessage_TRANSACTION 消息之后,会调用 Invoke() 方法,根据 Invoke 方法中用户的逻辑,可以发送如下的消息给 Peer 侧:
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_GET_HISTORY_FOR_KEY
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_GET_QUERY_RESULT
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_GET_STATE
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_GET_STATE_BY_RANGE
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_QUERY_STATE_CLOSE
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_QUERY_STATE_NEXT
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城ChaincodeMessage_INVOKE_CHAINCODE
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城Peer 侧在收到这些消息之后,会进行相应的处理,并回复 ChaincodeMessage_RESPONSE 消息。最后,链码侧会回复调用完成的消息 ChaincodeMessage_COMPLETE 至 Peer 侧。
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城8)上述消息交互过程当中,Peer 和链码侧还会进行一项操作,那就是定期相互发送 ChaincodeMessage_KEEPALIVE 消息给对方,以确保彼此是在线状态
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城Mercina-zy
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城
8btm.com-Ƀ猫商城 8btm.com-Ƀ猫商城

本版积分规则

发表主题 回复
mailtopia,把去中心化做到极致!

(c) 2015-2018 8BTM Inc. M链、₥币 All Rights Reserved 区块链金融合作:福建反身投资管理有限公司

网站备案证书号: 闽ICP备17031731号  Ƀ猫商城 IoT&BlockChain:微物联(福州)网络科技有限公司 SiteMap