Tải bản đầy đủ (.pdf) (56 trang)

Tìm hiểu về hyperledger fabric và xây dựng ứng dụng minh hoạ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.12 MB, 56 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
---  --BÁO CÁO ĐỒ ÁN MƠN HỌC

ĐỒ ÁN 1

TÌM HIỂU VỀ HYPERLEDGER FABRIC VÀ XÂY DỰNG ỨNG
DỤNG MINH HOẠ
Giảng viên hướng dẫn:
ThS. Nguyễn Công Hoan
Sinh viên thực hiện:
Dương Công Vũ

19521110

TPHCM, 11/2021


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................


.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Mục Lục
I.

GIỚI THIỆU CHUNG .......................................................................................................................... 5
1.

Thơng tin nhóm ................................................................................................................................. 5

2.

Tổng quan về đề tài: .......................................................................................................................... 5
2.1.

Giới thiệu về đề tài .................................................................................................................... 5

2.2.

Phạm vi nghiên cứu................................................................................................................... 5


2.3.

Nội dung nghiên cứu ................................................................................................................. 5

2.4.

Kết quả hướng tới ..................................................................................................................... 5

3.
II.

Công cụ sử dụng ........................................................................................................................... 5
CƠNG NGHỆ BLOCKCHAIN ........................................................................................................ 6

1.

Blockchain là gì?............................................................................................................................... 6

2.

Lợi ích của sử dụng Blockchain........................................................................................................ 7

3.

Những bất cập của các mạng blockchain hiện tại ............................................................................. 8

III.

HYPERLEDGER FABRIC: ............................................................................................................. 9


1.

Giới thiệu về Hyperledger Foundation ............................................................................................. 9

2.

Tổng quan về Hyperledger Fabric .................................................................................................. 10

4.

Cộng đồng sử dụng ......................................................................................................................... 11

5.

Tính năng nổi bật ............................................................................................................................ 11
5.1.

Mạng blockchain phân quyền ................................................................................................. 11

5.2.

Cơ chế đồng thuận linh hoạt ................................................................................................... 12

5.3.

Tính module hố ..................................................................................................................... 12

6.


Kiến trúc và mơi trường cài đặt ...................................................................................................... 13

7.

Khái niệm cơ bản: ........................................................................................................................... 14

IV.
1.

7.1.

Identity .................................................................................................................................... 14

7.2.

Membership Service Provider (MSP) ..................................................................................... 16

7.3.

Policies .................................................................................................................................... 17

7.4.

Peers ........................................................................................................................................ 18

7.5.

Ledger ..................................................................................................................................... 19

7.6.


Ordering Service ..................................................................................................................... 22

7.7.

Smart Contract & Chaincode .................................................................................................. 23

7.8.

Chaincode lifecycle ................................................................................................................. 24

MINIFABRIC ................................................................................................................................. 26
Giới thiệu về Minifabric.................................................................................................................. 26


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ
2.

Các câu lệnh cơ bản ........................................................................................................................ 27
2.1.

Tải mã nguồn từ Github và cài đặt .......................................................................................... 27

2.2.

Khởi chạy ................................................................................................................................ 28

2.3.

Tắt mạng ................................................................................................................................. 29


2.4.

Cài đặt một chaincode ............................................................................................................. 29

2.5.

Sử dụng chaincode .................................................................................................................. 30

2.6.

Truy vấn các khối.................................................................................................................... 31

2.7.

Sửa đổi channel ....................................................................................................................... 32

2.8.

Thêm một tổ chức mới vào mạng ........................................................................................... 32

2.9.

Truy vấn tình trạng của mạng ................................................................................................. 32

2.10.
3.

Khởi chạy Hyperledger Explorer ........................................................................................ 33


Các cài đặt cơ bản ........................................................................................................................... 34
XÂY DỰNG ỨNG DỤNG MINH HOẠ............................................................................................ 37

V.
1.

Giới thiệu ứng dụng minh hoạ ........................................................................................................ 37

2.

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

3.

Dữ liệu trong sổ cái ......................................................................................................................... 40

4.

Các bước tiến hành.......................................................................................................................... 41

VI.

4.1.

Thiết lập các cấu hình cho mạng, channel và chaincode ........................................................ 41

4.2.

Lập trình chaincode................................................................................................................. 42


4.3.

Khởi chạy mạng ...................................................................................................................... 46

4.4.

Sử dụng chaincode .................................................................................................................. 50

4.5.

Lập trình ứng dụng .................................................................................................................. 52

TỔNG KẾT ..................................................................................................................................... 55

1.

Kết quả đạt được ............................................................................................................................. 55

2.

Mục tiêu hướng tới.......................................................................................................................... 55

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


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

I. GIỚI THIỆU CHUNG
1. Thơng tin nhóm
Nhóm gồm 1 thành viên:

-

Thành viên 1
MSSV
Lớp
Email

: Dương Công Vũ
: 19521110
: PMCL2019.1
:

