Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

LAB 2.

TRIỂN KHAI HYPERLEDGER FABRIC VÀ


COMPOSER

A. LÝ THUYẾT: TỔNG QUAN VỀ HYPERLEDGER


Hiện nay blockchain đang là một công nghê đang hứa hẹn mang lại nhiều giải pháp
đột phá trong tất cả các lĩnh vực của đời sống. Cùng với sự phát triển của blockchain,
hàng loạt các nền tảng blockchain ra đời từ Bitcoin, Ethereum…. Lab này sẽ giới thiệu
đến các bạn một nền tảng khá nổi tiếng đó là Hyperledger

1. Khái niệm Hyperledger


Hyperledger là một open source blockchain nền tảng, sở hữu bởi Linux foundation.
Với Hyperledger, Linux Foundation nhằm mục đích tạo ra môi trường để các nhà phát
triển phần mềm phối hợp để xây dựng các framework blockchain. Hyperledger được
contribute bởi rất nhiều hãng công nghệ lớn, nổi bật nhất là IBM.
Khác với các nền tảng blockchain như Bitcoin, Ethereum, Hyperledger không có
cryptocurrency riêng và cũng không có ý định phát triển cryptocurrency
2. Mục đích của Hyperledger
Hyperledger ra đời với mục đích tạo ra một framework mã nguồn mở, sổ cái phân tán
để hỗ trợ các giao dịch business cung cấp cơ sở hạ tầng trung lập, cởi mở được hỗ trợ
bởi cộng đồng công nghệ Giáo dục công chúng về cơ hội thị trường cho công nghệ
blockchain Xây dựng cộng đồng công nghệ để phát riển blockchain và các use cases
POC về blockchain
Hyperledger phát triển một chiến lược gọi là Hyperledger umbrella với nhiều dự án
nền tảng khác nhau

Hình 1. Tiếp cận Hyperledger


 Sawtooth: Một nền tảng blockchain do Intel phát triển, sử dụng thuật toán đồng
thuận Proof of Elapsed Time (PoeT)
 Iroha: Dự án được phát triển với Hitachi, NTT Data, sử dụng thuật toán đồng
thuận Byzantine Fault Tolenrant
 Fabric: Được phát triển bởi IBM, một nền tảng cho phép các components như
thuật toán đồng thuận, membership service có thể dễ dàng plug and play, có thể
thay thế các thuật toán đồng thuận
Hyperledger Fabric sử dụng công nghệ container để lưu trữ các hợp đồng thông minh
được gọi là “chaincode” bao gồm logic ứng dụng của hệ thống
Các loại Tool của Hyperledger Blockchain:
 Cello: Hướng tới cung cấp dịch vụ triển khai trên hệ sinh thái Blockchain
 Composer: Sử dụng để xây dựng hệ thống blockchain trong bussiness. Nhằm mô
phỏng các hoạt động kinh doanh, xây dựng ÁP dữ liệu cho các bên có liên quan, có
thể sử dụng cho Developers để build app.
 Explorer: Thể hiện sự hoạt động của blockchain qua trích xuất các dữ liệu, tương
tự như trang Etherscan...
Hiện nay, Fabric và Composer đang được kết hợp sử dụng nhiều nhất vì tính thực tế
cao.
3. Kiến trúc Hyperledger

Hình 2. Kiến trúc Hyperledger


 Membership : cung cấp các dịch vụ quản lý danh tính, quyền riêng tư, bảo mật và
kiểm toán trên mạng.
 ChainCode: Hyperledger lưu các smartcontract dưới dạng các chaincode (ngôn
ngữ lập trình để phát triển smartcontract), chaincode được sử dụng trong
Hyperledger là golang. Có thể hiểu chaincode là một decentralize application, chạy
trên các nút xác nhận hợp lệ và sử dụng được đóng gói trong các docker
 Blockchain Services: Các dịch vụ Blockchain bao gồm ba thành phần chính: giao
thức peer-to-peer (P2P) dựa trên HTTP / 2, sổ kế toán phân phối và trình quản lý
đồng thuận
 Transactions: Các giao dịch được thực hiện và lưu trữ trên blockchain
