之前我们已经讲过通过更新应用通道区块配置文件的方式设置锚节点信息,这中方式有个前提就是,在开始时我们没有设置组织信息和生成相应的msp信息,如果我们在规划网络的时候已经有确定的组织信息,我们可以通过在configtx文件中设置锚节点的信息来生成组织锚节点的交易文件,下面我们来看看如何通过这种方式来设置锚节点
编写configtx.yaml文件
以下是我的文件:
Profiles: #以下部分定义了整个系统配置信息 # TestTwoOrgsOrdererGenesis是组织定义表示符,可以自定义,这个也是命令中的-profile参数对应参数 TestTwoOrgsOrdererGenesis: #orderer配置属性,这个标识不能自定义,属于系统关键词 Orderer: #这个表示引用下面OrdererDefaults的属性 <<: *OrdererDefaults Organizations: - *OrdererOrg #定义了系统中包含的组织 Consortiums: SampleConsortium: #系统中包含的组织 Organizations: - *Org1 #引用下文定义的配置 - *Org2 #通道配置信息 #通道定义标识符,可以自定义 TestTwoOrgsChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults #引用下文的Application定义 Organizations: - *Org1 - *Org2 #order节点相关的配置 Organizations: - &OrdererOrg #order节点配置信息 Name: OrdererOrg #order节点名称 ID: OrdererMSP #orderer节点编号,orderer.yaml的 LocalMSPID必须要和这个ID相同 #MSP文件夹路径 MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/ordererOrganizations/simple-network.com/msp - &Org1 Name: Org1MSP #组织名称 ID: Org1MSP #组织编号 MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/peerOrganizations/org1.simple-network.com/msp #组织MSP文件名 AnchorPeers: #组织的锚点信息 - Host: peer0.org1.simple-network.com - Port: 7051 - &Org2 Name: Org2MSP ID: Org2MSP MSPDir: /home/zym/fabric-ws/simple-demo/crypto-config/peerOrganizations/org2.simple-network.com/msp AnchorPeers: - Host: peer0.org2.simple-network.com - Port: 7051 #orderer节点的配置信息 Orderer: &OrdererDefaults #orderer节点的共识方法 OrdererType: solo #orderer的监听地址 Addresses: - orderer.simple-network.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 98 MB PreferredMaxBytes: 512 KB #kafka相关配置 Kafka: Brokers: - 127.0.0.1:9092 Organizations: Application: &ApplicationDefaults Organizations:
文件中标红的地方就是我们填加的组织锚节点信息,下面我们通过这个文件来生成创世区块,通道交易文件,还有锚节点交易文件
下面我们来创建我们实验用的configtx.yaml文件 order 和组织的生成msp信息的yaml文件
configtx文件内容:
Organizations: - &OrdererOrg Name: OrdererOrg ID: OrdererMSP MSPDir: crypto-config/ordererOrganizations/example.com/msp - &Org1 Name: Org1MSP ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp AnchorPeers: - Host: peer0.org1.example.com Port: 7051 - &Org2 Name: Org2MSP ID: Org2MSP MSPDir: crypto-config/peerOrganizations/org2.example.com/msp AnchorPeers: - Host: peer0.org2.example.com Port: 7051 Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer.example.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 98 MB PreferredMaxBytes: 512 KB Kafka: Brokers: - 127.0.0.1:9092 Organizations: Application: &ApplicationDefaults Organizations: Profiles: TwoOrgsOrdererGenesis: Orderer: <<: *OrdererDefaults Organizations: - *OrdererOrg Consortiums: SampleConsortium: Organizations: - *Org1 - *Org2 TwoOrgsChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults Organizations: - *Org1 - *Org2
crypto-config-order.yaml文件内容
OrdererOrgs:
- Name: Orderer
Domain: example.com
Specs:
- Hostname: orderer
crypto-config-orgs.yaml文件内容
PeerOrgs:
- Name: Org1
Domain: org1.example.com
Template:
Count: 2
Users:
Count: 1
- Name: Org2
Domain: org2.example.com
Template:
Count: 2
Users:
Count: 1
下面我们来生成order和org的msp信息
执行下面的命令:
1 ./bin/cryptogen generate --config=./crypto-config-orgs.yaml 2 3 ./bin/cryptogen generate --config=./crypto-config-order.yaml
完成后我们的结果是:
下面我们来根据configtx文件生成创世区块文件,通道交易文件,锚节点交易文件
执行以下命令:
生成创世区块文件
./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
生成通道交易文件:
./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
创建Org1MSP组织锚点更新文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
创建org2MSP组织锚点更新文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
生成完成:
后续 步骤就是,完成通道创建后需要更新锚节点使其加入到通道配置当中
使用命令:
1 docker exec -it cli bash 2 peer channel update -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx
org2的锚节点设置也参考上面的命令即可,但是首先必须将环境设置成org2的
至此我们已经完成了锚节点的添加
参考文档:
https://developer.aliyun.com/article/769612?spm=a2c6h.14164896.0.0.167a1219cOBn0T
https://www.cnblogs.com/show58/p/13180824.html
创建Org1MSP组织锚点更新文件