Skip to content

Latest commit

 

History

History
35 lines (20 loc) · 1.91 KB

9-6-4.md

File metadata and controls

35 lines (20 loc) · 1.91 KB

加入通道

join 子命令会让指定的 Peer 节点加入到指定的应用通道。需要提前拥有所加入应用通道的初始区块文件,并且只有属于通道的某个组织的管理员身份可以成功执行该操作。加入通道命令主要通过调用 Peer 的配置系统链码进行处理。

例如,通过如下命令将本地 Peer 加入到应用通道 businesschannel 中:

$ peer channel join \
    -b ${CHANNEL_NAME}.block \
    -o orderer: 7050

Peer joined the channel!

加入应用通道的主要过程如图所示。

加入应用通道过程

主要步骤包括:

1)客户端首先创建一个 ChaincodeSpec 结构,其 input 中的 Args 第一个参数是 CSCC.JoinChain (指定调用配置链码的操作),第二个参数为所加入通道的初始区块。

2)利用 ChaincodeSpec 构造一个 ChaincodeInvocationSpec 结构。

3)利用 ChaincodeSpec 构造一个 ChaincodeInvocationSpec 结构。

4)客户端通过 gRPC 将 Proposal 签名后发给 Endorser (所操作的 Peer),调用 ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption)(*ProposalResponse, error) 方法进行处理,主要通过配置系统链码进行本地链的初始化工作。

5)初始化完成后,即可收到来自通道内的 Gossip 消息等。

其中,比较重要的数据结构包括 ChaincodeSpec、ChaincodeInvocationSpec、Proposal 等,它们的具体结构如图所示。

注意 权限不足的情况下,执行加入通道命令可能不会报错,但实际上并没有加入到通道,也不会获取到通道内的数据。

加入通道时的 Signed Proposal 结构