Byfn.win 是Hyperledger Fabric著名的byfn.sh腳本的Windows版本的移植,用于幫助開發人員在Windows環境中快速搭建Hyperledger Fabric鍊碼及應用開發環境。官方下載下傳位址: http://sc.hubwiz.com/codebag/byfn-win/ 。
1、開發包概述
Byfn.win的主要特點如下:
- 使用原生建構的windows版本的Fabric程式,不需要安裝虛拟機/Linux子系統/Docker
- 一鍵複位BYFN網絡,一鍵啟動BYFN網絡,為開發人員節省大量時間和精力
- 支援TLS安全傳輸設定,支援solo共識和etcdraft共識
- 支援Hyperledger Fabric官方及第三方提供的各種語言的鍊碼與應用開發包
- 解壓即用,綠色軟體
Byfn.win采用Golang開發,目前版本是1.0.0,主要檔案清單如下:
檔案 | 說明 |
---|---|
byfn.exe | byfn.win主程式 |
first-network/ | BYFN網絡配置目錄 |
first-network/crypto-config.yaml | BYFN密碼學資料配置 |
first-network/configtx.yaml | BYFN創世區塊配置 |
first-network/ccp-template.json | 連接配接配置檔案json模闆 |
first-network/ccp-template.yaml | 連接配接配置檔案yaml模闆 |
first-network/orderer.yaml | Fabric排序節點配置 |
first-network/core.yaml | Fabric對等節點核心配置 |
first-network/e2e.cmd | 端到端測試腳本 |
chaincode_example02/go/ | Golang鍊碼,示範 |
chaincode_example02/node/ | Node.js鍊碼,示範 |
chaincode_example02/java/ | Java鍊碼,示範 |
fabric/bin/ | Fabric原生程式目錄 |
byfn.win/ | byfn.win源代碼目錄 |
byfn.win/go.mod | go module配置檔案 |
byfn.win/main.go | 入口代碼 |
byfn.win/pkg/cmd/bygn.go | 指令行處理代碼 |
byfn.win/pkg/shell/shell.go | 作業系統接口代碼 |
byfn.win/pkg/shell/generate.go | BYFN網絡資料生成代碼 |
byfn.win/pkg/shell/network.go | BYFN網絡運作與管理代碼 |
2、Byfn.win使用說明
2.1 生成BYFN網絡基礎資料
使用
byfn.exe
的
reset
子指令來生成或複位BYFN網絡運作所依賴的基礎資料:

注意:
- 每次執行
指令都會清空已有的區塊鍊資料和密碼學資料reset
- 節點的輸出日志在first-network/logs目錄下
2.2 啟動BYFN網絡
byfn.exe
up
子指令來啟動BYFN網絡:
up
子指令的選項如下:
- --tls:啟用tls,預設:false
- --full / -f:是否啟動所有節點,預設:false,僅啟動一個節點
- --orderer / -o:選擇排序器實作,預設:solo,可選:solo或etcdraft。
預設情況下,byfn.win禁用TLS并僅啟動一個排序節點和一個對等節點,即:
- orderer.example.com
- peer0.org1.example.com
可以使用上述選項切換啟動設定,例如啟用tls、etcdraft排序并啟動所有peer節點:
2.3 進入Peer節點管理控制台
byfn.exe
admin
子指令進入peer節點的管理控制台:
admin
- --peer / -p:設定節點編号,預設:0
- --org / -o:設定機構編号,預設:1
預設情況下進入peer0.org1.example.com的管理控制台,可以使用上述選項進入不同的peer節點的控制台,例如進入peer1.org2.example.com的管理控制台:
byfn admin -p 1 -o 2
- 當網絡啟用了TLS時,在進入管理終端時也需要啟用tls,例如:
byfn admin --tls
- peer指令需要額外的tls相關的參數,例如:
> peer channel list --tls --cafile=%ORDERER_CA%
其中環境變量
ORDERER_CA
中已經設定了相應的路徑,可以直接使用。
2.4 執行端到端測試
進入管理控制台後,可以調用
e2e.cmd
來進行基本的測試:
e2e.cmd主要執行如下任務:
- 啟動預置的鍊碼chaincode_example02
- 建立通道mychannel
- 将peer0.org1.example.com加入mychannel
- 在peer0.org1.example.com安裝鍊碼mycc:0
- 在通道mychannle激活鍊碼mycc:0
- 查詢鍊碼mycc:0的狀态
- 送出交易修改鍊碼mycc:0的狀态
- 再次查詢鍊碼mycc:0的狀态
- 關閉鍊碼chaincode_example02
2.5 在管理控制台使用fabric預置指令
e2e.cmd是一個标準的windows批處理檔案,每一個指令都可以在管理控制台單獨執行。
例如,下面的三個指令分别用于查詢目前所管理節點加入的通道、目前節點安裝的鍊碼和指定通道激活的鍊碼:
3、使用byfn.win測試自己開發的鍊碼
首先使用
up
子指令啟動網絡:
byfn up
然後啟動鍊碼應用,例如啟動預置的nodejs鍊碼:
cd chaincode_example02/node
npm install
node index.js --peer.address=peer0.org1.examplecom:7052 --peer.id.name=myccjs:0
現在進入管理終端,就可以進行鍊碼的安裝、激活、查詢或交易操作了。
安裝鍊碼:
> peer chaincode install -n myccjs -v 0 -l node -p ..\chaincode_example02\node
激活鍊碼:
> peer chaincode instantiate -n myccjs -c "{\"Args\":[\"init\",\"tom\",\"1000\",\"mary\":\"2000\"]}" -C mychannel -o orderer.example.com
查詢鍊碼狀态:
> peer chaincode query -n myccjs -c "{\"Args\":[\"invoke\",\"tom\"]}" -C mychannel
送出鍊碼交易:
> peer chaincode invoke -n myccjs -c "{\"Args\":[\"invoke\",\"tom\",\"mary\",\"100\"]}" -C mychannel -o orderer.example.com
- 在激活鍊碼之前,需要先啟動鍊碼
- 可以随時修改鍊碼或重新運作鍊碼,不需要重新激活
4、使用byfn.win開發應用
在執行
reset
子指令時,會自動生成org1的連接配接配置檔案:
- connection-org1.json
- connection-org1.yaml
Hyperledger Fabric官方提供的SDK可以直接使用上述連接配接配置檔案,
可以根據自己的需要選擇json或yaml格式。
byfn.win官方下載下傳位址:
byfn for windows