Native方式运行Fabric(非Docker方式)
发布日期:2025-04-19 03:32:22 浏览次数:3 分类:精选文章

本文共 4184 字,大约阅读时间需要 13 分钟。

编译 Fabric 源码并搭建单个 Peer 节点网络

一、编译 Fabric 源码

1. 下载及解压源码

$GOPATH/src/github.com/hyperledger 目录下创建并进入目录:

mkdir -p $GOPATH/src/github.com/hyperledgercd $GOPATH/src/github.com/hyperledgerwget https://github.com/hyperledger/fabric/archive/v1.1.0-preview.tar.gztar -zxvf v1.1.0-preview.tar.gzmv fabric-1.1.0-preview fabric

2. 编译可执行程序

进入编译目录并执行以下命令:

cd fabricmake test-cmd

获取 -ldflags选项的取值后,按照以下命令编译每个可执行程序:

go build -gcflags "-N -l" \  -X github.com/hyperledger/fabric/common/metadata.Version=1.1.0-preview \  -X github.com/hyperledger/fabric/common/metadata.BaseVersion=0.4.2 \  -X github.com/hyperledger/fabric/common/metadata.BaseDockerLabel=org.hyperledger.fabric \  -X github.com/hyperledger/fabric/common/metadata.DockerNamespace=hyperledger \  -X github.com/hyperledger/fabric/common/metadata.BaseDockerNamespace=hyperledger \  -X github.com/hyperledger/fabric/common/metadata.Experimental=false \  github.com/hyperledger/fabric/orderer

同样方式编译 peercryptogen 等程序。

二、搭建单个 Peer 节点网络

1. 创建目录结构

创建以下目录结构:

mkdir -p ~/fabric-1.1.0-preview-demo/binmkdir -p ~/fabric-1.1.0-preview-demo/networksmkdir -p ~/fabric-1.1.0-preview-demo/chaincodes

2. 生成证书

下载并解压 crypto-config.yaml 并执行以下命令:

export PATH=$(pwd)/bin:$PATHcryptogen generate --config=networks/single-dev-env/config/crypto-config.yaml --output=networks/single-dev-env/config/crypto-config

3. 生成创世纪块

执行以下命令生成创世纪块:

export FABRIC_CFG_PATH=$(pwd)/networks/single-dev-env/config/configtxgen -outputBlock networks/single-dev-env/config/genesis.block -profile SingleSoloOrdererGenesis

4. 创建通道配置交易

执行以下命令创建通道配置交易:

export CHANNEL_NAME=mychannelconfigtxgen -outputCreateChannelTx networks/single-dev-env/config/channel-artifacts/channel.tx -profile SingleSoloChannel -channelID $CHANNEL_NAME

5. 启动 Orderer 和 Peer 节点

启动 Orderer 节点:

export rootDir=$(pwd)export PATH=$rootDir/bin:$PATHexport ORDERER_GENERAL_LOGLEVEL=DEBUGexport ORDERER_GENERAL_TLS_ENABLED=falseexport ORDERER_GENERAL_PROFILE_ENABLED=falseexport ORDERER_GENERAL_LISTENADDRESS=0.0.0.0export ORDERER_GENERAL_LISTENPORT=7050export ORDERER_GENERAL_GENESISMETHOD=fileexport ORDERER_GENERAL_GENESISFILE=$rootDir/networks/single-dev-env/config/genesis.blockexport ORDERER_GENERAL_LOCALMSPDIR=$rootDir/networks/single-dev-env/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/mspexport ORDERER_GENERAL_LOCALMSPID=OrdererMSPexport ORDERER_FILELEDGER_LOCATION=$rootDir/networks/single-dev-env/data/ordererorderer

启动 Peer 节点:

export rootDir=$(pwd)export PATH=$rootDir/bin:$PATHexport CORE_PEER_ID=example_orgexport CORE_CHAINCODE_MODE=devexport CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052export CORE_PEER_NETWORKID=devexport CORE_LOGGING_LEVEL=INFOexport CORE_PEER_TLS_ENABLED=falseexport CORE_PEER_PROFILE_ENABLED=falseexport CORE_PEER_ADDRESS=0.0.0.0:7051export CORE_PEER_LISTENADDRESS=0.0.0.0:7051export CORE_PEER_GOSSIP_ENDPOINT=0.0.0.0:7051export CORE_PEER_EVENTS_ADDRESS=0.0.0.0:7053export CORE_PEER_LOCALMSPID=OrgMSPexport CORE_LEDGER_STATE_STATEDATABASE=goleveldbexport CORE_PEER_MSPCONFIGPATH=$rootDir/networks/single-dev-env/config/crypto-config/peerOrganizations/example.com/peers/peer.example.com/mspexport CORE_PEER_FILESYSTEMPATH=$rootDir/networks/single-dev-env/data/peerpeer node start -o 127.0.0.1:7050 --peer-chaincodedev=true

6. 创建通道

执行以下命令创建通道:

peer channel create -o 127.0.0.1:7050 -c mychannel -f networks/single-dev-env/config/channel-artifacts/channel.tx

7. 加入通道

执行以下命令加入通道:

peer channel join -b mychannel.block

8. 部署及调用链码

部署链码并调用示例:

export CORE_CHAINCODE_ID_NAME=mycc:1.0export CORE_PEER_ADDRESS=peer.example.com:7052go run $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chaincode_example02.go

安装链码:

peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

实例化链码:

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c "{\"Args\":[\"init\",\"a\", \"100\", \"b\", \"200\"]}" -P "OR('OrgMSP.member')"

调用链码:

peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc -c "{\"Args\":[\"invoke\",\"a\",\"b\",\"10\"]}"

查询链码状态:

peer chaincode query -C mychannel -n mycc -c "{\"Args\":[\"query\",\"a\"]}"
上一篇:Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
下一篇:NativeWindow_01

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月15日 20时39分35秒