1.基础环境安装
Docker - v1.12 or higher
sudo apt-get install docker.io
Docker Compose - v1.8 or higher
sudo apt-get install python-pip
pip install docker-compose
Go - 1.7 or higher
在go官网 https://golang.org/dl/ 下载linux最新安装包
tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
gedit /etc/profile
在文件末尾添加export PATH=$PATH:/usr/local/go/bin
source /etc/profile
2.docker镜像下载
mkdir fabric-sample
cd fabri-sample
curl -sSLhttps://goo.gl/NIKLiU|
bash
(
上一步如果出现请求网址连接不上,可依次执行
export ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')" | awk '{print tolower($0)}')
curl https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/fabric-binary/${ARCH}-1.0.0-alpha2/fabric-binary-${ARCH}-1.0.0-alpha2.tar.gz | tar xz
cd release/${ARCH}
sh download-dockerimages.sh -c $(uname -m)-1.0.0-alpha2 -f $(uname -m)-1.0.0-alpha2
curl https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/fabric-binary/${ARCH}-1.0.0-alpha2/fabric-binary-${ARCH}-1.0.0-alpha2.tar.gz | tar xz
cd release/${ARCH}
sh download-dockerimages.sh -c $(uname -m)-1.0.0-alpha2 -f $(uname -m)-1.0.0-alpha2
)
执行完毕后显示结果如下:
3.网络环境配置
以下两个步骤任选其一
手工配置
在2中docker镜像下载完毕后,会在fabric-sample中出现release文件,其中会有linux-amd64
cd fabric-sample/release/linux-amd64
./bin/cryptogengenerate
--config=./crypto-config.yaml
(出现警告可以不予理会)
export FABRIC_CFG_PATH=$PWD
(官方文档直接FABRIC_CFG_PATH存在问题)
./bin/configtxgen-profile
TwoOrgsOrdererGenesis-outputBlock
./channel-artifacts/genesis.block
(执行结果后会在当前文件夹中产生genesis.block)
./bin/configtxgen-profile
TwoOrgsChannel-outputCreateChannelTx
./channel-artifacts/channel.tx-channelID
<channel-ID>
./bin/configtxgen-profile
TwoOrgsChannel-outputAnchorPeersUpdate
./channel-artifacts/Org1MSPanchors.tx-channelID
<channel-ID>-asOrg
Org1MSP
./bin/configtxgen-profile
TwoOrgsChannel-outputAnchorPeersUpdate
./channel-artifacts/Org2MSPanchors.tx-channelID
<channel-ID>-asOrg
Org2MSP
(需要将上述<channel-ID>修改为自己创建的名字)
自动配置
./generateArtifacts.sh<channel-ID>
(需要将上述<channel-ID>修改为自己创建的名字)
4.网络启动
在linux-amd64文件下有docker-compose-cli.yaml文件,对其中的内容修改如下:
working_dir:/opt/gopath/src/github.com/hyperledger/fabric/peer
# command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
volumes
# command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
volumes
CHANNEL_NAME=<channel-id>TIMEOUT=<pick_a_value>docker-compose-f
docker-compose-cli.yamlup
-d
(将其中<channel-id>修改为3中创建的名字,可以去除掉命令中的-d便可以看见打印信息,提示有个小错误,但不影响后边的测试)
5.测试
docker
exec -it clibash
(进入cli容器中)
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem
(将其中的$CHANNEL_NAME修改为3中创建的名字,运行完毕后会在当前文件下出现一个CHANNEL_NAME.block)
peer channeljoin
-b CHANNEL_NAME.block
peer
chaincode install -nmycc
-v 1.0
-p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem
-C $CHANNEL_NAME -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
(修改其中的$CHANNEL_NAME)
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem
-C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'