天天看點

使用NodeJS開發Hyperledger Fabric筆記1——Get Started

入門參考文檔:

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
           

繼續閱讀