I. Giới thiệu

Hyperledger Fabric là dự án blockchain đầu tiên được phát triển và lưu trữ bởi Quỹ Linux. Nó ban đầu được đóng góp bởi Digital Asset và IBM, là kết quả của cuộc thi hackathon đầu tiên. Theo Linux Foundation, nó được dự định là nền tảng để phát triển các ứng dụng hoặc giải pháp DLT với kiến ​​trúc module.

II. Kiến trúc hệ thống

Trong Hyperledger Fabric, bao gồm các thành phần chính như sau:

  • CA: Quản lý mạng blockchain cũng như quản lý quyền hạn của user.
  • PEER: Xác minh các giao dịch và lưu trữ dữ liệu sổ cái.
  • ORDERED: Điều chỉnh transaction và tạo các blocks.

Sự tương quan của các module được thể hiện như trong hình dưới:

  • A: Gửi thông tin transaction đã được yêu cầu.
  • B: Trả lại kết quả chứng thực transaction.
  • C: Cấp phát transaction.
  • D: Gửi yêu cầu cam kết cho các giao dịch đã được liên kết.
  • E: Đang ký người dùng và tạo chữ ký.

III. Mạng Hyperledger Fabric

Hyperledger Fabric là một nền tảng blockchain dành cho tập đoànđoàn và cả sử dụng các nhân. Do đó, việc muốn tham gia vào mạng lưới blockchain thì cần phải có sự cấp phép.

Dưới đây là ví dụ để cấu thành mạng lưới blockchain trong Hyperledger Fabric.

Giả định có 3 công ty. Mỗi công ty có vai trò như sau:

  • Công ty A: Vai trò như quản trị viên.
  • Công ty B: Vai trò như người dùng.
  • Công ty C: Cũng với vai trò người dùng.

① Tạo network

Công ty A với vai trò là quản lý sẽ có nhiệm vụ tạo network. Lúc này A sẽ sử dụng CA server và định nghĩa các chính sách mạng (Network policy).

Trong đó, nội dung chính sách mạng bao gồm:

  • Cấu trúc channel.
  • Quyền hạn của member trong channel.

uc?id=19JG11qK4NSxCPpVrRswjL082jR6cq3D-&export=download

② Thành lập liên hiệp các công ty

Thiết lập các công ty sẽ liên kết với nhau. Như công ty A và công ty B sẽ là một liên hiệp. Công ty A và công ty C sẽ là một liên hiệp.

uc?id=1S30Bd4aAk1iMLnksUKi5ypQLMFU8nBcu&export=download

③ Thiết lập kênh (channel)

Bám sát ví dụng đang nói, thì tiếp theo sẽ cần tạo một kênh, đặt tạm tên là channel 1. Khi tạo channel, chính sách kênh sẽ được gọi bới server CA. Chính sách kênh sẽ định nghĩa công ty nào thuộc kênh này.

Khi đó, các thông tin của kênh này như dữ liệu sổ cái sẽ được Hyperledger Fabric chia sẻ cho các đơn vị công ty thuộc kênh này. Điều này có ý nghĩa về tính bảo mật và quyền riêng tư.

Trong hình bên dưới, nút Peer màu xanh dương (của công ty A) và nút Peer màu xanh lá (của công ty B) sẽ có cùng dữ liệu.

uc?id=1T6XfBQWsVYZ3PY-gKSyqTWMkNJdAl27U&export=download

Tiếp tục việc thêm kênh thứ 2 (channel 2) cũng tương tự như kênh thứ 1. Kênh thứ 2 sẽ là kết hợp công ty A và công ty C.
Hyperledger Fabric quản lý thông tin dữ liệu của mỗi kênh riêng biệt, nghĩa là thông tin của kênh 1 sẽ không được chia sẻ cho kênh 2 và ngược lại.

uc?id=1uMwVA840TUZpFxzwyRoisFBdivKPVv97&export=download

