文檔
https://hyperledger-fabric.readthedocs.io/en/release-1.0/build_network.html
獲取first network
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
獲取額外的補充文件
cryptogen,
configtxgen,
configtxlator, and
peer
-----------------------------------------------------------------
curl -sSL https://goo.gl/kFFqh5 | bash -s 1.0.6
若是獲取不到可以在瀏覽器中執行https://goo.gl/kFFqh5 獲取相應的sh文件<br>
然後在服務器中fabric-samples目錄下執行,然後在fabric-samples/bin可以找到對於的文件
-------------------------------------------
或者執行
/scripts/bootstrap.sh 即可(建議這個方法)
腳本啓動測試
執行first-network中的命令
./byfn.sh -m generate
./byfn.sh -m up
./byfn.sh -m down
遇到的大坑
當執行./byfn.sh -m up 時
error getting endorser client for channel: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded
解決方法
更新了docker和docker-compose的版本
參考https://www.cnblogs.com/tianhei/p/7802064.html
下方兩個有可能用的上
docker ps -qa | xargs docker stop
docker ps -qa | xargs docker rm
注意:docker的版本問題和權限問題
Crypto Generator 密碼生成器
使用cryptogen工具生成加密材料,負責生成網絡中組織結構和身份文件
一般使用crypto-config.yaml文件進行配置,它網絡的拓撲和需要生成的組織和該組織部件的證書
其生成的證書和密鑰保存在crypto-config文件夾中
cryptogen 命令參數
generate 生成密鑰和證書文件
--output 存放生成密鑰的和證書文件的路徑,默認當前目錄的crypto-config
--config 指定採用的配置模板文件的路徑crypto-config.yaml
configtxgen 生成通道配置
主要功能:
- 生成啓動Orderer需要的初始化區塊,並支持檢查區塊內容
- 生成創建應用通道需要的配置交易,並支持檢查交易內容
- 生成錨點Peer的更新配置交易
命令選項
- -profilestring:從configtx.yaml中查找到指定的profile來生成配置
- -channelID string:指定操作的通道名稱
- -outputBlock:將區塊寫入指定文件
- -outputAnchorPeersUpdate string:創建跟新錨點peer的配置更新請求,需要同時使用-asOrg來指定組織身份
- -outputCreateChannelTx string:將通道創建的交易寫入指定文件
- -asOrg string:以指定的組織身份執行更新配置交易的生成
手動操作
- 生成密鑰和證書文件
../bin/cryptogen generate --config=./crypto-config.yaml
- 生成Ordering服務啓動初始化塊
export FABRIC_CFG_PATH=$PWD
../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
- 生成新建應用通道的配置交易
export CHANNEL_NAME=mychannel
../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
- 生成錨節點配置更新文件
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
- 啓動網絡
CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=60 docker-compose -f docker-compose-cli.yaml up -d
docker exec -it cli bash
進入下方的路徑
root@0d78bb69300d:/opt/gopath/src/github.com/hyperledger/fabric/peer#
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/tlscacerts/tlsca.example.com-cert.pem
peer channel join -b mychannel.block
- 安裝和初始化鏈碼
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 --tls $CORE_PEER_TLS_ENABLED --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 $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
- 查詢
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
- invoke
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/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'
9.查詢
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'