You are on page 1of 9

LAB 4.

TRIỂN KHAI HYPERLEDGER COMPOSER

A. LÝ THUYẾT
Trong Hyperledger Fabric v1.1, các peer thực thi các khái niệm về quản trị viên và
thành viên. Người quản trị có quyền cài đặt Hyperledger Fabric chaincode cho một
mạng lưới kinh doanh mới vào các peer. Các thành viên không có quyền cài đặt
chaincode. Để deploy 1 business network đến các peer, bạn phải cung cấp 1 định danh
có quyền quản trị đến tất cả các peer này.
Để cung cấp danh tính và chứng chỉ trên, bạn phải tạo chứng chỉ PeerAdmin card
và khóa riêng được liên kết với danh tính người quản trị các peer. Hyperledger
Composer cung cấp một mẫu Fabric Hyperledger network v1.1. Người quản trị các
peer cho mạng này được gọi là PeerAdmin và danh tính được tự động chuyển cho bạn
khi bạn sử dụng các tập lệnh mẫu để khởi động mạng.
B. THỰC HÀNH
Trong bài Lab này, ta sẽ deploy mạng lưới kinh doanh blockchain với hyperledger
composer sử dụng Terminal.
1. Xóa các file cũ trước khi khởi động Hyperledger Fabric mới với các lệnh
sau:
cd ~/fabric-dev-servers
export FABRIC_VERSION=hlfv12
./stopFabric.sh
./teardownFabric.sh
./downloadFabric.sh
./startFabric.sh
Bạn xóa tất cả các card (nếu có) trong wallet với lệnh sau:
composer card delete -c PeerAdmin@hlfv1
Nếu các lệnh này không thành công thì có thể bạn đã có card từ một phiên bản trước
và bạn sẽ phải xóa các store lưu trữ card hệ thống với lệnh:
rm -fr ~/.composer
Tạo 1 Peer Admin Card với lệnh sau:
./createPeerAdminCard.sh
Lưu ý: nếu sau khi thực hiện phần 1 và thực hiện các phần tiếp theo cho đến khi kiểm
thử business network bằng playground vẫn bị lỗi thì bạn thực hiện lại các bước sau để
xóa bỏ môi trường phát triển:
Gỡ cài đặt các thành phần
Gỡ cài đặt các công cụ CLI
npm uninstall -g composer-cli composer-rest-server generator-hyperledger-composer
Bước 2: Gỡ cài đặt Playground
npm uninstall -g composer-playground
npm cache clean --force
Bước 3: Xóa nơi lưu trữ business network card
rm -rf ~/.composer
Gỡ cài đặt Hyperledger Fabric
export FABRIC_VERSION=hlfv12
./stopFabric.sh
./teardownFabric.sh
Gỡ cài đặt Hyperledger Fabric runtime cục bộ:
rm -rf ~/fabric-dev-servers
Sau đó, bạn cài đặt lại môi trường phát triển cho Hyperledger Composer (xem lại
Lab 2)
2. Tạo 1 cấu trúc business network
Một trong những khái niệm chính cho Hyperledger Composer là định nghĩa mạng lưới
kinh doanh (BND). Nó xác định mô hình dữ liệu, logic giao dịch và các quy tắc kiểm
soát truy cập cho giải pháp blockchain. Để tạo ra một BND, chúng ta cần phải tạo ra
một cấu trúc dự án phù hợp. Cách dễ nhất để bắt đầu là sử dụng chương trình Yeoman
Generator để tạo ra một mạng lưới trục kinh doanh. Điều này sẽ tạo ra một thư mục có
chứa tất cả các thành phần của một mạng lưới kinh doanh.
a. Tạo một mạng lưới trục kinh doanh bằng cách sử dụng Yeoman. Lệnh này sẽ yêu
cầu tên mạng doanh nghiệp, mô tả, tên tác giả, địa chỉ email tác giả, lựa chọn giấy
phép và không gian tên.
b. yo hyperledger-composer:businessnetwork
c. Nhập thông tin cho tên mạng, ví dụ tutorial-network
d. Nhập mô tả, tên của người khởi tạo và email tương ứng.
e. Lựa chọn license là Apache-2.0.
f. Nhập không gian tên, ví dụ org.example.mynetwork.
g. Chọn No khi được hỏi whether to generate an empty network or not.
3. Định nghĩa 1 business network
Mạng lưới kinh doanh bao gồm tài sản, người tham gia, giao dịch, quy tắc kiểm soát
truy cập và các sự kiện và truy vấn tùy chọn. Trong trục kinh doanh mạng được tạo ra
ở phần trước, có một tập tin model (.cto) sẽ chứa các định nghĩa lớp cho tất cả các tài
sản, người tham gia, và các giao dịch trong mạng lưới kinh doanh. Trục mạng kinh
doanh cũng chứa một tài liệu kiểm soát truy cập (permissions.acl) với các quy tắc
kiểm soát truy cập cơ bản, một tập lệnh (logic.js) tập tin có chứa chức năng xử lý giao
dịch, và một tập tin package.json có chứa siêu dữ liệu mạng kinh doanh.
4. Cấu hình tập tin model: tài sản, người tham gia, và giao dịch
Tài liệu đầu tiên cần cập nhật là tập tin model (.cto). Tập tin này được viết bằng ngôn
ngữ mô hình hóa hyperledger composer. Tập tin model chứa các định nghĩa của từng
lớp tài sản, giao dịch, người tham gia và sự kiện.
a. Mở tập tin model org.example.mynetwork.cto.
b. Thay thế nội dung mặc định trong tập tin model bằng nội dung sau:
/**
* My commodity trading network
*/
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
o String tradingSymbol
o String description
o String mainExchange
o Double quantity
--> Trader owner
}
participant Trader identified by tradeId {
o String tradeId
o String firstName
o String lastName
}
transaction Trade {
--> Commodity commodity
--> Trader newOwner
}
c. Lưu thay đổi tập tin org.example.mynetwork.cto.
5. Cấu hình tập tin JavaScript transaction logic
Trong tập tin model, giao dịch Trade chỉ định mối quan hệ với tài sản và người tham
gia. Tập tin chức năng xử lý giao dịch chứa logic JavaScript để thực hiện các giao dịch
được xác định trong tập tin model.
Giao dịch Trade chỉ đơn giản là chấp nhận mã định danh của tài sản hàng hóa đang
được giao dịch và mã định danh của người tham gia Nhà giao dịch để đặt làm chủ sở
hữu mới.
a. Mở tập tin kịch bản logic.js.
b. Thay thế nội dung mặc định trong tập tin logic.js bằng nội dung sau:
/**
* Track the trade of a commodity from one trader to another
* @param {org.example.mynetwork.Trade} trade - the trade to be processed
* @transaction
*/
async function tradeCommodity(trade) {
trade.commodity.owner = trade.newOwner;
let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
await assetRegistry.update(trade.commodity);
}
c. Lưu thay đổi tập tin logic.js.
6. Cấu hình tập tin Access control
a. Thay thế nội dung mặc định trong tập tin permissions.acl bằng nội dung sau:
/**
* Access control rules for tutorial-network
*/
rule Default {
description: "Allow all participants access to all resources"
participant: "ANY"
operation: ALL
resource: "org.example.mynetwork.*"
action: ALLOW
}

