亚洲一二区制服无码中字,国产无套露脸在线观看,中文字幕丝袜人妻制服丝袜在线,国内精品自线在拍2020不卡,香蕉影院在线观看

WIN10 Ubuntu20.04 Fabric 2.0安裝部署

一、前置環(huán)境安裝

1 安裝pip,curl,git工具包

2 安裝docker

3 安裝docker-compose

4 GO語言依賴

二、Fabric2.2 開發(fā)環(huán)境

1 創(chuàng)建文件夾并拉取 fabric 源碼

? ? ? ? ?2 下載實驗所需樣例及 docker 鏡像

3 網絡環(huán)境測試

4 問題

三、測試自己的鏈碼

1 啟動 Fabric 網絡

2 部署鏈碼

3 調用結果


WIN10 Ubuntu20.04?Fabric?2.0安裝部署

虛擬機配置:


一、前置環(huán)境安裝

1 安裝pip,curl,git工具包

在安裝相關工具包前更新所需軟件,否則安裝時部分包會安裝失敗。

更新指令:sudoapt-getupdate  sudoapt-getupgrade

sudo apt install git

sudo apt install curl

sudo apt install python-pip

pip install?--upgrade pip

2 安裝docker

安裝 docker前為確保docker版本先卸載原有 docker 版本 ,重新安裝

卸載指令:sudo apt-get remove docker docker-engine docker.io

安裝 docker 指令:sudo apt install docker.io

查看 docker 版本:?docker -v

重啟服務

sudo systemctl daemon-reload

sudo systemctl restart docker

3 安裝docker-compose

安裝指令:sudo apt install docker-compose

查看指令:docker-compose -v

允許其他用戶執(zhí)行 compose 相關命令

執(zhí)行指令:sudo chmod +x /usr/share/doc/docker-compose

4 GO語言依賴

安裝依賴包:sudo apt install libtool libltdl-dev

下載GO語言安裝包并解壓安裝,指令下載的是go1.14.6

安裝指令:wget https://studygolang.com/dl/golang/go1.14.6.linux-amd64.tar.gz

解壓指令:sudo tar -xzvf go1.14.6.linux-amd64.tar.gz -C /usr/local/

配置環(huán)境變量 ,加在文件末尾

配置指令:sudo vim/etc/profile 

export PATH= $PATH:/usr/local/go/bin

export GOROOT= /usr/local/go

export GOPATH= $HOME/go

export PATH= $PATH:$GOPATH/bin:$GOPATH/bin

錯誤:vim:command not found

缺少 vim 工具,安裝指令:sudo apt-get install vim-gtk,類似錯誤同樣處理。

生效指令:source /etc/profile

檢查是否安裝成功:go version

重啟虛擬機,檢查環(huán)境

GO 語言:go1.14.6linux/amd64

Docker-compose:docker-composeversion1.25.0

Docker:dockerversion19.03.8


二、Fabric2.2 開發(fā)環(huán)境

1 創(chuàng)建文件夾并拉取 fabric 源碼

mkdir -p go/src/github.com/hyperledger/

cd?go/src/github.com/hyperledger/

安裝指令:

git clone "https://github.com/hyperledger/fabric.git"

cd fabric/

cd scripts/

2 下載實驗所需樣例及 docker 鏡像

可以直接運行sudo./bootstrap.sh下載官方樣例和所需docker鏡像,但是運行特別慢,失敗可以重新運行,或者修改 bootstrap.sh 腳本運行:

vim ~/?go/src/github.com/hyperledger/fabric/scripts/bootstrap.sh

圖片左邊改成右邊,:wq!保存退出

回到原來的文件夾運行指令:sudo./bootstrap.sh
修改后的腳本下載時只會進行鏡像拉取,因此需要手動下載 fabric-samples 及二進制文件。

cd?~/?go/src/github.com/hyperledger/fabric/scripts

git clone https://github.com/hyperledger/fabric-samples.git

這里很容易因為網絡問題下載不全鏡像,之后的運行會出問題,如果出問題,多運行幾次,下全缺失的鏡像

下好 fabric-samples 文件后下載二進制文件并解壓。

wget https://github.com/hyperledger/fabric/releases/download/v2.2.1/hyperledger-fabric-lin ux-amd64-2.2.1.tar.gz

sudo tar -xzvf?hyperledger-fabric-lin ux-amd64-2.2.1.tar.gz

3 網絡環(huán)境測試

進入管理員權限,不會頻繁出環(huán)境變量的錯誤

啟動 fabric 網絡:sudo ./network.sh up

在網絡上建立通道:sudo ./network.sh createChannel

在通道上啟動鏈碼:sudo ./network.sh deployCC 

啟動鏈碼后在 test-network 目錄上進行環(huán)境變量設置并使之生效。

source /etc/profile
執(zhí)行查詢指令:

peer chaincode query -C mychannel -n fabcar -c? '{"Args":["queryAllCars"]}'

查詢出現(xiàn)錯誤后進入 fabcar 文件執(zhí)行./startFabric.sh,重新啟動網絡再查詢

cd /opt/gopath/src/github.com/hyperledger/fabric/scripts/famples-samples/fabcar