2. Tổng quan về đề tài:
2.1. Giới thiệu về đề tài
Hệ sinh thái Hyperledger và đặc biệt là Hyperledger Fabric đang nhận được sự quan tâm của nhiều
nhà phát triển blockchain trên toàn thế giới. Với mã nguồn mở, khả năng linh hoạt trọng cài dặt và
vận hành, Hyperledger Fabric hiện đang là cơng cụ triển khai mạng blockchain có phân quyền
được ưa chuộng nhất. Cùng với xu thế phát triển của thế giới, các tập đoàn, chỉnh phủ và các cơ
quan đang nỗ lực áp dụng công nghệ blockchain vào giải quyết các vấn đề hiện hành. Với
Hyperledger Fabric, nhà phát triển có thể dễ dàng tiếp cận với cơng nghệ blockchain cũng như xây
dựng các ứng dụng liên quan tới công nghệ này.
2.2. Phạm vi nghiên cứu
Bài nghiên cứu này sẽ tập trung vào các thành phần, các khái niệm cơ bản của Hyperledger Fabric
cũng như các chức năng, nhiệm vụ của mỗi thành phần và phương pháp áp dụng công nghệ này
vào xây dựng mạng blockchain.
2.3. Nội dung nghiên cứu
Nghiên cứu sẽ bao gồm các khái niệm về blockchain, giới thiệu về dự án Hyperledger và
Hyperledger Fabric cùng các thành phần. Ngoài ra cũng đề cập tới Minifabric, một công cụ giúp
vận hành và triển khai mạng Fabric một cách nhanh chóng và ứng dụng Minifabric để xây dựng
một mạng blockchain đơn giản.

2.4. Kết quả hướng tới
- Kiến thức về công nghệ blockchain
- Hiểu được kiến trúc của Hyperledger Fabric
- Sử dụng được các câu lệnh của Minifabric
- Xây dựng thành công mạng blockchain với Minifabric
3. Công cụ sử dụng
- Hyperledger Fabric framework
- Minifabric
- Docker
- IDE Visual code
- Ngơn ngữ lập trình chaincode NodeJs


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

II. CƠNG NGHỆ BLOCKCHAIN
1.
Blockchain là gì?
Từ lâu khái nhiệm blockchain đã trở thành một thuật ngữ quen thuộc trong ngành công nghệ thông
tin cũng như các lĩnh vực khác của đời sống. Các cơng ty, tập đồn thậm chí cả chính phủ đều nỗ
lực áp dụng cơng nghệ blockchain vào các lĩnh vực để tận dụng hiệu suất công việc.
Tuy có nhiều khái niệm phức tạp, nhưng nhìn chung blockchain là một hệ thống lưu trữ dữ liệu
phân tán. Dữ liệu được lưu trữ ở các nhiều nơi máy tính tham gia vào mạng blockchain (gọi là các
node) và được gọi là các sổ cái. Mỗi node giữ một phiên bản của sổ cái và các phiên bản này ln
đồng bộ và giữ được tính thống nhất về dữ liệu.

Sổ cái là nơi lưu trữ dữ liệu hay lịch sử các giao dịch được thực hiện trên mạng blockchain. Các
giao dịch được đóng gói và mã hố một chiều để tạo thành các khối (block) và dữ liệu trên các
block không thể thay đổi trực tiếp mà phải tạo thêm block mới để thay đổi dữ liệu. Các block liên
kết với nhau thông qua việc block sau giữ giá trị mã hoá của block trước tạo thành một sợi xích

vững chãi và rất khó để có thể phá vỡ vì khi thay đổi một block cần phải thay đổi các block ở sau
đã liên kết với nó. Blockchain là nơi lưu trữ thơng tin an tồn vì khi có thể thay đổi thông tin trên
một node, ta cần phải chiếm quyền điều khiển phần lớn các node khác trong mạng lưới để có thể
thay đổi dữ liệu trên sổ cái.
Bên cạnh lợi ích của sổ cái phân tán, blockchain cịn cung cấp các hợp đồng thơng minh. Đây là
một loại chương trình chạy trên mạng blockchain để thao tác với dữ liệu trong sổ cái. Các hợp


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

đồng thơng minh đóng vai trị giống như các hợp đồng nhằm thực hiện các giao dịch tự động và
an tồn thơng qua cơ chế đồng thuận. Cơ chế này giúp giữ cho dữ liệu trong mạng blockchain luôn
thống nhất và đồng bộ bằng cách cần một lượng lớn node tham gia đồng thuận giao dịch thì giao
dịch mới hợp lệ.

2.

Lợi ích của sử dụng Blockchain

Điểm mạnh lớn nhất của blockchain đó là cơng nghệ lưu trữ dữ liệu hiện đại. Khác với các phương
thức lưu trữ trước đây như cơ sở dữ liệu tập trung, sổ sách, giấy tờ, blockchain đem đến cho chúng
ta cách thức lưu trữ an tồn, minh bạch hơn. Sẽ khơng cịn tình trạng giả mạo thông tin giao dịch
khi các giao dịch trong mạng blockchain đều minh bạch và có thể kiểm chứng hay khơng cịn tình
trạng lợi dụng thơng tin khơng đồng bộ để trục lợi do dự liệu trên blockchain luôn đồng bộ.
Do tính ngang hàng của các thành phần trong mạng blockchain nên có thể bỏ qua các bên trung
gian khơng cần thiết nhằm tiết kiệm chi phí và thời gian. Trước đây, khi thực hiện một giao dịch
thường cần bên thứ 3 đứng ra làm chứng, điều này khiến giao dịch trở nên phức tạp và tốn rất
nhiều thời gian, chi phí. Với việc áp dụng cơng nghệ blockchain, các bên liên quan có thể trực tiếp



Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

giao dịch với nhau từ đó tối ưu chi phí. Vd: nhà nơng có thể trực tiếp bn bán với khách hàng mà
không cần thông qua thương lái. Từ đó, nhiều mơ hình kinh doanh được tinh gọn chỉ cịn những
thành phần chính.

3.

Những bất cập của các mạng blockchain hiện tại

