0.虛擬機使用
-
ubuntu16.04.7
-
安裝openssh-server:
apt install openssh-server
1.安裝python
-
ubuntu18默認安裝python3.6,查看版本:
python --version -
更新apt-get:
sudo apt-get update -
安裝python2.7:
sudo apt-get install python2.7 -
安裝pip:
sudo apt install python-pip
sudo apt install python3-pip -
查看pip版本:
pip --version
pip3 --version -
更新pip:
sudo pip install --upgrade pip
2.安裝go
mkdir go
cd go
- 下載上傳下載工具:
sudo apt install lrzsz - rz 上傳
- 手動安裝配置:
手動下載地址:https://golang.google.cn/dl/ - 解壓:
tar -xvf go1.15.11.linux-amd64.tar.gz(-C可以指定解壓到的目錄) - 安裝vim工具:
apt install vim
mkdir go/workspace - 配置環境變數:
vim ~/.bashrc - Shfit + G 直接跳到最后一行
export GOROOT=/home/hallen/go/go
export GOPATH=/home/hallen/go/workspace
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin - 重新加載組態檔:
source ~/.bashrc
3.git安裝
- 用來拉取fabric代碼:
sudo apt install git
4.安裝docker
- 更新apt:
sudo apt-get update - 安裝docker:
sudo apt-get install docker
sudo apt install docker.io - 驗證:會報權限不夠的錯誤
docker version - 創建docker用戶組:
sudo groupadd docker - 將當前用戶添加到docker用戶組:sudo gpasswd -a 用戶名 docker
sudo gpasswd -a hallen docker - 重啟docker服務:
systemctl restart docker - 當前用戶切換到docker組:
newgrp docker - 驗證:
docker version
5.安裝docker-compose
mkdir docker
- 安裝curl:
sudo apt install curl - 下載:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
- 移動到指定的目錄:
sudo mv ~/docker-compose /usr/local/bin/docker-compose - 修改權限:
chmod +x /usr/local/bin/docker-compose
6.fabric安裝:
- go/workspace目錄下:創建三個目錄
mkdir bin pkg src - gopath下新建一個目錄,存放后期的所有fabric有關的
mkdir src - 進入到目錄:
cd src
git clone https://github.com/hyperledger/fabric.git - 切換分支:
cd fabric
git checkout v1.0.0main分支是沒有examples檔案夾的
7.安裝fabric的docker鏡像
- 進入e2e_cli目錄:cd examples/e2e_cli (如果沒有examples,需要切換分支到1.0)
- 在fabric目錄下:
- 批量下載:
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0 - 分開下載:
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker pull hyperledger/fabric-orderer:x86_64-1.0.0
docker pull hyperledger/fabric-peer:x86_64-1.0.0
docker pull hyperledger/fabric-couchdb:x86_64-1.0.0
docker pull hyperledger/fabric-kafka:x86_64-1.0.0
docker pull hyperledger/fabric-ca:x86_64-1.0.0
docker pull hyperledger/fabric-ccenv:x86_64-1.0.0
docker pull hyperledger/fabric-baseimage:x86_64-0.4.7
docker pull hyperledger/fabric-javaenv:x86_64-1.0.0
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0 - 修改標簽為latest:
docker tag hyperledger/fabric-tools:x86_64-1.0.0 hyperledger/fabric-tools
docker tag hyperledger/fabric-orderer:x86_64-1.0.0 hyperledger/fabric-orderer
docker tag hyperledger/fabric-peer:x86_64-1.0.0 hyperledger/fabric-peer
docker tag hyperledger/fabric-couchdb:x86_64-1.0.0 hyperledger/fabric-couchdb
docker tag hyperledger/fabric-kafka:x86_64-1.0.0 hyperledger/fabric-kafka
docker tag hyperledger/fabric-ca:x86_64-1.0.0 hyperledger/fabric-ca
docker tag hyperledger/fabric-ccenv:x86_64-1.0.0 hyperledger/fabric-ccenv
docker tag hyperledger/fabric-baseimage:x86_64-0.4.7 hyperledger/fabric-baseimage
docker tag hyperledger/fabric-javaenv:x86_64-1.0.0 hyperledger/fabric-javaenv
docker tag hyperledger/fabric-zookeeper:x86_64-1.0.0 hyperledger/fabric-zookeeper - 驗證:
docker images - 洗掉鏡像:
- 先洗掉容器:
docker container prune - 再洗掉鏡像:
docker rmi –f [IMAGE ID]
8.生成可執行檔案:
- 可在物理機上執行命令編譯后上傳
- 也可直接用群里面的上傳
- 自己生成的方式有報錯,不提供,有時間自己再試試
9.組態檔及生成證書–cryptogen
- src目錄下
mkdir hyperledger
cryptogen showtemplate > conf.yaml - 修改內容后
cryptogen generate --config conf.yaml - 生成conf目錄,里面會有兩個目錄:order和peer的organization
10.創世塊和通道檔案的生成
- 組態檔必須叫configtx.yaml,組態檔路徑:sampleconfig/configtx.yaml,拷貝到src目錄下
- 生成創世塊命令:
configtxgen -profile GenGenesis -outputBlock ./genesis.block - 生成通道檔案:channelID: 使用小寫
configtxgen -profile GenChannel -channelID zlktchannel -outputCreateChannelTx ./channel.tx
chmod 775 channel.tx genesis.block
11.生成更新錨節點檔案
configtxgen -profile GenChannel -outputAnchorPeersUpdate ./Org1MSPAnchorUpdate.tx -asOrg Org1MSP -channelID zlktChannel
configtxgen -profile GenChannel -outputAnchorPeersUpdate ./Org2MSPAnchorUpdate.tx -asOrg Org2MSP -channelID zlktChannel
12.docker-compose啟動
- 三個檔案 docker-compose-cli.yaml docker-compose-base.yaml peer-base.yaml
- hyperleger目錄下:
mkdir channel-artifacts - rz 上傳docker-compose-cli.yaml檔案
mv genesis.block channel-artifacts/
mv channel.tx channel-artifacts/
mkdir chaincode
mkdir base
cd base - rz上傳docker-compose-base.yaml 和 peer-base.yaml
- 啟動:
docker-compose -f docker-compose-cli.yaml up -d - 查看啟動狀態:
docker-compose -f docker-compose-cli.yaml ps
13.創建通道及將節點加入通道
- 創建通道:
docker exec -it cli /bin/bash peer channel create -o orderer.example.com:7050 -c zlktchannel -f ./channel-artifacts/channel.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts /tlsca.example.com-cert.pem
- 驗證:
peer channel list - 將當前節點加入通道:
peer channel join -b zlktchannel.block - 更換節點:
export CORE_PEER_ADDRESS=peer0.org2.example.com:7051
export CORE_PEER_LOCALMSPID=Org2MSP
export CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt
export CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key
export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
- 將當前節點加入通道:
peer channel join -b zlktchannel.block
14.peer節點安裝鏈碼
- 先將鏈碼上傳到掛載路徑go/workspace/src/hyperledger/chaincode/go下
- rz上鏈碼 ,容器會自動掛載
peer chaincode install -n example02 -v 1.0.0 -p github.com/hyperledger/fabric/examples/chaincode/go - 鏈碼實體化:
peer chaincode instantiate -o orderer.example.com:7050 -C zlktchannel -c '{"Args":["init","a","200","b","300"]}' -n example02 -P "OR('Org1MSP.member','Org2MSP.member')" -v 1.0.0 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
- 查詢:
peer chaincode query -C zlktchannel -n example02 -c '{"Args":["query","a"]}'
15.安裝自己撰寫鏈碼,測驗
- 重新安裝鏈碼,指定-p的路徑一定和原來的不在同一個目錄,-n 引數不能和原來的一樣
- 用戶目錄下:hyperledger/chaincode/go目錄下 (由于是掛載,所以用戶目錄與容器目錄要一致)
mkdir mycc
cd mycc - rz 上傳鏈碼
- 重新上傳,重新安裝,重新實體化
peer chaincode install -n mycc1 -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/mycc
peer chaincode instantiate -o orderer.example.com:7050 -C zlktchannel -c '{"Args":["init","name","hallen","age","18"]}' -n mycc1 -v 1.0 -P "OR('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer chaincode query -C zlktchannel -n mycc1 -c '{"Args":["query","name"]}'
- 安裝交易鏈碼:
- 重新安裝鏈碼,指定-p的路徑一定和原來的不在同一個目錄,-n 引數不能和原來的一樣
- 用戶目錄下:hyperledger/chaincode/go目錄下 (由于是掛載,所以用戶目錄與容器目錄要一致)
mkdir mytxcc
cd mytxcc - rz 上傳鏈碼
- 重新上傳,重新安裝,重新實體化
peer chaincode install -n mytxcc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/mytxcc
peer chaincode instantiate -o orderer.example.com:7050 -C zlktchannel -c '{"Args":["init","hallen","200","zhiliao","300"]}' -n mytxcc -v 1.0 -P "OR ('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer chaincode query -C zlktchannel -n mytxcc -c '{"Args":["query","hallen"]}'
peer chaincode query -C zlktchannel -n mytxcc -c '{"Args":["query","hallen"]}'
peer chaincode invoke -C zlktchannel -n mytxcc -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem -c '{"Args":["invoke","hallen","zhiliao","20"]}'
- 這里演示鏈碼升級:
- 把代碼放到chaincode掛在的目錄中,然后替換原來的舊代碼
- 安裝新版本chaincode:
docker exec -it cli bash
peer chaincode install -n mytxcc -v 2.0 -p github.com/hyperledger/fabric/examples/chaincode/go/mytxcc - ? -n 一定要之前的保持一致,只需要改版本號
- 更新:
peer chaincode upgrade -o orderer.example.com:7050 -C zlktchannel -c '{"Args":["init","hallen","200","zhiliao","300"]}' -n mytxcc -v 2.0 -P "OR ('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
- 用戶目錄下:hyperledger/chaincode/go目錄下 (由于是掛載,所以用戶目錄與容器目錄要一致)
mkdir myivcc
cd myivcc - rz上傳鏈碼
- 重新上傳,重新安裝,重新實體化
peer chaincode install -n myivcc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/myivcc
peer chaincode instantiate -o orderer.example.com:7050 -C zlktchannel -c '{"Args":["init","hallen","200"]}' -n myivcc -v 1.0 -P "OR ('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem
peer chaincode query -o orderer.example.com:7050 -C zlktchannel -n myivcc -c '{"Args":["invoke","mytxcc","hallen","zlktchannel"]}'
16.鏈碼打包
- 在容器下執行/opt/gopath/src/github.com/hyperledger/fabric/peer#:
peer chaincode package -n myivcc -p github.com/hyperledger/fabric/examples/chaincode/go/myivcc -v 1.0 myivcc.1.0.out
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/305518.html
標籤:區塊鏈
