Skip to content

Latest commit

 

History

History
133 lines (103 loc) · 5.69 KB

9-4-5.md

File metadata and controls

133 lines (103 loc) · 5.69 KB

操作网络

网络启动后,默认并不存在任何应用通道,需要手动创建应用通道,并让合作的 Peer 节点加入通道。下面在客户端进行相关操作。

1.创建通道

使用加入联盟中的组织管理员身份可以创建应用通道。 在客户端使用 Org1 的管理员身份来创建新的应用通道,需要指定 msp 的 ID 信息、 msp 文件所在路径、Orderering 服务的 tls 证书位置,以及网络中 Ordering 服务地址、应用通道名称和交易文件:

$ CHANNEL_NAME = nusinesschannel
$ CORE_PEER_LOCALMSPID = "Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    peer channel create \
    -o orderer.example.com:7050 \
    -c ${CHANNEL_NAME} \
    -f ./businesschannel.tx \
    --tls \
    --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

创建通道成功后,会自动在本地生成应用通道同名的初始区块 businesschannel.block 文件。只有拥有该文件才可以加入创建的应用通道中。

2. 加入通道

应用通道所包含组织的成员节点可以加入通道中。

在客户端使用管理员身份依次让组织 Org1 和 Org2 中的所有节点都加入新的应用通道,需要指定所操作的 Peer 的地址,以及通道的初始区块。

这里以操作 Org1 中的 peer0 节点为例:

$ CORE_PEER_LOCALMSPID="Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    peer channel update \
    -o orderer.example.com:7050
    -c ${CHANNEL_NAME} \
    -f ./Org1MSPanchors.tx \
    --tls \
--cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

4.测试链码

Peer 加入应用通道后,可以执行链码相关操作,进行测试。链码在调用之前,必须先经过安装(Install) 和实例化(Instantiate) 两个步骤,部署到 Peer 节点上。

通过如下命令在客户端安装示例链码 chaincode_example02 到 Org1 的 Peer0 上:

$ CORE_PEER_LOCALMSPID="Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \
    peer chaincode install \
    -n test_cc \
    -v 1.0 \
    -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

通过如下命令将链码容器实例化,并注意通过 -P 指定背书策略。此处 OR ('Org1MSP.member','Org2MSP.member')代表 Org1 或 Org2 的任意成员签名的交易即可调用该链码:

$ CORE_PEER_LOCALMSPID="Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \
    peer chaincode instantiate \
    -o orderer.example.com:7050 \
    -C ${CHANNEL_NAME} \
    -n test_cc \
    -v 1.0 \
    -c '{"Args":["init":"a","100","b":"200"]}' \
    -P "OR ('Org1MSP.member','Org2MSP.member')" \
    --tls \
    --cafile /etc/hyperledger/fabric/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.examle.com-cert.pem

实例化完成后,用户即可向网络中发起交易了。例如,可以通过如下命令来调用链码:

$ CORE_PEER_LOCALMSPID="Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \
    peer chaincode invoke \
    -o orderer.example.com:7050 \
    -C $CHANNEL_NAME \
    -n test_cc \
    -c '{"Args":["invoke","a","b","10"]}' \
    --tls \
--cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/tlscacerts/tlsca.example.com-cert.pem

通过如下命令查询调用链码后的结果:

$ CORE_PEER_LOCALMSPID="Org1MSP" \
    CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
    CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \
    peer chaincode query \
    -n test_cc
    -C ${CHANNEL_NAME} \
    -c '{"Args":["query","a"]}'

Query Result: 90

5. 监听事件

用户也可以通过 block-listener 工具来监听网络中的事件。该工具支持的命令行选项包括如下几个:

  • -events-address "0.0.0.0:7053" : 监听事件的来源地址,一般为 Peer 节点的 7053 端口;
  • -events-from-chaincode string: 仅监听与指定链码相关的事件;
  • -events-mspdir string: 本地所使用的 MSP 路径,默认在 sampleconfig 下;
  • -events-mspid string: 所使用的 MSP 的 ID。

例如,用户可以通过如下命令在客户端节点上监听 peer0.org1 节点的事件:

$ block-listener \
    -events-address=peer0.org1.example.com:7053 \
    -events-mspdir=/etc/hyperledger/fabric/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ \
    -events-mspid=Org1MSP

之后, 网络中发生的相关事件(区块、交易、注册、拒绝等)会打印出来,例如当 peer0 加入新建的应用通道时,会发生如下事件:

Event Address: peer0.org1.example.com:7053

Received block


Recevied transaction from channel businesschannel: [...]

注意 目前, block-listener 工具不支持 TLS, 因此相关 Peer 配置需要指定 CORE_PEER_TLS_ENABLED=fals。