Lợi ích của blockchain là rất rõ ràng nhưng bên cạnh đó vẫn cịn tồn tại một số hạn chế khiến việc
áp dụng blockchain vào thực tế còn nhiều khó khăn.
Hệ thống phức tạp: Để cài đặt một mạng blockchain cần một đội ngũ lớn kĩ sư và các chun gia
về blockchain do các cơng nghệ này rất khó tiếp cận và rất đặc thù. Ngoài ra mỗi mạng blockchain
cịn có các quy định về hệ thống riêng biệt, rất khó để đưa ra một quy trình chuẩn.
Kích thước mạng lưới: Một mạng blockchain để hoạt động hiệu quả cần lượng lớn các node tham
gia vào và duy trì hoạt động. Việc này vơ hình chung khiến việc triển khai ứng dụng blockchain
trở nên khó khăn do khơng đủ tài nguyên nội bộ và không thể mở mạng blockchain cơng cộng để
các node bên ngồi tham gia do một số dữ liệu là bảo mật, chỉ lưu hành trong phạm vi cơ quan.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Tính bảo mật và pháp lý: Việc có q ít node trong mạng blockchain cũng gây nên các vấn đề về
bảo mật khi hệ thống có thể bị tấn công dễ dàng thông qua chiếm quyền điều khiển một vài node.
Bên cạnh đó, chưa có các quy định rõ ràng về việc quản lí và thực hiện giao dịch trên mạng
blockchain nên nhiều doanh nghiệp chưa thể triển khai trên nền tảng blockchain.
III. HYPERLEDGER FABRIC:
1.
Giới thiệu về Hyperledger Foundation

“Hyperledger Foundation là một tổ chức phi lợi nhuận cung cấp những tài nguyên và nguồn lực
cần thiết để đảm phát triển hệ sinh thái xung quanh các dự án blockchain mã nguồn mở”. Là một
dự án của Linux Foundation, được bắt đầu phát triển cuối năm 2015, tới nay, dự án Hyperledger
đã nhận được them sự hậu thuẫn từ các ông lớn làng công nghệ như IBM, Intel, SAP Ariba nhằm
hỗ trợ phát triển hệ thống sổ cái phân tán và các ứng dụng liên quan dựa trên công nghệ blockchain.
Mục tiêu của dự án là phát triển công nghệ sổ cái phân tán dựa trên công nghệ blockchain nhằm
hỗ trợ vào các lĩnh vực trong đời sống như tài chính, cơng nghệ, logistics,… Dự án phát đưa ra các
tiêu chuẩn thiết kế và tạo ra các module nhằm vận hành mạng blockchain một cách dễ dàng và
nhanh chóng. Ngồi ra cịn cung cấp các cơng cụ kiểm sốt, quản lí và vận hành mạng lưới
blockchain, các module của dự án được phát triển độc lập nhưng có thể dễ dàng kết hợp với nhau
qua các tiêu chuẩn có sẵn. Qua 6 năm phát triển, cùng với sự đóng góp của cộng đồng và các công
ty hàng đầu về công nghệ, Hyperledger Foundation đã cho ra mắt 4 framework và 6 công cụ hỗ
trợ trọng xây dựng và vận hành mạng lưới blockchain bao gồm:
4 framework lớn đã được ra mắt:
-

Hyperledger Fabric
Hyperledger Iroha
Hyperledger Sawtooth
Hyperledger Besu

6 công cụ hỗ trợ:
-

Hyperledger Caliper: Công cụ đo lường mạng blockchain
Hyperledger Cello: Bộ công cụ phát triển blockchain
Hyperledger Composer: Bộ công cụ xây dựng mạng blockchain cho môi trường
doanh nghiệp
Hyperledger Explorer: Ứng dụng web giúp giám sát mạng blockchain
Hyperledger Quilt: Công cụ vận hành hệ thống blockchain

Hyperledger Ursa: Thư viện mã hoá


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Ngoài ra, đội ngũ vẫn đang phát triển rất nhiều dự án khác, tất cả các dự án của Hyperledger đều
là mã nguồn mở và sẵn sàng nhận sự đóng góp của cộng đồng. Thơng tin các dự án có thể xem
trên trang chủ của dự án.
2.

Tổng quan về Hyperledger Fabric

Được phát triển chính thức bởi IBM và Digital Asset, Hyperledger Fabric hiện là nền tảng
blockchain được sử dụng rộng rãi nhất bởi các doanh nghiệp lớn. Hyperledger Fabric được thiết
kế như nền tảng để từ đó phát triển các ứng dụng, giải pháp theo hướng module hoá. Tất cả các
thành phần gồm sổ cái, hợp đồng thông minh, các node đều có thể dễ dàng kết hợp với nhau để
tạo nên mạng blockchain. Hyperledger Fabric đang là công nghệ sổ cái phân tán và blockchain
được sử dụng rộng rãi nhất hiện nay.
Là một dự án thành lập bởi Linux Foundation (một tổ chức đã có nhiều năm phát triển các dự án
mã nguồn mở), Hyperledger Fabric hứa hẹn sẽ còn phát triển mạnh mẽ hơn nữa. Hiện nay đã có
35 tổ chức và hơn 200 nhà phát triển đã đóng góp vào mã nguồn của Hyperledger Fabric.
Sự linh hoạt và dễ sử dụng hơn hầu hết các công nghệ blockchain hiện giờ như Ethereum, NEO,…
đã giúp công nghệ này được sử dụng trong nhiều lĩnh vực khác nhau như nơng nghiệp, vận tải,
giáo dục, hành chính, bảo hiểm, y tế… và cả phát hành nhạc kỹ thuật số.
Tuy vậy, Hyperledger vẫn là một công nghệ cấp độ doanh nghiệp, nghĩa là cần một đội ngũ phát
triển giỏi và dày dặn kinh nghiệm thì mới có thể thiết kế ra một mạng blockchain hồn chỉnh.
3.