4. Membership Service Provider
Đặc điểm của Hyperledger Blockchain là các đối tượng tham gia vào blockchain đã
được xác định ngoài đời thực. Chúng ta sẽ tìm hiểu cách thức để sự định danh đó được
thực thi trên hệ thống Blockchain qua khái niệm về Membership Service Provide
Về đặc điểm quan trọng của Hyperledger Blockchain (Fabric), khác với các open
blockchain như Ethereum hay Bitcoin, các đối tượng tham gia vào Hyperledger Fabric
được chỉ định các quyền khác nhau, tương ứng với nhiệm vụ của đối tượng ngoài thực
tế. Dó đó, chúng ta có khái niệm về Role - chức năng của đối tượng trong hệ thống.
Với mỗi Role có những Access Restrictions (hạn chế truy cập) nhật định. Để làm được
điều đó, chúng ta có khái niệm về Membership Service Provider (Role + Access
Restrictions)

Hình 3. Membership Service Provider

Trong khái niệm Membership:


 Member là mỗi tổ chức, cá nhân có tính pháp lý riêng biệt.
 Sự xác định của member được dựa vào một certificate. Trong đó, member có
private key để kí certificate, người khác dùng public key của member đó để xem
certificate của anh ta có đúng là của anh ta hay không. (Dùng khái niệm key phải
tương tự như trong transaction của bitcoin)
Như vậy nếu giả sử công ty A tham gia vào một Hyperledger network. Công ty A sẽ
có một Certificate của nó, tuy nhiên, công ty A lại có rất nhiều nhân viên, và công ty A
muốn cho nhân viên của mình tham gia vào hệ thống, vậy công ty A sẽ phải cấp cho
mỗi nhân viên một Certificate riêng. Do đó, công ty A phải dùng đến công cụ là
Membership Service Provider.

Hình 4. Certificate và Membership Service Provider


Như vậy trong một mạng Hyperledger Blockchain, nếu có nhiều công ty như công ty
A, ta sẽ có nhiều Membership Service Provider. Ví dụ, trong hình sau, các công ty B,
C cũng có cho mình MSP riêng để cấp cho nhân viên hoặc các cấu trúc trong công ty
họ.
Hình 5. MSP
5. Khái niệm về node trong Blockchain
Node là khái niệm phổ biến trong tất cả các Blockchain hiện nay, các nodes được kết
nối với nhau theo một giao thức nào đó để đảm bảo tính distributed (phi tập trung) của
hệ thống.
Trong open blockchain (Ethereum, Bitcoin...) các node có chức năng ngang nhau. Một
cách tổng quát, thì mỗi node sẽ chứa thông tin của toàn bộ Blockchain, ta chỉ cần kết
nối với một node bất kì có thể thực thi được một số tác vụ như trích xuất thông tin giao
dịch, đăng kí làm node mới, tạo wallet...
Tuy nhiên node trong Hyperledger hoàn toàn khác biệt.

Hình 6. Các node trong Hyperledger


Trong hình trên ta thấy, các node trong Hyperledger cũng tương tác với nhau, mỗi
node lại có một certificate riêng để định danh cho node đó. Người dùng tương tác với
một node bất kỳ thông qua app, người dùng sử dụng certificate của mình để thực hiện
việc tương tác này.

Hình 7. Sự tương tác giữa các node trong Hyperledger


Trong trường hợp, người dùng gửi một giao dịch qua một node mà certificate của nó
không hợp lệ hoặc hết hạn, giao dịch sẽ bị từ chối dù certificate của người dùng chính
xác.
Do đó, các node trong Hyperledger là không ngang hàng nhau. Có 3 loại node chính
trong hệ thống bao gồm:
 Client Nodes: Người dùng sử dụng để tạo ra giao dịch (transaction -txn)
 Peers: dùng để giữ cho dữ liệu đồng bộ trong toàn bộ hệ thống (do các node không
ngang hàng nên cần có peers)
 Orderers: dùng để thực thi, phân phối các giao dịch trong hệ thống.
