Fabric源码分析-加入Channel

Orderer节点创建完Channel后,会将该Channel的创世块返回,有了这个创世块,就可以通知Peer加入Channel了。Peer的背书Client会发送Proposal到指定的Peer的背书Server,Server端执行系统ChainCode-cscc,加入Channel中。

1. 使用

peer channel create的时候会生成一个指定channel的创世块文件,使用这个文件就可以通知peer加入节点,FABRIC_CFG_PATH指定了要加入channel的peer节点配置,也可以只配置CORE_PEER_ADDREEE;MSP相关的环境变量用于签名。

export set FABRIC_CFG_PATH=/../../../peer
export set CORE_PEER_LOCALMSPID=CoreMSP
export set CORE_PEER_MSPCONFIGPATH=/../..crypto-config/peerOrganizations/core.jianshu.com/users/Admin@core.jianshu.com/msp

peer channel join -b mychannel.block

2. 主要流程

2.1 cli

执行peer命令的这部分程序,作为调用方,主要流程如下:

  1. InitCmdFactory 初始化EndorserClient,建立与Peer的连接
  2. 读取指定的创世块,构造一个ChaincodeSpec,说明需要调用的chaincode类型和id,最后封装为ChaincodeInvocationSpec
  3. 创建Proposal,将ChaincodeInvocationSpec作为Payload的内容,然后使用本地MSP签名
  4. 使用EndorserClient发送Proposal

2.2 EndorserServer

Peer节点启动过程中,会启动一个EndorserServer,用来对客户端的Proposal进行背书,并调用chaincode进行处理,返回ProposalResponse。

  1. 对收到的Proposal进行验证,对结构,策略,签名进行校验
  2. 判断chaincode是否为系统chaincode
  3. 根据Channel的名称初始化本地账本PeerLedger
  4. 创建交易模拟器,执行返回数据
  5. 对执行结构背书,封装为ProposalResponse返回
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容