Lịch sử hình thành và phát triển


Được ra mắt từ năm 2015 và ra bản alpha release (1.0) vào giữa năm 2016, Hyperledger fabric
được xem như là dự án cốt lõi của dự án Hyperledger. Phiên bản mới nhất thời điểm viết báo cáo
là v2.3.3 ra mắt ngày 2/9/2021. Github của dự án đã tiếp nhận hơn 13.900 commit từ hơn 200 nhà
phát triển.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Qua những phiên bản cập nhật, Hyperledger ngày càng được bổ sung nhiều tính năng hơn, hỗ trợ
nhiều cơng cụ hơn giúp lập trình viên dễ dàng tiếp cận và phát triển ứng dụng. Hiện Hyperledger
Fabric đã cho phép sử dụng các ngơn ngữ lập trình thơng dụng như Java, Go, Node.js để viết mã
nguồn hợp đồng thông minh (smart contract) thay vì sử dụng ngơn ngữ riêng như các công nghệ
khác. Việc này giúp đội ngũ phát triển tiết kiệm được thời gian và công sức khi phát triển ứng
dụng blockchain với Hyperledger Fabric.
Cùng với sự hỗ trợ tích cực từ mặt cơng nghệ, Hyperledger Fabric cũng như Hyperledger
Foundation đã xây dựng được một cộng đồng nhà phát triển trên tồn thế giới để có thể hỗ trợ,
giúp đỡ lẫn nhau.

4.

Cộng đồng sử dụng

Đối tượng sử dụng Hyperledger Fabric chủ yếu là các doanh nghiệp, tập đoàn lớn trên thế giới. Họ
muốn xây dựng ứng dụng blockchain để giải quyết các vấn đề của doanh nghiệp nhưng việc phát
triển dựa trên các công nghệ blockchain khác hiện giờ mất rất nhiều thời gian và công sức nên
Hyperledger Fabric ln là lựa chọn hàng đầu. Một số tập đồn lớn đang triển khai Hyperledger
Fabric như: Walmart, British Columbia, Sony, Paypal,… (nguồn)

5.
5.1.


Tính năng nổi bật
Mạng blockchain phân quyền


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Không giống với những công nghệ blockchain công cộng không phân quyền, Hyperledger Fabric
hướng tới đối tượng người dùng là các tập đoàn, tổ chức lớn nên việc các thành phần trong mạng
blockchain cần phải được phân quyền và nhận biết lẫn nhau là điều cực kì quan trọng. Hiện nay,
đa số các mạng blockchain lớn như Bitcoin, Ethereum, các thành phần tham gia mạng đều ẩn danh,
nghĩa là tất cả đều hồn tồn khơng đáng tin cậy khi các bên có thể tự do tham gia vào mạng lưới
nhằm mục đích xấu như hacker hay cơng ty đối thủ. Hyperledger Fabric cho phép xây dựng một
mạng lưới được quản trị, vận hành mà trong đó có “niềm tin” giữa các bên liên quan nhưng vẫn
giữ được những đặc tính của cơng nghệ blockchain.
Các thành phần tham gia mạng blockchain bởi Hyperledger Fabric đều được chứng thực và cấp
quyền truy cập vào một số tài nguyên giới hạn qua cơ chế Identify và được quản lí bởi Membership
Service Provider (MSP). Dữ liệu nội bộ quan trọng của doanh nghiệp như hợp đồng thanh tốn,
lịch sử giao dịch sẽ khơng bị lộ ra ngoài. Các dao dịch (transaction) chỉ được lưu hành nội bộ nên
chỉ các bên thực sự liên quan mới có thể xác minh giao dịch. Các giao dịch, hành động trong mạng
đều có thể định danh tác nhân gây ra, khác với những mạng blockchain ẩn danh hiện nay.
5.2.

Cơ chế đồng thuận linh hoạt

Một trong những điểm khác biệt nổi bật của Hyperledger Fabric so với các công nghệ blockchain
khác là cơ chế đồng thuận linh hoạt. Cho phép nhà phát triển lựa chọn cơ chế đồng thuận phù hợp
với quy mô ứng dụng đang phát triển nhằm tránh lãng phí và tăng hiệu quả hoạt động. Hiện nay
có 2 cơ chế đồng thuận nổi tiếng cho công nghệ blockchain là “crash fault-tolerant (CFT)” và
“byzantine fault tolerant (BFT)”. Nếu nhà phát triển đang xây dựng ứng dụng cho một doanh

nghiệp hay được vận hành bởi một bên đáng tin cậy thì việc áp dụng BFT là khơng cần thiết, lúc
này có thể dễ dàng thay đổi cơ chế đồng thuận sang CFT mà không cần thay đổi những thành phần
khác.
Ngoài ra, Hyperledger Fabric cho phép sử dụng giao thức đồng thuận khơng u cầu năng lực tính
tốn để xác minh giao dịch như cơ chế Proof-of-Work (PoW) của blockchain. Việc khơng u cầu
năng lực tính tốn lớn giúp tiết kiệm tài nguyên và tránh các rủi ro từ các cuộc tấn cơng nằm tận
dụng năng lực tính tốn của số đơng máy tính để thay đổi nội dung được lưu trữ trong mạng lưới.
5.3. Tính module hố
Hyperledger Fabric được thiết kế theo hướng module hoá, các thành phần và cơng cụ đều có thể
dễ dàng cài đặt và tương tác với nhau. Mỗi module có một chức năng riêng và có thể dễ dàng cài
đặt, thay thế. Điều này giúp nhà phát triển linh hoạt hơn trong việc lựa chọn và thiết kế hệ thống
để phù hợp với nhu cầu của doanh nghiệp. Framework này cung cấp những module cơ bản sau:
-