rule SystemACL {
description: "System ACL to permit all access"
participant: "ANY"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
b. Lưu thay đổi tập tin permissions.acl.
7. Khởi tạo tập tin lưu trữ business network
Bây giờ mạng lưới kinh doanh đã được xác định, nó phải được đóng gói vào một tập
tin lưu trữ mạng lưới kinh doanh có thể triển khai (.bna).
1. Sử dụng dòng lệnh, điều hướng đến thư mục tutorial-network .
2. Từ thư mục tutorial-network, thực thi lệnh sau:
composer archive create -t dir -n .
Sau khi lệnh được thực thi, tập tin lưu trữ business network tutorial-
network@0.0.1.bna đã được tạo trong thư mục tutorial-network.
8. Deploying business network
Sau khi tạo tệp .bna, mạng doanh nghiệp có thể triển khai phiên bản Hyperledger
Fabric. Chúng ta cần thông tin từ người quản trị Fabric để tạo ra một card PeerAdmin,
với đặc quyền để cài đặt chaincode. Sau khi mạng doanh nghiệp đã được cài đặt, mạng
có thể được khởi động. Tiếp theo, một card mới nên được tạo ra để quản lý mạng lưới
kinh doanh sau khi triển khai.
Bước 1. Để cài đặt mạng doanh nghiệp, từ thư mục tutorial-network, ta thực thi
lệnh sau:
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-
network@0.0.1.bna
Lệnh composer network install yêu cầu 1 business network card là PeerAdmin và
đường dẫn đến file .bna (file định nghĩa 1 business network).
Bước 2. Để khởi động business network, ta thực thi lệnh sau:
composer network start --networkName tutorial-network --networkVersion 0.0.1 --
networkAdmin admin --networkAdminEnrollSecret adminpw --card
PeerAdmin@hlfv1 --file networkadmin.card
Bước 3. Để import định danh network administrator thành 1 business network
card khả dụng, ta thực thi lệnh sau:
composer card import --file networkadmin.card
Bước 4. Để kiểm tra business network đã được triển khai thành công, ta thực thi
lệnh sau:
composer network ping --card admin@tutorial-network
9. Khởi tạo REST server
Hyperledger Composer có thể tạo ra một REST API dựa trên 1 business network. Để
tạo 1 REST API, bạn chuyển đến thư mục tutorial-network và thực thi lệnh sau:
composer-rest-server
a. Nhập card name: admin@tutorial-network.
b. Chọn never use namespaces khi được hỏi whether to use namespaces in the
generated API.
c. Chọn No khi được hỏi whether to secure the generated API.
d. Chọn Yes khi được hỏi whether to enable event publication.
e. Chọn No khi được hỏi whether to enable TLS security.
API được khởi tạo sẽ được kết nối để triển khai blockchain và business network.
10.Khởi tạo 1 ứng dụng
Hyperledger Composer cũng có thể khởi tạo 1 ứng dụng Angular 4 thực thi với REST
API.
Bước 1. Để tạo ứng dụng Angular 4 của bạn, bạn chuyển hướng đến thư mục
tutorial-network và thực thi lệnh sau:
yo hyperledger-composer:angular
1. Chọn Yes khi được hỏi connect to running business network.
2. Nhập các câu hỏi liên quan đến package.json: project name, description, author
name, author email, license
3. Nhập admin@tutorial-network cho business network card.
4. Select Connect to an existing REST API
5. Nhập địa chỉ REST server: http://localhost.
6. Nhập server port: 3000.
7. Chọn Namespaces are not used
Bộ khởi tạo Angular sau đó sẽ tạo giàn giáo cho dự án và cài đặt tất cả các phụ thuộc.
Để chạy ứng dụng, hãy điều hướng đến thư mục dự án angular của bạn và thực thi
lệnh npm start. Sau khi hoàn thành, bạn có thể truy cập đến ứng dụng tại địa
chỉ http://localhost:4200 .
11.Khởi động Playground, tạo các tài nguyên và kiểm thử
Thực thi composer-playground
composer-playground
Bạn sẽ thấy mạng tutorial-network đã được deploy.
Bấm connect để kết nối vào mạng business network
Tạo danh sách participant:
{
"$class": "org.example.mynetwork.Trader",
"tradeId": "TRADER1",
"firstName": "Jenny",
"lastName": "Jones"
}

{
"$class": "org.example.mynetwork.Trader",
"tradeId": "TRADER2",
"firstName": "Amy",
"lastName": "Williams"
}
Tạo danh sách tài sản:
Xóa nội dung tập tin Asset và thay thế bằng nội dung sau:
{
"$class": "org.example.mynetwork.Commodity",
"tradingSymbol": "ABC",
"description": "Test commodity",
"mainExchange": "Euronext",
"quantity": 72.297,
"owner": "resource:org.example.mynetwork.Trader#TRADER1"
}
Trao đổi hàng hóa giữa những người tham gia
Bây giờ chúng ta có hai nhà giao dịch và một hàng hóa để giao dịch, chúng ta có thể
kiểm tra giao dịch Trade của mình.
Để kiểm thử giao dịch Trade:
Click nút Submit Transaction và đảm bảo loại giao dịch là Trade.
Xóa nội dung trong tập tin và thay thế bằng nội dung sau:
{
"$class": "org.example.mynetwork.Trade",
"commodity": "resource:org.example.mynetwork.Commodity#ABC",
"newOwner": "resource:org.example.mynetwork.Trader#TRADER2"
}
Click Submit.
Kiểm tra tài sản đã được chuyển quyền sở hữu từ TRADER1 đến TRADER2.
Đăng xuất business network
Sau khi giao dịch được thực hiện thành công, bạn có thể đăng xuất bằng cách click vào
phần admin trên góc phải bên trên của website.

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


1. https://hyperledger.github.io/composer/latest/tutorials/developer-tutorial.html
2. https://hyperledger.github.io/composer/latest/tutorials/deploy-to-fabric-single-
org.html
3. https://hyperledger.github.io/composer/latest/installing/uninstall-dev-env
4. https://hyperledger.github.io/composer/latest/tutorials/queries.html
5. https://hyperledger.github.io/composer/v0.19/reference/commands

You might also like