首页| 股票|财经|基金|理财|商业|区块链

当前位置:财经中国 > 区块链 >

Hyperledger Fabric1.1 网络启动与链码调用

2019-08-28 16:13       来源:区块网 | 大东
环境:macOSHighSierra(Version10.13.3)

参考:HyperledgerFabricSamples

Fabric官方提供了一个示例项目fabric-samples,本文通过运行该项目来展示fabric的搭建与链码的安装调用。

1.克隆项目

克隆hyperledger提供的fabric-samples项目

gitclonehttps://github.com/hyperledger/fabric-samples.gitcdfabric-samples

gitcheckoutv1.1.0#切至1.1版本,以便跟后续安装的fabric版本相匹配

2.下载fabric相关镜像和二进制文件

执行如下命令,下载fabric相关镜像和二进制文件(版本1.1.0)

curl-sSLhttps://goo.gl/6wtTN5|bash-s1.1.0

注意命令执行完成之后生成的bin目录以及其下的二进制文件,后面步骤中我们需要这些文件来进行fabrc区块链网络搭建。为了方便后续使用,这里我们将bin目录的路径加入到环境变量中

exportPATH=$PWD/bin:$PATH

或者将exportPATH=<pathtodownloadlocation>/bin:$PAT加入~/.bash_profile,使其永久生效。

脚本从dockerhub拉去fabric相关镜像并将其标注为‘last’,后面我们会用这些镜像生成的容器来组成fabric区块链网络。

3.启动fabric网络并完成chaincode测试

fabric-samples项目下有多个示例网络,这里我们参考教程BuildingYourFirstNetwork来运行first-network文件夹下的fabric网络并完成chaincode测试。

-进入first-network目录

cdfirst-network

生成公私钥和证书信息、创世区块和通道相关信息

./byfn.sh-mgenerate

公私钥和证书信息基于crypto-config.yaml生成,保存在crypto-config文件夹中。

创世区块和通道相关信息基于configtx.yaml生成,保存在channel-artifacts文件夹中。

./byfn.sh-mgenerate*[1252c7a][ruby-2.3.0]

Generatingcertsandgenesisblockforwithchannel"mychannel'andCLItimeoutof'10'secondsandCLIdelayof'3'seconds

Continue?[Y/n]y

proceeding.../Users/lisa/work-station/fabric-samples/first-network/../bin/cryptogen##########################################################

#####Generatecertificatesusingcryptogentool###################################################################

+cryptogengenerate--config=./crypto-config.yaml

org1.example.com

org2.example.com

+res=0

+set+x

/Users/lisa/work-station/fabric-samples/first-network/../bin/configtxgen

###################################################################GeneratingOrdererGenesisblock##############

##########################################################+configtxgen-profileTwoOrgsOrdererGenesis-outputBlock./channel-artifacts/genesis.block2018-03-2321:03:32.746CST[common/tools/configtxgen]main->INFO001Loadingconfiguration2018-03-2321:03:32.759CST[msp]getMspConfig->INFO002LoadingNodeOUs2018-03-2321:03:32.760CST[msp]getMspConfig->INFO003LoadingNodeOUs2018-03-2321:03:32.760CST[common/tools/configtxgen]doOutputBlock->INFO004Generatinggenesisblock2018-03-2321:03:32.761CST[common/tools/configtxgen]doOutputBlock->INFO005Writinggenesisblock

+res=0+set+x#################################################################

###Generatingchannelconfigurationtransaction'channel.tx'###

#################################################################+configtxgen-profileTwoOrgsChannel-outputCreateChannelTx./channel-artifacts/channel.tx-channelIDmychannel2018-03-2321:03:32.783CST[common/tools/configtxgen]main->INFO001Loadingconfiguration2018-03-2321:03:32.795CST[common/tools/configtxgen]doOutputChannelCreateTx->INFO002Generatingnewchannelconfigtx2018-03-2321:03:32.795CST[msp]getMspConfig->INFO003LoadingNodeOUs2018-03-2321:03:32.796CST[msp]getMspConfig->INFO004LoadingNodeOUs2018-03-2321:03:32.821CST[common/tools/configtxgen]doOutputChannelCreateTx->INFO005Writingnewchanneltx