Ordering service: Thu thập sự đồng thuận của giao dịch rồi tổng hợp nhiều giao
dịch lại thành khối và thêm vào sổ cái.
Membership Service Provider: Chịu trách nhiệm cho việc tổ chức, quản lí các
thành phần trong mạng lưới với thông tin định danh được mã hoá.
Peer-to-peer gossip service: Phân tán khối được tạo ra bởi ordering service cho
các peer


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

-

-

6.


Smart contracts: Mỗi hợp đồng thông minh đều được vận hành riêng biệt bằng
các container, có thể thêm mới, cập nhật hay xố bỏ một hợp đồng thơng minh
trên mạng lưới mà không làm ảnh hưởng tới các thành phần khác.
Database manage system: Có thể linh hoạt sử dụng các hệ quản trị cơ sở dữ liệu
khác nhau để lưu trữ trạng thái của sổ cái.
Endorsement & Policy: Các quy định về xác thực, đồng thuận được cấu hình
độc lập cho các ứng dụng mà không làm ảnh hưởng tới hệ thống chung.

Kiến trúc và môi trường cài đặt

Blockchain là một hệ thống phân tán (distributed system) bao gồm các node, kết nối với nhau qua
mạng ngang hàng (peer-to-peer network). Được vận hành bằng tập các hợp đồng thông minh
(smart contract) gọi chung là chaincode. Chaincode có chức năng xử lí dữ liệu, trạng thái của sổ
cái và tạo nên các giao dịch. Mỗi giao dịch (transaction) được tạo ra cần phải “đồng thuận”
(endorsed) bởi các node và sẽ được các orderer xử lí vào tạo thành khối (block) sau đó lưu vào sổ
cái (ledger) và cập nhật trạng thái (state).
Thành phần chính của mạng blockchain tạo bởi Hyperledger Fabric bao gồm:
-

Membership Service Provider (MSP)
Client
Peer
Orderer

Hình trên là cấu tạo cơ bản của một mạng blockchain do 3 tổ chức tham gia (R0, R1, R2). Các
thiết lập, cài đặt cho mạng được chứa trong CC1 (channel configuration 1) cũng là một loại


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ


chaincode. Tồn tại một kênh C1 (channel 1) đại diện cho một mạng nội bộ mà các tổ chức với
nhau. Một network có thể chứa nhiều channel và các channel này độc lập, chỉ có những node nào
tham gia vào kênh thì mới có thể tương tác với dữ liệu và các chaincode trong kênh. Hiện channel
1 đang có 2 peer tham gia P1, P2 đại diện cho R1, R2 và R0 vận hành orderer node.
Tất cả các node đều chứa một phiên bản của sổ cái (do blockchain là công nghệ phân tán nên mỗi
node giữ một bản copy của sổ cái). Các sổ cái này được ánh xạ thành các trạng thái (state) và được
lưu trữ bởi một cơ sở dữ liệu (state database) để có thể dễ dàng truy suất. Chỉ duy nhất phiên bản
sổ cái của order node không chứa các sate do không cần thiết.
Các A1, A2 là các ứng dụng (application) của các tổ chức dùng để tương tác với channel. Để có
thể tương tác với mạng blockchain, các node, application và tổ chức có các chứng thực (certificate
authority) được tạo ra nhằm định danh và phân quyền trong mạng blockchain.
Khi người dùng tương tác qua ứng dụng được lập trình với bộ công cụ do Hyperledger Fabric đưa
ra (Fabric SDK), các giao dịch sẽ được gửi tới tất cả các peer có chức năng chứng thực giao dịch
(có thể quy định trong Endorsing policy). Các node này xác minh giao dịch tạo ra một output dựa
trên sổ cái mà node nắm giữ và gửi về cho ứng dụng. Ứng dụng lúc này thu thập các phản hồi từ
các node chứng thực và đóng gói, gửi tới node orderer. Orderer lúc nãy sẽ tổng hợp và, so sách
các kết quả với nhau. Nếu đa số các node đều chứng thực thành công giao dịch, orderer sẽ tạo ra
một block và gửi tới tất cả các node trong kênh để cập nhật vào sổ cái của các node.

Vì các thành phần của Hyperledger Fabric chạy bên trong các container nên có thể chạy trên các
hệ điều hành hỗ trợ Docker như Windows, MacOS, Ubuntu và dịch vụ máy ảo như EC2 hay hệ
thống quản lý container như Kubernets.
7.
7.1.

Khái niệm cơ bản:
Identity

Với tất cả các thành phần trong mạng blockchain gồm peers, orderer, application,… và kể cả những
thành phần bên ngoài mạng muốn tương tác với mạng đều cần phải có một chứng chỉ định danh,

