這一篇實戰的第一篇,是最最基本的環境搭建,部署fabric官網上提供的fabric samples的第一個網絡。後續文章會對其中的關鍵步驟進行分解。git
假設你已經安裝好了docker和相關語言環境,我這裏用的是go語言。 github
下載 Fabric samplesgolang
curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0
該命令會下載1.1.0 版本相關的samples代碼,執行環境,二進制文件和docker鏡像文件(包括 fabric-ca,fabric-tools,abric-orderer,fabric-peer,
fabric-kafka,fabric-couchdb 等)。命令執行完成後,會在當前目錄生成一個 fabric-samples的目錄。
生成祕鑰及相關交易信息docker
cd到fabric-samples/first-network目錄下,運行數據庫
./byfn.sh generate
該命令是用於生成fabric網絡中的組件祕鑰信息以及初始的交易信息。包括:ordering服務和節點的祕鑰信息(msp和tls的證書),ordering服務的創世塊,管道配置交易信息(channel.tx),和錨點的更新交易信息。bash
命令運行完成後,能夠看到first-network下的crypto-config 和channel-artifacts文件夾下都新生成了一些文件。Channel-artifacts下是新生成的創世塊和管道交易信息,以及錨點更新交易信息。Crypto-config裏則是ordering 服務和節點相關的祕鑰信息。微信
啓動網絡網絡
./byfn.sh up
該命令啓動了一個默認設置的網絡,這些默認的設置包括:curl
channel名字爲myChannel區塊鏈
cli的timeout時間爲10s
延遲爲3s
使用的docker-compose-file爲docker-compose-cli.yaml
數據庫類型爲goleveldb
語言爲go語言
使用最新的鏡像啓動網絡
完整的命令以下:
./byfn.sh up –c myChannel –t 10 –d 3 –f docker-compose-cli.yaml –s goleveldb –l go –i latest
啓動的流程爲:
建立四個節點
建立了一個ordering服務
建立了一個cli服務,爲了下面能夠使用 docker exec -it bash 進入到各個容器內。
建立一個channel
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
分別把四個節點加入到這個channel中
peer channel join -b mychannel.block
以後更新這些加入到myChannel的節點所屬的ordering服務已經msp信息
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
安裝默認的chaincode到peer0.org2節點上
peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
實例化chaincode
peer chaincode instantiate -o orderer.example.com:7050 --tls true --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 mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'OR ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'
最後作了一步對鏈碼的驗證工做。
查詢改交易
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
調用交易
peer chaincode invoke -o orderer.example.com:7050 --tls true --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 mychannel -n mycc -c'{"Args":["invoke","a","b","10"]}'
到這裏咱們整個網絡已經啓動完成。這個時候能夠看下運行的容器狀況,經過docker ps能夠查看到相關容器信息
至此,一個簡易的fabric網絡就搭建成功了。
覆蓋完整的區塊鏈知識體系,從入門到源碼,這裏有真正想要的區塊鏈技術,歡迎你們關注微信號:蝸牛講技術。掃下面的二維碼