Hình 8. Các node chính trong Hyperledger
Một member có thể tham gia vào nhiều nhánh trong Hyperledger Blockchain, ví dụ
như công ty A vừa tham gia tổ chức B, lại tham gia hiệp hội C. Khi đó công ty A sẽ
tham gia vào hai nhánh khác nhau dù cho tất cả các công ty khác tham gia B và C đều
tham gia vào Hyperledger. Do đó, một giao dịch A tạo ra trong một nhánh sẽ khác với
giao dịch trong nhánh khác. Điều này dẫn tới sự ra đời khái niệm channel (nhánh/kênh
trong Hyperledger)
6. Khái niệm về Channel.
 Peers kết nối tới channel.
 Mỗi channel/nhánh trong Hyperledger blockchain network sẽ có một Ledger (sổ dữ
liệu) riêng.
Hình 9. Channel trong Hyperledger
Trong hình trên, A,B,C,D,E đều tham gia vào Hyperledger Blockchain. Tuy nhiên, B,
C, E bằng mỗi quan hệ nào đó tạo ra một channel riêng cho chúng. Tại channel này chỉ
B, C, E có quyền biết các thông tin, cũng như lưu trữ dữ liệu liên quan đến chúng.
Tương tự vậy B, C tham gia với A, D để tạo ra một channel khác, lúc này E không thể
tác động vào channel của A, B, C, D. Tại mỗi channel, dữ liệu sẽ là của riêng của các
thành phần tham gia channel đó, việc này được quy định bởi Chain code, một khái
niệm quan trọng sẽ được đề cập sau.
7. Hyperledger Fabric Composer
Như vậy, Framework Fabric và tool Composer là hai thành phần hay được kết hợp
nhất để tạo ra một Bussiness Blockchain có sức mạnh đáng nể.
Composer dùng để tạo ra và quản lý Bussiness Network Application. Comperser nhằm
mục đích đẩy nhanh khả năng phát triển ứng dụng Blockchain của Hyperledger bằng
việc:
 Giảm thời gian thiết kế.
 Đơn giản hóa trong việc thiết lập Blockchain.
 Mô hình hóa tốt các hoạt động Bussiness thực tế.
 Chaincode (tương tự Smart contracts) được viết bằng Javascript nên khá đơn giản.
Việc này hướng tới sự dễ dàng sử dụng, ngay cả đối với người không phải là lập trình
viên như Bussiness Analyst...

Hình 10. Các tool được cung cấp với Hyperledger


Như trong hình ta thấy, Composer có 4 tool cho các đối tượng khác nhau. Các tool này
có gì và sử dụng như thế nào, chúng ta sẽ tìm hiểu trong các bài sau.
Chúng ta sẽ phân tích mối liên kết của 4 đối tượng xuất hiện trong hình trên:
Đầu tiên Business Analyst sẽ xây dựng Bussiness model. Developer sẽ mô phỏng
model đó bằng code javascript trong Chaincode.

Administrators sử dụng tools của mình để deploy (thực thi) Bussiness Network Model
trên môi trường Hyperledger Blockchain. Operator sử dụng tools của mình để đảm bảo
hệ thống do administrators thiết lập vận hành chính xác.
Hình 11. Runtime trong Hyperledger
8. Hyperledger khác gì với Bitcoin và Ethereum?
Trong khi Bitcoin và Ethereum là một Open Blockchain hay Blockchain không
phân quyền, tại đó mọi người có thể giao dịch và lấy dữ liệu từ mọi giao dịch trên hệ
thống.
Hyperledger là một Blockchain có phân quyền, một công ty, tổ chức lớn có nhiều chi
nhánh, đối tượng vận hành và khách hàng sẽ thiết lập hệ thống Blockchain của riêng
họ, nơi mà mỗi người với quyền khác nhau có thể truy cập những dữ liệu khác nhau.
Người không trong hệ thống không thể xem dữ liệu của hệ thống.
9. Ưu điểm của Hyperledger là gì?
 Hyperledger sử dụng công nghệ Blockchain nên mọi thông tin đưa và hệ thống là
an toàn, bảo mật và không thể thay thế bởi bất kì ai (kể cả người có quyền cao nhất
trong hệ thống).
 Sự phân quyền mô tả đúng tính chất vận hành của một tổ chức hay một quá trình
kinh doanh ngoài thực tế.
 Dễ dàng quản lý data và các loại data thiết lập đa dạng hơn so với data của Open
Blockchain.
B. THỰC HÀNH
Triển khai mạng Blockchain Hyperledger Fabric
Tiếp theo chúng ta tìm hiểu cách cài đặt mạng blockchain dùng Hyperledger Fabric
Dưới đây là mô hình 1 mạng blockchain Hyperledger fabric