và Hyperledger Fabric đang sử dụng chữ kí số X.509 digital certificate (một tiêu chuẩn chứng chỉ


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

khố cơng khai của Liên minh viên thơng Quốc Tế). Việc định danh các thành phần rất quan trọng
vì trong một mạng phân quyền, các nguồn tài nguyên và dữ liệu phải được cấp quyền thì mới có
thể truy cập và thao tác. Việc định danh còn giúp xác Fabric xác định quyền hạn, các thuộc tính
của thành phần và tổ chức vận hành thành phần đó.

Các chứng chỉ phải được xác minh bởi một bên đáng tin cậy và Hyperleger Fabric có một module
làm việc đó là Membership Service Provider (MSP), module này sẽ xác định các quyền hạn của
một chứng chỉ.
Một chứng chỉ kỹ thuật số (digital certificate) theo tiêu chuẩn X.509 sẽ bao gồm các thuộc tính
giúp định danh một thành phần. Các thành phần quan trọng bao gồm “subject” và “public key”.
Subject sẽ chứa các thông tin cơ bản về đối tượng được chứng thực như tên, địa chỉ, userID,… và
public key dùng để kiểm tra độ chính xác của dữ liệu trong chứng chỉ. Ngoài ra để tạo ra một
chứng chỉ kỹ thuật số cần thêm một khố bí mật (private key) dùng để mã hoá dữ liệu trong chứng
chỉ.
Hyperledger Fabric cung cấp một module giúp tạo ra các chứng chỉ kỹ thuật số cho các tổ chức và
thành phần tham gia vào mạng gọi là Certificate Authority. Nếu một tác nhân đền từ mơt tổ chức
muốn tương tác với mạng blockchain thì ít nhất phải có một chứng chỉ kỹ thuật số nên có thể nói
tổ chức đó cần có cần ít nhất một Certificate Authority được cài đặt trong hệ thống để cấp chứng
chỉ cho các thành phần của tổ chức. Và việc cài đặt Fabric CA rất dễ dàng khi Hyperledger cung
cấp một Docker image để làm việc này.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

7.2.


Membership Service Provider (MSP)

Như đã đề cập ở phần Identity, các chứng chỉ tạo ra bởi Certificate Authority cần một nơi để xác
thực là MSP. Mỗi thành phần trong mạng blockchain đều có một MSP đi kèm để xác thực chứng
chỉ từ các thành phần khác. MSP sẽ xác nhận xem chứng chỉ đang sử dụng được phép truy cập tài
nguyên hay thực hiện hành động nào đó.
Cơ chế hoạt động của MSP tương tự như một kho lưu trữ các public key của các thành phần khác
trong hệ thống. Để xác minh một giao dịch hay hành động từ đâu tới và có thơng tin dữ liệu có bị
thay đổi trong q trình truyền khơng thì MSP sẽ tra cứu public key và sử dụng để xác minh thơng
tin.

MSP có 2 loại chính trong mạng blockchain bao gồm:
-

Local MSP bên trong một node
Channel MSP bên trong một channel

Local MSP được sử dụng cho các thành phần của tác nhân như ứng dụng, peer, orderer,… có tác
dụng phân quyền bên trong các node (vd: Peer nào là admin và có quyền điều hành node, ứng dụng
được phép thực hiện giao dịch hay không,…). Tất cả các node tham gia vào mạng blockchain cần
phải có local MSP được cài đặt để có thể vận hành node, cài đặt chaincode và sử dụng các hợp
đồng thông minh. Local MSP được tổ chức dưới dạng file và folder để chứa thông tin về các thành
phần.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Channel MSP dùng để xác minh các thành phần trong hệ thống ở mức độ channel. Các peers,
nodes và ứng dụng cho dù thuộc các tổ chức khác nhau nhưng đều ngang hàng trong kênh nên khi

một tổ chức tham gia vào channel, ngồi việc cần có local MSP để định danh các thành phần nội
bộ thì thơng tin của các thành phần đó cũng cần được khai báo bên trong channel MSP. Nếu không
các giao dịch và yêu cầu từ các thành phần đấy sẽ không hợp lệ. Channel MSP được tổ chức dưới
dạng file config, bao gồm các tổ chức tham gia và thành phần của các tổ chức đó.

7.3.

Policies


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Policies sẽ đóng vai trị như quyển sách luật, định nghĩa các điều khoản cần tuân theo trong mạng
blockchain. Vd: Cần bao nhiều tổ chức đồng thuận để tạo mới một block, mỗi giao dịch sẽ tạo
block như thế nào hay các tổ chức nào được chỉ định để đồng thuận thêm mới một hợp đồng thông
minh vào mạng blockchain. Có thể nói tất cả mọi thứ trong mạng blockchain vận hành bởi các
điều khoản quy định trong policy.
Không giống như các mạng blockchain khác như Bitcoin hay Ethereum khi mà giao dịch được tạo
ra và xác minh bởi bất kì node nào trong mạng, Hyperledger Fabric là một mạng blockchain được
phần quyền và policy giúp hiện thực điều đó. Policy đưa ra các quy tắc về vận hành mạng lưới,
giới hạn các tài nguyên và hành động một node có thể thực hiện, đưa ra quy tắc về đồng thuận khi
thêm hoặc sửa các thành phần trong mạng lưới (channel, organization, chaincode,…). Khi một
giao dịch diễn ra, policy sẽ thu thập các chữ ký số và xác nhận xem thành phần tham gia có đúng
với các quy tắc đã được cài đặt trước đó để xác định giao dịch hợp lệ.
Các điều khoản sẽ được quy định trong các miền cụ thể liên quan tới hành động đó. Vd: điều khoản
về thêm mới một peer nằm trong phần quản trị của tổ chức - nhóm Application. Các quy định sẽ
được định nghĩa trong file “configtx.yaml” và hoàn toàn có thể chỉnh sửa khi hệ thống đã đi vào
hoạt động.