+res=0+set+x#################################################################

#######GeneratinganchorpeerupdateforOrg1MSP###########################################################################

+configtxgen-profileTwoOrgsChannel-outputAnchorPeersUpdate./channel-artifacts/Org1MSPanchors.tx-channelIDmychannel-asOrgOrg1MSP

2018-03-2321:03:32.841CST[common/tools/configtxgen]main->INFO001Loadingconfiguration

2018-03-2321:03:32.851CST[common/tools/configtxgen]doOutputAnchorPeersUpdate->INFO002Generatinganchorpeerupdate

2018-03-2321:03:32.851CST[common/tools/configtxgen]doOutputAnchorPeersUpdate->INFO003Writinganchorpeerupdate

+res=0

+set+x

########################################################################GeneratinganchorpeerupdateforOrg2MSP###########################################################################

+configtxgen-profileTwoOrgsChannel-outputAnchorPeersUpdate./channel-artifacts/Org2MSPanchors.tx-channelIDmychannel-asOrgOrg2MSP

2018-03-2321:03:32.872CST[common/tools/configtxgen]main->INFO001Loadingconfiguration

2018-03-2321:03:32.880CST[common/tools/configtxgen]doOutputAnchorPeersUpdate->INFO002Generatinganchorpeerupdate

2018-03-2321:03:32.880CST[common/tools/configtxgen]doOutputAnchorPeersUpdate->INFO003Writinganchorpeerupdate

+res=0

+set+x

至此,在这一步我们生成了所有网络实体需要的证书和私钥,启动排序服务所需要的“创世区块”和用来配置通道所需要的一系列文件。

-启动网络

./byfn.sh-mup#默认部署go语言编写的chaincode



./byfn.sh-mup-lnode#可以通过指定-lnode部署node版本的chaincode

看到这样的log时代表fabric网络启动成功。

CORE_PEER_ID=cli

CORE_LOGGING_LEVEL=INFO

CORE_PEER_ADDRESS=peer1.org2.example.com:7051=====================Queryingonpeer1.org2onchannel'mychannel'...=====================

AttemptingtoQuerypeer1.org2...3secs

+peerchaincodequery-Cmychannel-nmycc-c'{"Args":["query","a"]}'+res=0+set+x2018-03-2313:38:04.649UTC[chaincodeCmd]checkChaincodeCmdParams->INFO001Usingdefaultescc2018-03-2313:38:04.649UTC[chaincodeCmd]checkChaincodeCmdParams->INFO002Usingdefaultvscc

QueryResult:902018-03-2313:38:15.427UTC[main]main->INFO003Exiting.....

=====================Queryonpeer1.org2onchannel'mychannel'issuccessful=====================

=========AllGOOD,BYFNexecutioncompleted===========

___________

|____||\|||_\

|_||\||||||

||___||\|||_||

|_____||_|\_||____/

该命令执行成功之后会基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric网络容器和相关的chaincode容器。

chaincode测试 

进入cli容器
docker exec -it cli bash
运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
可以看到余额是90

运行命令调用chaincode,将a账户的余额转10元给b账户

#besuretosetthe-Cand-nflagsappropriately

peerchaincodeinvoke-oorderer.example.com:7050--tls--cafile/opt/gopath/src/github.com/hyperledger/fabric/

返回的结果说明chaincode调用成功,此时a账户余额应为90-10=80,b账户余额应为210+10=120(b账户转账之前余额210)

执行下列命令验证如下

peerchaincodequery-Cmychannel-nmycc-c'{"Args":["query","a"]}'

peerchaincodequery-Cmychannel-nmycc-c'{"Args":["query","b"]}'

测试成功!可以关闭fabric网络了

./byfn.sh-mdown

接下来就是根据自己的需要确定fabric网络架构(ca,peer,orderer,org个数等),使用go语言或者node编写chaincode,并将chaincode安装到fabric网络中即可。


声明:本文由入驻区块网专栏作者撰写,观点仅代表作者本人,绝不代表区块网赞同其观点或证实其描述。


相关报道:

    相关新闻

    网友热议