在一臺Ubuntu計算機上構建Hyperledger Fabric網絡

Hyperledger fabric是一個開源的區塊鏈應用程序平臺,爲開發基於區塊鏈的應用程序提供了一個起點。當咱們提到Hyperledger Fabric網絡時,咱們指的是使用Hyperledger Fabric的正在運行的系統。php

即便只使用最少數量的組件,部署Fabric網絡也不是一件容易的事。Fabric社區建立了一個名爲Cello的項目,幫助區塊鏈應用程序開發人員和運營商部署各類規模的Fabric網絡。html

在本教程中,咱們將演示如何使用Cello將具備全部必要組件的小型Hyperledger Fabric(版本1.0.2)網絡部署到單個Ubuntu服務器,以便你能夠開始開發基於區塊鏈的應用程序。java

學習目標

除了運行Hyperledger Fabric網絡外,你還將完成如下任務:node

  • 爲Fabric網絡建立覆蓋網絡。
  • 安裝和配置registrator和DNS服務(這樣Fabric容器能夠使用容器名稱而不是IP地址一塊兒工做)。
  • 安裝並配置一個節點zookeeper和一個節點kafka集羣來爲Fabric orderers提供服務。
  • 從兩個不一樣的組織安裝兩個節點和一個orderer。
  • 建立一個頻道並將兩個節點加入該頻道。
  • 在兩個節點上安裝一個簡單的鏈代碼。
  • 使用通道實例化鏈代碼。

先決條件

在本教程中,咱們使用VirtualBox,它能夠在各類Windows,Mac和Linux操做系統上使用。具體而言,須要如下內容:python

  • VirtualBox版本5.1.0或更高版本。
  • 足夠的內存來託管具備至少4GB內存的虛擬機。

預計的時間

完成這個操做方法大約須要一個小時。android

步驟

準備你的環境

  • 1.要建立一個乾淨的VirtualBox Ubuntu 16.04虛擬機,你能夠下載VirtualBoxUbuntu,本身建立一個新的虛擬機。或者,你能夠使用預製鏡像進行此練習,下載後,能夠經過選擇文件->導入設備,而後選擇下載的文件將鏡像導入VirtualBox。git

  • 2.啓動虛擬機。若是使用預製鏡像,則用戶名爲ubuntu,密碼爲ps。若是你沒有使用預製鏡像,那麼用戶名和密碼可能會有所不一樣。程序員

  • 3.更改vars/vb.ymlvars/vb1st.yml文件中的ssh_user。Cello項目不使用密碼。github

安裝依賴項並克隆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:

 NAMES                                STATUS              IMAGE
 dev-peer1st-mad-firstchaincode-1.0   Up 6 minutes        dev-peer1st-mad-firstchaincode-1.0-xxxx
 peer2nd-mad                          Up 7 minutes        hyperledger/fabric-peer:x86_64-1.0.2
 peer1st-mad                          Up 7 minutes        hyperledger/fabric-peer:x86_64-1.0.2
 1storderer-sin                       Up 7 minutes        hyperledger/fabric-orderer:x86_64-1.0.2
 kafka1st                             Up 7 minutes        hyperledger/fabric-kafka:x86_64-1.0.2
 zookeeper1st                         Up 7 minutes        hyperledger/fabric-zookeeper:x86_64-1.0.2
 registrator.fabric001                Up 15 minutes       email4tong/registrator:v10
 skydns.fabric001                     Up 15 minutes       skynetservices/skydns:2.5.3a
  • 2.驗證鏈代碼容器是否正在運行並生成正確的日誌條目。
$ docker logs dev-peer1st-mad-firstchaincode-1.0

 The results:

 ex02 Init
 Aval = 100, Bval = 200
  • 3.查詢鏈碼

成功的鏈代碼查詢意味着鏈代碼在節點上部署併成功運行。要在前面的步驟中查詢已安裝和實例化的鏈代碼,你能夠按照如下步驟操做::web

$ 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項目文檔。

但願儘快學習課程的請訪問Fabric區塊鏈開發詳解,本課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、通道配置與啓動、鏈碼通訊接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操做實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。

======================================================================

分享一些以太坊、EOS、比特幣等區塊鏈相關的交互式在線編程實戰教程:

  • EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
  • java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和交易等內容。
  • 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • ERC721以太坊通證明戰,課程以一個數字藝術品創做與分享DApp的實戰開發爲主線,深刻講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • tendermint區塊鏈開發詳解,本課程適合但願使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。

匯智網原創翻譯,轉載請標明出處。這裏是原文在一臺Ubuntu計算機上構建Hyperledger Fabric網絡

相關文章
相關標籤/搜索