7.4.


Peers


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Peer là các thành phần cơ bản tạo nên mạng blockchain vì nó chứa sổ cái và các hợp đồng thông
minh nên khi ứng dụng muốn thao tác với dữ liệu thì cần tương tác thơng qua các peer. Một peer
có thể chứa nhiều sổ cái và chaincode khác nhau nếu peer tham gia vào nhiều hơn một channel.
Mỗi tổ chức tham gia mạng có thể có nhiều hơn một peer đóng vai trị khác nhau.
Khi một ứng dụng tương tác với peer, peer sẽ trả về dữ liệu ứng dụng yêu cầu dựa trên kết quả của
việc khởi chạy chaincode với sổ cái tương ứng. Và ứng dụng sẽ yêu cầu orderer xác minh giao
dịch bằng cách so sánh kết quả của hành động tương tự trên các peer khác trong hệ thống, nếu các
peer đều cho ra kết quả giống nhau thì giao dịch hợp lệ và order tạo ra một block sau đó gửi tới
các peer để cập nhật lại sổ cái.

7.5.

Ledger

Giống như các mạng blockchain khác, Hyperledger Fabric blockchain có các sổ cái phân tán để
lưu trữ dữ liệu. Các sổ cái này sẽ được lưu trữ trên các peer khác nhau và mỗi khi có thay đổi thì
sẽ thay đổi trên tất cả sổ cái ở các peer để giữ cho dữ liệu luôn thống nhất. Sổ cái của Fabric được
chia làm 2 phần riêng biệt là blockchain và world state.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

World state là một hệ cơ sở dữ liệu lưu trữ trạng thái hiện tại của dữ liệu. Dữ liệu được lưu trữ
dưới dạng key – value giúp các ứng dụng truy cập dữ liệu hiện tại một cách nhanh chóng thay vì

duyệt qua tất cả các transaction. Dữ liệu của world state được lưu trữ trong một cơ sở dữ liệu phi
quan hệ (noSQL) và nhà phát triển có thể thay đổi hệ quản trị cơ sở dữ liệu để phù hợp với mục
đích. Khi một transaction làm thay đổi dữ liệu trên blockchain được xác minh là hợp lệ, dữ liệu
mới sẽ được cập nhật lên world state. Dữ liệu được lưu trữ kèm version tương ứng với lịch sử cập
nhật của blockchain để có thể truy vấn lịch sử thay đổi của dữ liệu.

Blockchain lưu lại toàn bộ lịch sử các giao dịch và các thay đổi dẫn đến giá trị hiện tại được lưu
trữ ở world state. Các giao dịch này được thu thập và đóng gói lại thành các block và các block
này được liên kết với nhau tạo thành blockchain. Dữ liệu của các transaction là khơng thể thay đổi
vì khi thay đổi thì làm thay đổi giá trị của block. Các block liên kết với nhau thông qua mã hash
của block trước trong header, ngồi ra header cịn chứa giá trị hash của các giao dịch diễn ra trong
block. Việc liên kết giữa các block giúp nâng cao tính bảo mật và khiến blockchain gần như không


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

thể bị thay đổi. Không phải một database như world state, blockchain được lưu dưới dạng file. Có
một block gốc (genesis block) không chứa bất cứ giao dịch nào do được tạo ra trong quá trình khởi
tạo mạng blockchain.

Block được tạo ra bởi ordering service bằng cách tổng hợp các giao dịch vào một khối và thêm
vào blockchain. Cấu tạo của block trong Hyperledger Fabric tương đối giống với block trong các
mạng blockchain khác bao gồm header, data và meta data.

Header bao gồm số thứ tự của block, hash của block hiện tại và hash của block kế trước và header
được mã hoá thành một chuỗi hash. Data bao gồm các giao dịch tổng hợp bởi order service và
meta data chứa chữ ký số dùng để xác minh và một số thông tin liên quan khác.
Cấu tạo của một transaction bao gồm:
-


Header: chứa thông tin liên quan tới transaction như tên chaincode, phiên
bản,…


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

-

7.6.

Signature: một chữ ký số tạo bởi application để kiểm tra tính tồn vẹn của giao
dịch
Proposal: dữ liệu input truyền vào chaincode. Được truyền lên bởi application
và sử dụng bởi chaincode
Response: chứa thông tin dữ liệu trước và sau khi chaincode được chạy
Endorsements: chứa response của transaction thực hiện bởi các peer được chỉ
định để xác minh giao dịch. Nếu các response này giống nhau thì giao dịch hợp
lệ và nếu tồn tại dữ liệu khác thì giao dịch không hợp lệ

Ordering Service

Như đã đề cập ở các phần trên, các giao dịch trên mạng blockchain cần có một nơi để tổng hợp và
tổng hợp và tạo thành các block và gửi tơi các peer trong hệ thống. Ở các mạng blockchain phân
tán khác, bất kì node nào cũng tham gia vào quá trình đồng thuận để xác minh giao dịch, tạo block
và cập nhật sổ cái. Việc đó dần dần gây nên hiện tượng một lượng lớn các node tạo ra phiên bản
mới của sổ cái từ đó bắt buộc mạng blockchain phải phân tách thành 2 mạng khác nhau gọi là hiện
tượng fork. Hyperledger cung cấp tính năng ordering service nhằm tạo ra các order node đóng vai
trị xử lí q trình đồng thuận cho giao dịch. Việc tập trung quy trình đồng thuận tại ordering node
giúp sổ cái trên các peer luôn thống nhất và hiện tượng fork không thể xảy ra.



Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