sudo ./startFabric.sh

關閉網絡:./network.sh down

4 問題

解決辦法:對 go 換源,之后重新啟動鏈碼。

執(zhí)行指令:go env -w GO111MODULE=on

? ? ? ? ?go env -w GOPROXY=https://goproxy.cn,direct

三、測試自己的鏈碼

例子:資產交易平臺:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

鏈接里的代碼是基于1.4的,需要把開頭這個部分替換掉

"github.com/hyperledger/fabric-chaincode-go/shim"

"github.com/hyperledger/fabric-protos-go/peer"

把這里的鏈碼復制到fabcar.go文件里替換保存

1 啟動 Fabric 網絡

刪除運行中的 docker,以免之前實驗的遺留部分有所影響,關閉網絡。

執(zhí)行指令:./network.sh down

建立新的測試網絡:./network.sh up 和 ./network.sh createChannel。

執(zhí)行后可創(chuàng)建一個通道 mychannel 和兩個組織 Org1,Org2.每個 組織有一個 peer 且已經加入通道中。

2 部署鏈碼

部署鏈碼主要分為四部分:打包鏈碼、安裝打包的鏈碼、各組織對鏈碼內容和定義達成一致、向 channel 中提交鏈碼。

1 打包鏈碼

先對鏈碼打包,進入 fabric-samples/chaincode/fabcar/go 文件,使用 go module,查看 go.mod 文件并安裝鏈碼依賴包。

鏈碼依賴包安裝完成后,回到 test-network 目錄。

root權限下

cd /home/用戶名/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/chaincode/fabcar/go

cat go.mod

GO111MODULE=on go mod vendor

cd /home/用戶名/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network


使用 peerCLI 來打包鏈碼,添加 Peer 到 CLI 命令路徑中,并設置相關路徑, 設置完成后查看 peer 版本來確認是否安裝成功。

export PATH=${PWD}/../bin:$PATH

export FABRIC_CFG_PATH=$PWD/../config/

peer version

打包鏈碼:

peer lifecycle chaincode package fabcar.tar.gz --path../chaincode/fabcar/go/ --langgolang --labelfabcar_1

2 安裝打包的鏈碼

首先在 Org1 的 peer 上安裝,可以通過設置環(huán)境變量來指定 peer 操作的是 Org1。

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
peer lifecycle chaincode install fabcar.tar.gz

同樣,在 Org2 的 peer 上安裝鏈碼:

export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

peer lifecycle chaincode install fabcar.tar.gz

輸出的結果是一樣的

3 審議鏈碼定義

查找 peer 上的 packageID 并將其保存到環(huán)境變量中。

peer lifecycle chaincode queryinstalled

export CC_PACKAGE_ID=______________________________//這里是剛查出來的id

用 Org1 和 Org2 分別審議鏈碼,這里環(huán)境變量還在Org2下

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

再審議Org1

//回到org1的環(huán)境
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

4 向 Channel 中提交鏈碼定義

檢查一下哪些成員同意了鏈碼定義

peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json

通道內所有組織都同意了鏈碼定義之后,鏈碼定義就可以提交到 channel 中。

peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name fabcar --version 1.0 --sequence 1 --tls true --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example. com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.examp le.com/tls/ca.crt

//確認是否提交到通道上

peer lifecycle chaincode querycommitted 

3 調用結果

之前用的root權限,所以每次注冊的操作都要對相關的安全證書定義,注冊的代碼比較長,查詢的不需要

//用戶1注冊
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["userRegister", "user1", "user1"]}'

//資產1登記
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["assetEnroll", "asset1", "asset1", "metadata", "user1"]}'

//用戶2注冊
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["userRegister", "user2", "user2"]}'

//1資產轉讓2
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["assetExchange", "user1", "asset1", "user2"]}'

//用戶1注銷
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["userDestroy", "user1"]}'

//用戶1查詢
sudo peer chaincode query -C mychannel -n token -c '{"Args":["queryUser", "user1"]}'

//資產1查詢
sudo peer chaincode query -C mychannel -n token -c '{"Args":["queryAsset", "asset1"]}'

//用戶2查詢
sudo peer chaincode query -C mychannel -n token -c '{"Args":["queryUser", "user2"]}'

//資產交易記錄查詢
sudo peer chaincode query -C mychannel -n token -c '{"Args":["queryAssetHistory", "asset1"]}'

sudo peer chaincode query -C mychannel -n token -c '{"Args":["queryAssetHistory", "asset1", "all"]}'
阿里企業(yè)郵箱、網易企業(yè)郵箱、新網企業(yè)郵箱
【標準版】400元/年/5用戶/無限容量
【外貿版】500元/年/5用戶/無限容量
其它服務:網站建設、企業(yè)郵箱、數(shù)字證書ssl、400電話、
聯(lián)系方式:電話:18696588163 微信同號

聲明:本站所有作品(圖文、音視頻)均由用戶自行上傳分享,或互聯(lián)網相關知識整合,僅供網友學習交流,若您的權利被侵害,請聯(lián)系 管理員 刪除。

本文鏈接:http://integra-biosciences.com.cn/article_32804.html