入門參考文檔:
https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/test_network.html
想要學習一項技術,最好的開始就是官方文檔。
下載下傳hyperledger官方的sample
# 隻下載下傳項目
git clone https://github.com/hyperledger/fabric-samples.git
# 全面下載下傳
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.2 1.4.9
docker确認
如果你的電腦上沒有安裝先安裝docker
sudo apt install docker.io docker-compose
#或
sudo snap install docker docker-compose
切換到root環境
這裡注意,說明一下,在Linux Ubuntu上,後面所有操作都要在root下進行。
是以開始前先su:
開始部署第一個sample
進入到
fabric-samples/test-network
,執行:
啟動fabric在docker上的服務
./network.sh up
建立一個channel
./network.sh createChannel
啟動一套智能合約(鍊碼),在hyperledger上智能合約被叫做鍊碼,非常的奇怪,我還是喜歡eth下的智能合約叫法。
用JS或TS版本的鍊碼
#ts
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-typescript -ccl typescript
#js
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-javascript -ccl javascript
測試這sample的合約
因為這裡我們要用到peer等一些二進制工具與鍊碼進互動,是以我們添加bin系統環境變量。
如下操作:
# 在root環境下操作
vi ~/.bashrc
# 在root的bashrc中增加:
export PATH=~/fabric/bin:$PATH
export FABRIC_CFG_PATH=~/fabric/config/
另外還需要export一些環境變量,是和sample有關的,我們不要寫入bashrc中,直接在
test-network
中執行即可:
# Environment variables for 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/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
為了友善,你可以在
test-network
下建立一個
envrc1
檔案,然後把上面這幾個
export
複制進去,之後進入到
test-network
目錄後隻需要執行
source ./envrc1
即可導入這些環境變量。
那為什麼是1呢?因為還有2啊。在上述步驟中,你應該發現了其實這
network.sh
建立了2個docker peer節點也就是org1和org2,是以針對這兩個org我們是有兩套環境變量的,分指向這兩個組織。
具體說這兩個envrc檔案裡面的都是組織相關的加密檔案,用于鑒權。
以下是
envrc2
# Environment variables for Org2
export CORE_PEER_TLS_ENABLED=true
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/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051
開始讀寫合約的測試
先使用org1來測試:
source ./envrc1
首先我們初始化一下賬本,先寫入一些資料:
然後我們讀取一下試試:
我們會看到一堆json資料,這些就是剛剛初始化操作後的賬本狀态,也就是org1的資産。
接下來我們做一些轉賬操作:
好了,我們去看下轉賬後的區賬本,我們用org2進行查詢,是以
source ./envrc2
執行:
結果:
好的,非常完美,資産屬于Christopher了,關于轉賬細節請檢視sample項目
asset-transfer-basic/chaincode-typescript
關閉服務
測試結束,如果需要關閉sample,執行:
./network.sh down