Hình 12. Mô hình Hyperledger Fabric


Ở mô hình trên, Fabric CA là Fabric Certificate Authority cung cấp authentication cho
các participant trong mạng Hyperledger. Bất kỳ participant nào tham gia mạng
blockchain phải được đăng kí với CA trước. Quá trình này gọi là enrollment. Peer là
các computer node, lưu trữ bản copy của blockchain và thực hiện quá trình consensus.
Ordering service kiêm tra permission của clien, validate các transaction đến từ client.
Chúng ta sẽ cài đặt mạng blockchain này trên môi trường Linux Ubuntu 16.04
1. Yêu cầu
Trước khi cài đặt Hyperledger, cần chuẩn bị môi trường như sau:
 Operating Systems: Ubuntu Linux 14.04 / 16.04 LTS (both 64-bit), or Mac OS
10.12
 Docker Engine: Version 17.03 or higher
 Docker-Compose: Version 1.8 or higher
 Go - 1.7.5 trở lên
 Node: 8.9 or higher (note version 9 is not supported)
 npm: v5.x
 git: 2.9.x or higher
 Python: 2.7.x
 VSCode cho code editor
a. Nâng cấp cập nhật bảo mật mới nhất cho Ubuntu:
sudo apt-get update
sudo apt-get -y upgrade
b. Cài đặt Go 1.15.2
wget https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz
Giải nén thư mục Go 1.15.2
tar -xvf go1.15.2.linux-amd64.tar.gz
sudo mv go ~/
Thiết lập biến môi trường trong Go
Lưu ý khi cài đặt Go, không nên cài đặt Go vào thư mục /usr/ mà nên cài vào thư
mục ~ để tránh việc permission sau này.
Chỉnh sửa file bashrc với vi:
vi ~/.bashrc
export GOPATH=$HOME/go
export GOROOT=$HOME/go
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin
Trường hợp bạn muốn gỡ bỏ Go
sudo apt-get purge golang*
sudo apt-get remove golang-go
sudo apt-get remove --auto-remove golang-go
sudo rm -rf /usr/local/go
sudo rm -rf /usr/lib/go
c. Cài đặt npm và nodejs:
apt install npm
Xóa cache:
sudo npm cache clean -f
Cài package n ở global:
sudo npm install -g n
Update phiên bản npm và nodejs:
sudo n latest
Hoặc cài npm và nodejs bằng NVM:
Có một cách khác để install Node.js Ubuntu là sử dụng NVM (Node Version
Manager). Nhờ vào ứng dụng này bạn có thể chọn một phiên bản Node.js nhất định để
cài đặt. Bạn có thể chọn một bản LTS hoặc bản mới nhất có sẵn để cài.
Tóm lại, các bước để install Node.js phiên bản tùy chọn như sau:
B1. Tải NVM về bằng lệnh wget.
Nếu chưa có wget, chạy lệnh sau:
sudo apt install wget
Sau đó chạy lệnh tải NVM về:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
B2. Phân quyền NVM được dùng bởi user:
Để phân quyền NVM cho một user nhất định, bạn chạy lệnh sau
source ~/.profile
B3. Liệt kê toàn bộ các phiên bản Node.js có sẵn trên NVM.
nvm ls-remote
B4. Chạy lệnh cài đặt một phiên bản Node.js Ubuntu nhất định:
nvm install 8.9.0
Bạn có thể kiểm tra xem bản cài đã thành công chưa bằng cách kiểm tra phiên bản
Node.js đang dùng là gì với lệnh sau:
node -v
Uninstall Node.js trên Ubuntu
Cách 1 – để xóa Node.js, chạy lệnh sau:
sudo apt remove nodejs
Ta có thể upgdate npm lên phiên bản mới nhất
npm i npm@latest -g
Cách 2 – Uninstall Node.js (xóa Node.js) trước và cài đặt lại bằng phương pháp
NVM:
Trước tiên bạn cần vô hiệu Node.js:
nvm deactivate
Sau đó dùng lệnh sau để xóa Node.js.
nvm uninstall v10.15.1
d. Nâng cấp phiên bản git:
B1. Thêm Official PPA được cung cấp bởi GIT
sudo add-apt-repository ppa:git-core/ppa
B2. Cập nhật Repository
sudo apt-get update
B3. Install GIT 2.9.2
sudo apt-get install git

