我 為什么 又在搭環境!!!
成功了成功了(別罵了別罵了
這是最最最最成功的了!!Let’s Begin~~~~~
文章目錄
- 前期準備
- 1、環境
- 2、巧用gitee
- 3、使用網站下載github二進制檔案
- 一、下載Fabric原始碼
- 二、獲取fabric-samples、二進制檔案、組態檔
- 三、獲取docker鏡像
- 四、開啟測驗網路
- 五、使用結構測驗網路
- 1、使用啟動腳本打開網路
- 2、查看當前使用的鏡像
- 2、創建通道
- 3、在通道上啟動鏈碼
- 六、與網路互動
- 1、配置config和Org1環境變數
- 2、初始化資產分類帳
- 3、查詢分類賬
- 4、資產轉移
- 5、配置Org2環境變數
- 6、查詢轉移到Org2的資產
- 七、關閉網路
前期準備
1、環境
centos7
git 1.8.3.1
curl
go 1.14.13
docker 18.06.3
docker compose 1.23.2

2、巧用gitee
1、官網 https://gitee.com/
2、點擊新建倉庫

3、點擊匯入現有倉庫

4、復制github鏈接

5、回傳粘貼

6、 等待一段時間即可,注意填寫倉庫其他資訊

3、使用網站下載github二進制檔案
https://d.serctl.com/
一、下載Fabric原始碼
在go/src/github.com/hyperledger檔案夾下克隆原始碼(使用gitee)
git clone https://gitee.com/jessyl/fabric.git
查看版本
git branch -a
選擇release-2.2
git branch release-2.2
二、獲取fabric-samples、二進制檔案、組態檔
1、進入scripts檔案夾

2、編輯bootstrap.sh檔案,加快下載速度,注意版本,后面需要

將fabric-samples下載地址改為gitee的下載地址(方法在前期準備模塊)

跳過二進制、組態檔、鏡像的下載,后面通過壓縮包上傳
./bootstrap.sh -db
下載完成會看到一個fabric-samples檔案夾,此時在網上下載二進制檔案和組態檔
3、查看bootstrap.sh檔案要求的版本資訊
fabric2.2 的fabric-ca版本: v1.9
https://github.com/hyperledger/fabric-ca/releases

fabric2.2 的fabric二進制版本: v2.2.1
https://github.com/hyperledger/fabric/releases

右鍵復制下載地址到上面提到的網站進行下載壓縮包
4、將兩個壓縮包傳入centos,放到fabric-samples進行解壓
tar vxzf 壓縮包名稱
解壓后會自動生成bin檔案夾,config檔案夾
bin檔案夾里面的可執行檔案為
5、編輯環境變數,隨時隨地可以使用這些檔案
vim /etc/profile

source /etc/profile
三、獲取docker鏡像
1、下載docker檔案
回到scripts檔案夾
./bootstrap.sh -sb
下載超快,如果不快建議換一下源,比如阿里,又看到說163的要快一點??
下載下來的鏡像檔案使用 docker images查看
[root@jessyl bin]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hyperledger/fabric-tools 2.2.2 811cb2e1c60f 42 hours ago 436MB
hyperledger/fabric-tools amd64-2.2.2-snapshot-3496dfc 811cb2e1c60f 42 hours ago 436MB
<none> <none> 342eca1f24b2 42 hours ago 733MB
hyperledger/fabric-peer 2.2.2 c4977148d940 43 hours ago 55MB
hyperledger/fabric-peer amd64-2.2.2-snapshot-3496dfc c4977148d940 43 hours ago 55MB
<none> <none> 7401552fd0e2 43 hours ago 644MB
hyperledger/fabric-orderer 2.2.2 14b8e1bee522 43 hours ago 38.5MB
hyperledger/fabric-orderer amd64-2.2.2-snapshot-3496dfc 14b8e1bee522 43 hours ago 38.5MB
<none> <none> 9b1dcba8fddc 43 hours ago 589MB
hyperledger/fabric-ccenv 2.2.2 87a2078164b3 43 hours ago 502MB
hyperledger/fabric-ccenv amd64-2.2.2-snapshot-3496dfc 87a2078164b3 43 hours ago 502MB
busybox latest 219ee5171f80 4 days ago 1.23MB
golang 1.14.12-alpine 32d46fc8e22c 3 weeks ago 287MB
golang 1.14.12-alpine3.12 32d46fc8e22c 3 weeks ago 287MB
hyperledger/fabric-nodeenv 2.2 8d164f92ca34 3 weeks ago 294MB
hyperledger/fabric-nodeenv 2.2.1 8d164f92ca34 3 weeks ago 294MB
hyperledger/fabric-nodeenv latest 8d164f92ca34 3 weeks ago 294MB
hyperledger/fabric-javaenv 2.2 f7b2f8cce0e4 2 months ago 407MB
hyperledger/fabric-javaenv 2.2.1 f7b2f8cce0e4 2 months ago 407MB
hyperledger/fabric-javaenv latest f7b2f8cce0e4 2 months ago 407MB
hyperledger/fabric-ca 1.4 dbbc768aec79 2 months ago 158MB
hyperledger/fabric-ca 1.4.9 dbbc768aec79 2 months ago 158MB
hyperledger/fabric-ca latest dbbc768aec79 2 months ago 158MB
hyperledger/fabric-tools 2.2 e9b802fadb41 2 months ago 519MB
hyperledger/fabric-tools 2.2.1 e9b802fadb41 2 months ago 519MB
hyperledger/fabric-tools latest e9b802fadb41 2 months ago 519MB
hyperledger/fabric-peer 2.2 ece149884124 2 months ago 55MB
hyperledger/fabric-peer 2.2.1 ece149884124 2 months ago 55MB
hyperledger/fabric-peer latest ece149884124 2 months ago 55MB
hyperledger/fabric-orderer 2.2 78a16ddd2cf4 2 months ago 38.4MB
hyperledger/fabric-orderer 2.2.1 78a16ddd2cf4 2 months ago 38.4MB
hyperledger/fabric-orderer latest 78a16ddd2cf4 2 months ago 38.4MB
hyperledger/fabric-ccenv 2.2 8e554c280cac 2 months ago 586MB
hyperledger/fabric-ccenv 2.2.1 8e554c280cac 2 months ago 586MB
hyperledger/fabric-ccenv latest 8e554c280cac 2 months ago 586MB
hyperledger/fabric-baseos 2.2 0b99d26b26ad 2 months ago 6.85MB
hyperledger/fabric-baseos 2.2.1 0b99d26b26ad 2 months ago 6.85MB
hyperledger/fabric-baseos latest 0b99d26b26ad 2 months ago 6.85MB
redis 5 226c4c322bdb 2 months ago 98.3MB
hyperledger/fabric-orderer 2.1 2a851d51685b 4 months ago 39.4MB
hyperledger/fabric-orderer 2.1.1 2a851d51685b 4 months ago 39.4MB
hyperledger/fabric-orderer amd64-2.1.1-snapshot-74b96b3 2a851d51685b 4 months ago 39.4MB
<none> <none> 83de9f66a3f3 4 months ago 780MB
hyperledger/fabric-ccenv 2.1 4a6294d34624 4 months ago 554MB
hyperledger/fabric-ccenv 2.1.1 4a6294d34624 4 months ago 554MB
hyperledger/fabric-ccenv amd64-2.1.1-snapshot-74b96b3 4a6294d34624 4 months ago 554MB
hyperledger/fabric-baseos 2.2.2 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-baseos 2.3 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-baseos 2.3.0 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-baseos amd64-2.2.2-snapshot-3496dfc 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-baseos amd64-2.3.0-snapshot-90bd2a0 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-baseos amd64-2.3.0-snapshot-cddfe91 0445d392507b 4 months ago 6.85MB
hyperledger/fabric-tools 2.2.0 5eb2356665e7 5 months ago 519MB
hyperledger/fabric-peer 2.2.0 760f304a3282 5 months ago 54.9MB
hyperledger/fabric-orderer 2.2.0 5fb8e97da88d 5 months ago 38.4MB
hyperledger/fabric-ccenv 2.2.0 aac435a5d3f1 5 months ago 586MB
hyperledger/fabric-baseos 2.2.0 aa2bdf8013af 5 months ago 6.85MB
hyperledger/fabric-nodeenv 2.2.0 ab88fe4d29dd 5 months ago 293MB
hyperledger/fabric-javaenv 2.2.0 56c30f316b23 5 months ago 504MB
couchdb 3.1 7962d7fc8ed7 6 months ago 189MB
golang 1.14.4-alpine3.12 3289bf11c284 6 months ago 370MB
hyperledger/fabric-tools 2.1 02b16ec21f30 6 months ago 522MB
hyperledger/fabric-tools 2.1.1 02b16ec21f30 6 months ago 522MB
hyperledger/fabric-peer 2.1 89cd71f28010 6 months ago 56.5MB
hyperledger/fabric-peer 2.1.1 89cd71f28010 6 months ago 56.5MB
hyperledger/fabric-baseos 2.1 d67ba930d449 6 months ago 6.88MB
hyperledger/fabric-baseos 2.1.1 d67ba930d449 6 months ago 6.88MB
alpine 3.12 a24bb4013296 6 months ago 5.57MB
hyperledger/fabric-javaenv 2.1 b22ec67c6494 6 months ago 505MB
hyperledger/fabric-javaenv 2.1.1 b22ec67c6494 6 months ago 505MB
hyperledger/fabric-ca 1.4.7 743a758fae29 6 months ago 154MB
alpine 3.11 f70734b6a266 7 months ago 5.61MB
hyperledger/fabric-nodeenv 2.1 9f6ae331087d 7 months ago 292MB
hyperledger/fabric-nodeenv 2.1.1 9f6ae331087d 7 months ago 292MB
golang 1.14.1-alpine3.11 760fdda71c8f 8 months ago 370MB
hyperledger/fabric-zookeeper 0.4 21e55e9a2862 9 months ago 276MB
hyperledger/fabric-zookeeper 0.4.20 21e55e9a2862 9 months ago 276MB
hyperledger/fabric-kafka 0.4 28a93b376dbe 9 months ago 270MB
hyperledger/fabric-kafka 0.4.20 28a93b376dbe 9 months ago 270MB
hyperledger/fabric-couchdb 0.4 03ac1654afc5 9 months ago 261MB
hyperledger/fabric-couchdb 0.4.20 03ac1654afc5 9 months ago 261MB
hello-world latest fce289e99eb9 23 months ago 1.84kB
2、對所有鏡像檔案進行備份到壓縮包
#備份所有docker鏡像
docker save $(docker images | grep -v REPOSITORY |grep -v "<none>" | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o allDockerImages.tar
#恢復所有docker鏡像
docker load -i allDockerImages.tar
#備份單個docker鏡像
docker save busybox:latest -o busybox.tar
#恢復單個docker鏡像
docker load -i busybox.tar
四、開啟測驗網路
1、進入如下路徑的test-network案例中,啟動測驗網路
./network.sh up

2、啟動成功

3、查看目前運行的docker鏡像

4、關閉網路
./network.sh down

五、使用結構測驗網路
1、使用啟動腳本打開網路
./network.sh up

2、查看當前使用的鏡像
- 與Fabric網路互動的每個節點和用戶都必須屬于作為網路成員的組織,屬于Fabric網路成員的組織組通常稱為聯盟,測驗網路有兩個聯盟成員,Org1和Org2,該網路還包括維護網路訂購服務的一個訂購者組織,
- 每個組織運營一個對等方,(對等方存盤區塊鏈分類帳并在將交易提交到分類帳之前對其進行驗證,對等方運行包含業務邏輯的智能合約,該業務邏輯用于管理區塊鏈分類賬上的資產,)
org1(peer0.org1.example.com) org2(peer0.org2.example.com)
docker ps -a

2、創建通道
- 為Org1和Org2之間的事務創建Fabric通道,
- 通道是特定網路成員之間的專用通信層,頻道只能由受邀加入該頻道的組織使用,并且對網路的其他成員不可見,
- 每個通道都有一個單獨的區塊鏈分類帳,被邀請的組織將其同行“加入”渠道以存盤渠道分類帳并驗證渠道上的交易,
- network.sh腳本在Org1和Org2之間創建頻道,并將其對等方加入該頻道,
./network.sh createChannel # 默認名稱為mychannel

沒有報錯即可
tips:
創建自定義名稱的頻道
./network.sh createChannel -c channel1
通過指定不同的通道名稱來創建多個通道
./network.sh createChannel -c channel2
逐步建立網路并創建頻道
./network.sh up createChannel
3、在通道上啟動鏈碼
- 創建通道后,可以開始使用智能合約與通道分類帳進行互動,
- 智能合約包含管理區塊鏈分類賬上資產的業務邏輯,網路成員運行的應用程式可以呼叫智能合約以在分類賬上創建資產,以及更改和轉移這些資產,應用程式還查詢智能合約以讀取分類賬上的資料,
- 在Fabric中,智能合約以稱為chaincode的軟體包部署在網路上,Chaincode安裝在組織的對等方上,然后部署到通道,然后可以在該通道中用于認可交易并與區塊鏈分類賬進行互動,
- 在將鏈碼部署到通道之前,通道成員需要就建立鏈碼管理的鏈碼定義達成共識,當所需的組織數目達成一致時,可以將鏈碼定義提交給通道,并準備開始使用鏈碼,
./network.sh deployCC
如果是第一次部署鏈碼,將安裝鏈碼依賴項,默認情況下,會安裝資產轉移(基本)鏈碼的Go版本,
六、與網路互動
啟用測驗網路后,可以使用peerCLI與網路進行互動,peerCLI允許你從CLI呼叫已部署的智能合約,更新通道或安裝和部署新的智能合約,
1、配置config和Org1環境變數
vim /etc/profile
如下配置,具體路徑記得修改!!!

#fabric
export PATH=$PATH:/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/bin
export PATH=$PATH:/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/config
export FABRIC_CFG_PATH=/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/config
# Environment variavles for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
更新環境變數
source /etc/profile
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 basic --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 '{"function":"InitLedger","Args":[]}'
回傳200成功

3、查詢分類賬
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
查詢結果如下

4、資產轉移
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 basic --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 '{"function":"TransferAsset","Args":["asset6","Christopher"]}'
回傳成功

5、配置Org2環境變數
記得修改路徑!!
# Environment variables for Org2
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=/root/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

6、查詢轉移到Org2的資產
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'

七、關閉網路
使用完成后關閉網路
./network.sh down

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/232506.html
標籤:區塊鏈
上一篇:【完整版】區塊鏈錢包開發之monero(XMR)門羅幣踩坑經驗
下一篇:MDF智能合約之全面解讀
