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命令的这部分程序,作为调用方,主要流程如下:
- InitCmdFactory 初始化EndorserClient,建立与Peer的连接
- 读取指定的创世块,构造一个ChaincodeSpec,说明需要调用的chaincode类型和id,最后封装为ChaincodeInvocationSpec
- 创建Proposal,将ChaincodeInvocationSpec作为Payload的内容,然后使用本地MSP签名
- 使用EndorserClient发送Proposal
2.2 EndorserServer
Peer节点启动过程中,会启动一个EndorserServer
,用来对客户端的Proposal进行背书,并调用chaincode进行处理,返回ProposalResponse。
- 对收到的Proposal进行验证,对结构,策略,签名进行校验
- 判断chaincode是否为系统chaincode
- 根据Channel的名称初始化本地账本PeerLedger
- 创建交易模拟器,执行返回数据
- 对执行结构背书,封装为ProposalResponse返回