Fabric 网络解析setGlobals函数解析

   日期:2020-05-31     浏览:128    评论:0    
核心提示:script.sh脚本的执行是对e2e.cli中真正地对Peer节点、频道以及合约的集合操作演示,官方出版的该脚本试图通过这样的方式来指导开发人员尽快入门在script.sh脚本中,一共执行了9个函数,分别为:createChannel genju 根据之前在generateArtifacts.sh 脚本中通过 configtx.yaml 配置文件生成的频道文件创建频道。joinChannel Peer 节点加入指定频道updateAnchorPeers 0 为频道中的每个组织设置Peer节

script.sh脚本的执行是对e2e.cli中真正地对Peer节点、频道以及合约的集合操作演示,官方出版的该脚本试图通过这样的方式来指导开发人员尽快入门

在script.sh脚本中,一共执行了9个函数,分别为:

  • createChannel genju 根据之前在generateArtifacts.sh 脚本中通过 configtx.yaml 配置文件生成的频道文件创建频道。
  • joinChannel Peer 节点加入指定频道
  • updateAnchorPeers 0 为频道中的每个组织设置Peer节点
  • updateAnchorPeers 2 同上,但是不同的是组织节点
  • installChaincode 2 在Peer0/Org1和Peer2/Org2 上安装智能合约
  • instantiateChaincode 2 在Peer2/Org2 上对智能合约进行实例化操作。
  • chaincodeQuery 0 100 在Peer0/Org1上执行智能合约中的交易方法。
  • chaincodeInvoke 0 在Peer0/Org1上执行智能合约中的交易方法。
  • installChaincode 3 在Peer3/Org2 上安装之恩那个合约
  • chaincodeQuery 3 90 在Peer3/Org2上执行智能合约中的查询方法

以上9个函数的最开头,都会有类似:

setGlobals 0

这样的一个设置全局环境变量的方法。那么这个方法究竟是如何运作的呢?下文将会对该方法做详细分析。

setGlobals 详解

首先我们看setGlobals代码定义:

setGlobals () {

	if [ $1 -eq 0 -o $1 -eq 1 ] ; then
		CORE_PEER_LOCALMSPID="Org1MSP"
		CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
		CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
		if [ $1 -eq 0 ]; then
			CORE_PEER_ADDRESS=peer0.org1.example.com:7051
		else
			CORE_PEER_ADDRESS=peer1.org1.example.com:7051
		fi
	else
		CORE_PEER_LOCALMSPID="Org2MSP"
		CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
		CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
		if [ $1 -eq 2 ]; then
			CORE_PEER_ADDRESS=peer0.org2.example.com:7051
		else
			CORE_PEER_ADDRESS=peer1.org2.example.com:7051
		fi
	fi

	env |grep CORE
}

我们进行逐行分析:

if [ $1 -eq 0 -o $1 -eq 1 ] ; then
		CORE_PEER_LOCALMSPID="Org1MSP"
		CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
		CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
		if [ $1 -eq 0 ]; then
			CORE_PEER_ADDRESS=peer0.org1.example.com:7051
		else
			CORE_PEER_ADDRESS=peer1.org1.example.com:7051
		fi

如果后缀参数equal 0或者1的话,设置参数:

CORE_PEER_LOCALMSPID=“Org1MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

更进一步,如果是0,则设置:

CORE_PEER_ADDRESS=peer0.org1.example.com:7051

如果是1,则设置:

CORE_PEER_ADDRESS=peer1.org1.example.com:7051

	else
		CORE_PEER_LOCALMSPID="Org2MSP"
		CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
		CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
		if [ $1 -eq 2 ]; then
			CORE_PEER_ADDRESS=peer0.org2.example.com:7051
		else
			CORE_PEER_ADDRESS=peer1.org2.example.com:7051
		fi
	fi

如果后缀参数不是0也不是1,则设置:

CORE_PEER_LOCALMSPID=“Org2MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp

如果后缀参数是2,则设置:

CORE_PEER_ADDRESS=peer0.org2.example.com:7051

不为2的话,设置:

CORE_PEER_ADDRESS=peer1.org2.example.com:7051

总结

其实总而言之setGlobals函数就用后缀0,1,2区分了不同Orgs组织和不同节点的配置参数。其中,用0代表:

CORE_PEER_LOCALMSPID=“Org1MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer0.org1.example.com:7051

用1代表:

CORE_PEER_LOCALMSPID=“Org1MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer1.org1.example.com:7051

用2代表:

CORE_PEER_LOCALMSPID=“Org2MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ADDRESS=peer0.org2.example.com:7051

不为0,1,2代表:

CORE_PEER_LOCALMSPID=“Org2MSP”
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ADDRESS=peer1.org2.example.com:7051

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服