7.7.

Smart Contract & Chaincode

Cùng với sổ cái (ledger), hợp đồng thơng minh (smart contract) hình thành nên cốt lõi của một
mạng blockchain. Sổ cái chịu trách nhiệm lưu trữ dữ liệu thì các hợp đồng thơng minh đóng vai
trị như các chương trình được tạo ra để quản lý việc lưu trữ, xử lý dữ liệu trên sổ cái. Trong
Hyperledger Fabric có thêm một khái niệm là chaincode tập hợp các smart contract liên quan được
đóng gói và triển khai lên mạng blockchain. VD: Tập hợp các smart contract liên quan tới xe cộ
được định nghĩa và tạo thành một chaincode.

Một smart contract có thể thực hiện các hành động get, put, delete đối với dữ liệu trong sổ cái. Khi
tạo ra một transaction thay đổi nội dung trên sổ cái, smart contract tác động đến cả 2 phần của sổ
cái bao gồm world state và blockchain. Hyperledger Fabric smart contract được lập trình với nhiều
ngơn ngữ lập trình thơng dụng như Java, NodeJS, Go. Ngồi các chaincode liên quan tới dữ liệu
trong sổ cái, các smart contract liên quan tới cấu hình, khởi tạo hệ thống cũng gom lại thành system
chaincode. Và các chaincode được triển khai trên các Docker container riêng biệt, giúp nhà phát
triển dễ dàng quản lý và chỉnh sửa các chaincode một cách độc lập.


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Một điều rất quan trọng đối với một chaincode để có thể thực hiện được các hành động là các quy
định về chứng thực. Nghĩa là đối với các hành động của chaincode cần có một hay nhiều bên “ký”
xác nhận rằng hành động hợp lệ và có thể tiếp tục thực hiện. VD: Thực hiện mua bán xe cần có
“chữ ký” xác nhận của bên bán, bên mua và bên bảo hiểm. Các quy định liên quan tới quy định về
chứng thực liên quan tới chaincode sẽ được quy định trong phần Policy. Điều này giúp các giao

dịch trong Hyperledger Fabric giống với thực tế hơn khi được chứng thực bởi các bên thực sự liên
quan chứ không phải các node ngẫu nhiên như các mạng blockchain khác.
Một khi được gọi từ các ứng dụng, smart contract sẽ chạy trên peer node của tổ chức đó. Ứng dụng
gọi smart contract kèm các tham số đầu vào (transaction proposal) để xác định smart contract nào
được gọi và dữ liệu đầu vào của hàm là gì. Smart contract sẽ sử dụng các tham số đó để thao tác
với sổ cái, đưa ra các response. Các response này sẽ được gửi lại cho ứng dụng để yêu cầu chứng
thực tới orderer. Dữ liệu của world state và blockchain sẽ không thay đổi ngay khi smart contract
được khởi tạo mà chỉ thực sự thay đổi khi nhận được thông tin chứng thực thành công từ ordering
service.

7.8.

Chaincode lifecycle


Tìm hiểu về Hyperledger Fabric và xây dựng ứng dụng minh hoạ

Ở phần trước chúng ta đã tìm hiểu về khái niệm chaincode và smart contract và cách thức hoạt
động, phần này sẽ trình bày về vịng đời của một chaincode, từ bước khởi tạo tới bước triển khai
trên mạng blockchain của Hyperledger Fabric.
Khi một tổ chức khởi tạo một chaincode, Fabric yêu cầu các tổ chức khác tham gia mạng
blockchain cần thống nhất về tên, phiên bản và chính sách về chứng thực của chaincode đó thơng
qua 4 bước (thực hiện trên peer node của mỗi tổ chức):
-

-

-

-


Đóng gói chaincode: chaincode sẽ được đóng gói thành các tệp .tar.gz chứa file
metadata.json chứa các thông tin liên quan tới ngôn ngữ, đường dẫn,… và file
code.tar.gz chứa source code.
Cài đặt chaincode trên peer: chaincode cần được cài đặt trên tất cả các peer
dùng để khởi tạo cũng như chứng thực giao dịch. Q trình cài đặt thành cơng
sẽ tạo ra một mã định danh dành cho chaincode và sẽ trả về lỗi nếu cài đặt không
thành công.
Phê duyệt thông tin của chaincode: trước khi chaincode có thể sử dụng, các tổ
chức thành viên của channel cần thống nhất về thông tin của chaincode bao
gồm:
o Name: tên của chaincode
o Version: phiên bản của chaincode
o Sequence: số lần chaincode được cài đặt
o Endorsement Policy: quy định về tổ chức cần để xác thực giao dịch
o Collection Configuration: thông tin liên quan tới dữ liệu nhạy cảm
(Private data)
o Package Identifier: output của quá trình cài đặt chaincode
o Initialization: thông tin về hàm khởi tạo (không bắt buộc)
o ESCC/VSCC plugins: thông tin về plugin chứng thực và xác thực sử
dụng nếu có
Thêm thơng tin về chaincode vào channel: sau khi đat được một số lượng đủ
các tổ chức chứng thực thông tin của chaincode, một tổ chức sẽ tiến hành thêm
thông tin chaincode vào channel và sau khi quá trình thêm được chứng thực bởi
các node khác, chaincode đã được thêm vào channel và có thể sẵn sàng để khởi
chạy.


×