在一臺Ubuntu計算機上構建Hyperledger Fabric網路
Hyperledger fabric是一個開源的區塊鏈應用程式平臺,為開發基於區塊鏈的應用程式提供了一個起點。當我們提到Hyperledger Fabric網路時,我們指的是使用Hyperledger Fabric的正在執行的系統。
即使只使用最少數量的元件,部署Fabric網路也不是一件容易的事。Fabric社群建立了一個名為Cello的專案,幫助區塊鏈應用程式開發人員和運營商部署各種規模的Fabric網路。
在本教程中,我們將演示如何使用Cello將具有所有必要元件的小型Hyperledger Fabric(版本1.0.2)網路部署到單個Ubuntu伺服器,以便你可以開始開發基於區塊鏈的應用程式。
學習目標
除了執行Hyperledger Fabric網路外,你還將完成以下任務:
- 為Fabric網路建立覆蓋網路。
- 安裝和配置registrator和DNS服務(這樣Fabric容器可以使用容器名稱而不是IP地址一起工作)。
- 安裝並配置一個節點zookeeper和一個節點kafka叢集來為Fabric orderers提供服務。
- 從兩個不同的組織安裝兩個節點和一個orderer。
- 建立一個頻道並將兩個節點加入該頻道。
- 在兩個節點上安裝一個簡單的鏈程式碼。
- 使用通道例項化鏈程式碼。
先決條件
在本教程中,我們使用VirtualBox,它可以在各種Windows,Mac和Linux作業系統上使用。具體而言,需要以下內容:
- VirtualBox版本5.1.0或更高版本。
- 足夠的記憶體來託管具有至少4GB記憶體的虛擬機器。
預計的時間
完成這個操作方法大約需要一個小時。
步驟
準備你的環境
-
1.要建立一個乾淨的VirtualBox Ubuntu 16.04虛擬機器,你可以下載VirtualBox 和Ubuntu ,自己建立一個新的虛擬機器。或者,你可以使用預製映象 進行此練習,下載後,可以通過選擇檔案->匯入裝置,然後選擇下載的檔案將映象匯入VirtualBox。
-
2.啟動虛擬機器。如果使用預製映象,則使用者名稱為ubuntu,密碼為ps。如果你沒有使用預製映象,那麼使用者名稱和密碼可能會有所不同。
-
3.更改
vars/vb.yml
和vars/vb1st.yml
檔案中的ssh_user
。Cello專案不使用密碼。
安裝依賴項並克隆Cello專案
- 1.從虛擬機器中,執行以下命令。這些命令安裝依賴項,授予當前使用者docker許可權,還可以克隆專案Cello。
sudo apt-get update sudo apt-get install python-dev python-pip libssl-dev libffi-dev docker.io -y sudo pip install 'ansible>=2.3.0.0' sudo gpasswd -a $USER docker cd ~ && git clone https://gerrit.hyperledger.org/r/cello
- 2.設定SSH金鑰對和SSH代理金鑰對登入。
mkdir -p ~/.ssh && cd ~/.ssh && ssh-keygen -t rsa -f fd -P "" cat ~/.ssh/fd.pub >> ~/.ssh/authorized_keys
- 3.登出,重新登入,然後啟動SSH代理。
eval $(ssh-agent -s) && ssh-add ~/.ssh/fd
利用Ansible來支援fabric網路
- 1.建立Ansible執行目錄。
mkdir -p ~/cello/src/agent/ansible/run
-
2.下載與此操作方法相關的模板檔案
,並將其放在
~/cello/src/agent/ansible/run
目錄中。
cd ~/cello/src/agent/ansible/run # the runhosts.tpl file should be here
- 3.執行以下命令以建立runhosts檔案。
cd ~/cello/src/agent/ansible ipaddr=$(ip -4 addr show | awk -F '/' '/inet / {print $1}' | grep -v '127.0.0.1' | awk -F ' ' '{print $2;exit}') sed "s/\$ip/$ipaddr/g" run/runhosts.tpl > run/runhosts
- 4.構建fabric網路
ansible-playbook -i run/runhosts -e "mode=apply env=vb" initcluster.yml --skip-tags="resetconn" ansible-playbook -i run/runhosts -e "mode=apply env=bc2nd" setupfabric.yml
驗證結構網路是否正常執行
- 1.通過發出以下命令驗證所有容器是否正在執行,包括示例輸出。
$ docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}' The results: NAMESSTATUSIMAGE dev-peer1st-mad-firstchaincode-1.0Up 6 minutesdev-peer1st-mad-firstchaincode-1.0-xxxx peer2nd-madUp 7 minuteshyperledger/fabric-peer:x86_64-1.0.2 peer1st-madUp 7 minuteshyperledger/fabric-peer:x86_64-1.0.2 1storderer-sinUp 7 minuteshyperledger/fabric-orderer:x86_64-1.0.2 kafka1stUp 7 minuteshyperledger/fabric-kafka:x86_64-1.0.2 zookeeper1stUp 7 minuteshyperledger/fabric-zookeeper:x86_64-1.0.2 registrator.fabric001Up 15 minutesemail4tong/registrator:v10 skydns.fabric001Up 15 minutesskynetservices/skydns:2.5.3a
- 2.驗證鏈程式碼容器是否正在執行並生成正確的日誌條目。
$ docker logs dev-peer1st-mad-firstchaincode-1.0 The results: ex02 Init Aval = 100, Bval = 200
- 3.查詢鏈碼
成功的鏈程式碼查詢意味著鏈程式碼在節點上部署併成功執行。要在前面的步驟中查詢已安裝和例項化的鏈程式碼,你可以按照以下步驟操作::
$ docker exec -it peer1st-mad bash peer chaincode query -C firstchannel -n firstchaincode -c '{"Args":["query","a"]}' The results: Notice that the time stamp will be different on your machine Query Result: 100 2017-11-09 16:38:11.056 UTC [main] main -> INFO 007 Exiting.....
開發自己的區塊鏈應用程式
隨著你的環境的啟動和執行,你現在可以建立自己的頻道,鏈程式碼和區塊鏈應用程式。如果你需要有關鏈碼的更多資訊以及如何開發鏈碼,你可以閱讀Chaincode教程 。
銷燬Fabric網路
要關閉Fabric網路,請發出以下命令:
ansible-playbook -i run/runhosts -e "mode=destroy env=bc2nd" setupfabric.yml ansible-playbook -i run/runhosts -e "mode=destroy env=vb" initcluster.yml
總結
恭喜。你現在已經將一個包含所有必需元件的小型Hyperledger Fabric網路部署到單個Ubuntu伺服器,因此你可以開始開發基於區塊鏈的應用程式。
區塊鏈程式碼模式 :提供包含詳細文件和視訊的樣本。Hyperledger Fabric :Hyperledger Fabric官方文件。Hyperledger Cello :Cello專案文件。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- tendermint區塊鏈開發詳解 ,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裡是原文在一臺Ubuntu計算機上構建Hyperledger Fabric網路