2. Cài đặt Hyperledger Composer


Tạo một thư mục github.com/Hyperledger trong thư mục $GOPATH để clone source
code Fabric:
cd $GOPATH/src
mkdir -p github.com/hyperledger
cd github.com/hyperledger
a. Cài đặt môi trường phát triển
Bước 1: Cài đặt CLI tools
Hyperledger composer cung cấp command line tool để cho bạn thao tác với
Hyperledger, gọi là composer-cli.
Cài đặt composer-cli như sau
npm install -g composer-cli@latest
Cài đặt REST server machine, server này sẽ expose mạng blockchain của bạn
dưới dạng các Restful APIs
npm install -g composer-rest-server@latest
Tạo các applications assets
npm install -g generator-hyperledger-composer@latest
Bạn cần cài đặt yoman để tạo template application source code
npm install -g yo
Nếu xảy ra lỗi khi thực thi
npm ERR! code EMISSINGARG
npm ERR! typeerror Error: Missing required argument #1
Điều đó có nghĩa là hệ thống yêu cầu phiên bản npm và NodeJs cao hơn. Do đó,
bạn phải cập nhật bằng các lệnh:
- Xóa cache: sudo npm cache clean -f
- Cài package n ở global: sudo npm install -g n
- Update phiên bản Nodejs: sudo n latest
b. Thiêt lập IDE
Mặc dù ứng dụng trình duyệt có thể được sử dụng để làm việc trên mã business
network, hầu hết người dùng sẽ thích làm việc trong IDE. Yêu thích của chúng tôi là
VSCode, bởi vì một phần mở rộng Composer có sẵn.
Cài đặt VSCode từ URL: https://code.visualstudio.com/download
sudo apt install ~/Downloads/<file code>.deb
Mở VSCode, phần Extensions, tìm từ khóa Hyperledger Composer từ Marketplace
và cài đặt.
c. Cài đặt Composer Playground
Hyperledeger Composer cung cấp công cụ để xây dựng mạng blockchain network
dưới dạng web gọi là composer-playground. Bạn có thể tự cài đặt composer
playground chạy trên localhost
npm install -g composer-playground@latest
Chú ý là các version của composer phải trùng nhau (nên chọn là latest) việc khác
version có thể sinh ra lỗi sau này
d. Cài đặt Hyperledger Fabric
Bạn download bộ runtime ở đây
https://github.com/hyperledger/composer-tools/tree/master/packages/fabric-dev-
servers
Thực thi lệnh sau để download fabric về
mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers
curl -O https://raw.githubusercontent.com/hyperledger/composer-
tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
tar -xvf fabric-dev-servers.tar.gz
Bây giờ bạn khởi động the Hyperledger fabric
cd ~/fabric-dev-servers
./downloadFabric.sh
export FABRIC_VERSION=hlfv12
./startFabric.sh
Tạo 1 Peer Admin Card với lệnh sau:
./createPeerAdminCard.sh
Trường hợp bị lỗi container thì các bạn làm theo các bước sau đây:
Hiển thị các container đang chạy và đã tắt
docker ps –a
Dừng tất cả các container đang chạy
docker stop $(docker ps –a –q)
Xóa toàn bộ các container đang tồn tại
docker rm $(docker ps -a -q)
Mạng Fabric sẽ được khởi động.
Lệnh createPeerAdminCard sẽ tạo một ID card đặc biệt dùng để administer mạng
Hyperledger fabric, với admin card bạn có permission để install hoặc start một
business network cụ thể
e. Khởi động web app Playground
Để start composer web app Playground chạy lệnh sau
composer-playground
Mặc định composer playground sẽ khởi động ở port 8080, trường hợp bị xung đột
cổng thì bạn dùng lệnh sau để khởi động ở port khác
composer-playground –p 8081
Composer playground được khởi động.

Hình 13. Composer playground trên Ubuntu 16.04 LTS đã được khởi động thành công

C. TÀI LIỆU THAM KHẢO


 https://hyperledger.github.io/composer/latest/installing/installing-prereqs.html
 https://hyperledger.github.io/composer/latest/installing/development-tools.html
 https://hyperledger.github.io/composer/latest/playground/playground-index
 http://www.giaosucan.com/
 https://www.hostinger.vn/

You might also like