IV. Demo tạo blockchain cho riêng bạn

① Chuẩn bị cần thiết

Hãy đảm bảo bạn đã cài đặt Nodejs rồi.
Sau đó, run những command sau để cài đặt vài tool cần thiết:

$ npm install -g composer-cli
$ npm install -g composer-rest-server
$ npm install -g composer-playground
$ npm install -g yo
$ npm install -g generator-hyperledger-composer

Tiếp đến, cũng cần cài đặt Docker. Vào trang Docker Install tải phiên bản phù hợp với hệ điều hành và cài đặt.

Sau khi cài Docker xong, chạy tiếp các lệnh sau:

$ mkdir ~/fabric-tools && cd $_
$ curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.zip
$ unzip fabric-dev-servers.zip
$ ./downloadFabric.sh

Các bước trên là nhầm mục đích tải xuống gói containers Docker Hyperledger Fabric.

② Tạo dựng mạng lưới riêng

Tạo một mạng lưới cho bạn A mà bạn ấy có thể theo dõi người sở hữu key hay theo dõi việc tạo một key mới.

Đầu tiên chạy command sau:

$ yo hyperledger-composer:businessnetwork

Sau đó sẽ trả lời một vài thông tin như sau:

Welcome to the business network generator
? Business network name: tardis
? Description: Key asset management system for Dr Who
? Author name:  
? Author email: 
? License: Apache-2.0
? Namespace: com.gallifrey.tardis
   create index.js
   create package.json
   create README.md
   create models/com.gallifrey.tardis.cto
   create .eslintrc.yml
   create test/logic.js
   create lib/logic.js

Định nghĩa module riêng để tạo một mạng lưới riêng của mình.
Mở file models/com.gallifrey.tardis.cto và thay thế đoạn code sau:

namespace com.gallifrey.tardis

participant Companion identified by companionId {
  o String companionId
  o String name
}

asset Key identified by keyId {
  o String keyId
  o String owner
}

transaction TransferKey {
  --> Companion companion
  --> Key key
}

Tiếp theo định nghĩa logic cho giao dịch TransferKey. Mở file lib/logic.js và thay thế đoạn code sau:

'use strict';

var NETWORK_NAME = 'com.gallifrey.tardis';
var KEY_ASSET = 'Key';

/**
 * Transfer ownership of a TARDIS key to a fello
 * @param {com.gallifrey.tardis.TransferKey} transferKey
 * @transaction
 */
function onTransferKey(transferKey) {
    var key = transferKey.key;
    var keyFQDN = [NETWORK_NAME, KEY_ASSET].join('.');

    return getAssetRegistry(keyFQDN)
        .then(function(registry) {
            key.owner = transferKey.companion;
            return registry.update(key);
        });
}

Triển khai mạng lưới của mình đến server Hyperledger Fabric.

$ cd ~/fabric-tools/
$ ./startFabric.sh # Khởi động máy chủ fabric
$ ./createPeerAdminCard.sh # Tạo một peer admin user

③ Triển khai

Định nghĩa mạng lưới đã xong và cần chắc chắn rằng máy chủ của bạn vẫn đang hoạt động.

$ composer archive create -t dir -n .

Cài đặt mạng lưới của mình luôn chạy trong peer:

$ composer runtime install --card PeerAdmin@hlfv1 --businessNetworkName tardis

Tiếp theo cần tạo thẻ admin network và deploy file .bna đã được tạo trước đó:

$ composer network start --card PeerAdmin@hlfv1 --networkAdmin admin 
--networkAdminEnrollSecret adminpw --archiveFile tardis@0.0.1.bna --file 
networkadmin.card

Import thẻ admin network vào:

$ composer card import --file networkadmin.card

Kiểm tra mọi thứ đã hoạt động hết chưa:

$ composer network ping --card admin@tardis

Như vậy về cơ bản đã xây dựng được mạng lưới blockchain dựa trên Hyperledger và sử dụng Docker.