Tải bản đầy đủ (.docx) (76 trang)

ứng dụng cung cấp chứng chỉ trên nền tảng blockchain

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 (2.14 MB, 76 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ỨNG DỤNG CUNG CẤP CHỨNG CHỈ TRÊN NỀN
TẢNG BLOCKCHAIN
KHÓA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY
Ngành: Hệ Thống Thông Tin

HÀ NỘI – 2020


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

ỨNG DỤNG CUNG CẤP CHỨNG CHỈ TRÊN NỀN
TẢNG BLOCKCHAIN
KHÓA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY
Ngành: Hệ Thống Thông Tin

Cán bộ hướng dẫn: PGS.TS. Nguyễn Trí Thành

HÀ NỘI – 2020

2


LỜI CẢM ƠN

Đầu tiên, tôi muốn xin gửi lời cảm ơn đến PGS.TS. Nguyễn Trí Thành đã dìu
dắt, tạo mọi điều kiện cần thiết giúp đỡ tôi hoàn thành khóa luận này.
Tôi cũng xin được cảm ơn tới các thầy, các cô tại trường đại học Công Nghệ Đại học Quốc Gia Hà Nội, cùng tập thể lớp K61 T đã cùng đồng hành với tôi trong


suốt bốn năm vừa qua. Các thầy, cô đã tận tình chỉ bảo, truyền đạt những kiến thức
vô cùng quý giá giúp tôi bước chân vững hơn vào con đường lập trình. Các bạn học
đã cùng nhau phấn đấu, giúp đỡ tôi trong bốn năm tại giảng đường đại học vừa qua.
Tôi cũng xin anh Đỗ Trung Kiên cùng toàn thể thành viên Blockchain
Research Team thuộc công ty cổ phần Sun-Asterisk Việt Nam đã chiếu cố, giúp đỡ
tôi trong quá trình học hỏi, nghiên cứu công nghệ Blockchain trong thời gian vừa
qua.
Cuối cùng, tôi xin dành lời cám ơn đến gia đình tôi, những người luôn quan
tâm, lo lắng, thương yêu tôi vô điều kiện. Gia đình luôn là động lực bước tiế mỗi
khi tôi gặp khó khăn trong cuộc sống.

3


4


TÓM TẮT
Tóm tắt: Hiện nay, blockchain đang là một trong những công nghệ nổi bật nhất,
hứa hẹn sẽ là nền tảng trong cuộc cách mạng công nghiệp 4.0 của nhân loại. Khi nói
đến blockchain, người ta thường liên tưởng ngay đến tiền mã hóa, mà điển hình là
các nền tảng như Bitcoin hay Ethereum. Tuy nhiên, ứng dụng của công nghệ
blockchain nếu chỉ dừng lại ở việc cách mạng hóa giao dịch tiền tệ thì nó đã không
được thế giới kỳ vọng đến như thế. Công nghệ blockchain được kỳ vọng trong
tương lai gần có thể áp dụng vào gần như các mặt của đời sống xã hội như chuỗi
cung ứng, y tế, giáo dục v..v. Một trong những nền tảng dựa trên công nghệ
blockchain đi đầu trong việc giải quyết các vấn đề nêu trên là Hyperledger Fabric
được hỗ trợ và phát triển bởi tập đoàn IBM. Trong khóa luận này, tôi sẽ đề cập đến
vấn đề xây dựng một ứng dụng trên nền tảng Hyperledger Fabric, ứng dụng nhằm
cung cấp chứng chỉ được xác minh, an toàn cho các học viên đã hoàn thành các

khóa học thuộc một cơ quan, tổ chức giáo dục.
Từ khóa: Blockchain, Hyperledger Fabric

5


LỜI CAM ĐOAN
Tôi xin cam đoạn toàn bộ khóa luận về việc xây dựng ứng dụng cung cấp
chứng chỉ trên nền tảng blockchain, giao diện ứng dụng và phần mềm hệ thống là
do tôi thực hiện dưới sự hướng dẫn của PGS.TS. Nguyễn Trí Thành.
Tất cả tài liệu tham khảo liên quan tới khóa luận tốt nghiệp đều được nêu rõ
nguồn trong danh sách tài liệu tham khảo. Khóa luận không sao chép tài liệu, công
trình nghiên cứu của các nhân hay tổ chức khác.
Tôi xin chịu mọi trách nhiệm về lời cam đoan trên. Nếu nội dung những điều
cam đoan trên là không đúng, tôi xin chịu mọi trách nhiệm theo quy định của
trường đại học Công Nghệ - Đại học Quốc Gia Hà Nội.
Hà Nội, ngày
Sinh Viên

6

tháng năm


Mục lục
Danh sách bảng
Danh sách ký hiệu, chữ viết tắt
Danh sách hình vẽ
Chương 1 Giới thiệu


14

Chương 2 Giới thiệu các công nghệ được sử dụng

16

2.1 Hyperledger Fabric

16

2.1.1 Giới thiệu chung

16

2.1.2 Các đặc điểm chính

16

2.2 Node.js

20

2.2.1 Giới thiệu chung

20

2.2.2 Framework Express

20


2.3 Go

20

2.4 Docker

20

2.4.1 Giới thiệu về container

20

2.4.2 So sánh giữa container và máy ảo

20

2.4.3 Giới thiệu về Docker

21

2.5 Hyperledger Explorer

21

2.6 Vue.js

21

2.7 MongoDB


22

2.7.1 Giới thiệu chung

22

2.7.2 Đặc điểm chính

22

Chương 3 Phân tích đặc tả yêu cầu

23

3.1 Phân tích yêu cầu

23

3.1.1 Đặc tả yêu cầu chức năng

24

3.1.2 Đặc tả yêu cầu phi chức năng

24

3.1.3 Tóm tắt yêu cầu người sử dụng

25


7


3.1.4 Thiết kế ca sử dụng

27

3.1.5 Phân tích ca sử dụng

28

Chương 4 Thiết kế hệ thống

57

4.1 Thiết kế API Server

57

4.1.1 API xác thực người dùng

57

4.1.2 API về khóa học

58

4.1.3 API về môn học

59


4.1.4 API về lớp học

60

4.1.5 API về chứng chỉ

61

4.1.6 API về giáo viên

61

4.1.7 API về học viên

62

4.1.8 API về thông tin cá nhân

63

4.2 Thiết kế dữ liệu hợp đồng thông minh

64

4.2.1 Struct Course thể hiện thông tin về khóa học

64

4.2.2 Struct Subject thể hiện thông tin về môn học


65

4.2.3 Struct Class thể hiện thông tin về lớp học

65

4.2.4 Struct Teacher thể hiện thông tin về giáo viên

65

4.2.5 Struct Student thể hiện thông tin về học viên

66

4.2.6 Struct Information chứa các thông tin về người dùng

66

4.2.7 Struct Score thể hiện thông tin về điểm số

66

4.2.8 Struct Certificate thể hiện thông tin về chứng chỉ

66

4.3 Thiết kế cơ sở dữ liệu MongoDB

67


4.3.1 Document người dùng

67

Chương 5: Cài đặt và triển khai ứng dụng

68

5.1 Cấu hình máy chủ web Nginx với tên miền studychain.academy

68

5.2 Cấu hình máy chủ web Nginx với tên miền verify.studychain.academy

70

5.3 Cài đặt và triển khai mã nguồn

72

5.3.1 Cài đặt phần mã nguồn frontend

72

5.3.2 Cài đặt phần mã nguồn server Node.js

72

8



5.3.2 Cài đặt phần mã nguồn server Node.js

73

Cài đặt phần mã nguồn mạng Hyperledger Fabric

73

Kết luận

74

Tài liệu tham khảo

75

9


Danh sách bảng
2.1 Bảng so sánh Hyperledger Fabric về một số nền tảng khác
3.1 Ca sử dụng đăng nhập với mọi người dùng trong hệ thống
3.2 Ca sử dụng đăng xuất
3.3 Ca sử dụng thay đổi thông tin tài khoản người dùng
3.4 Ca sử dụng tạo mới khóa học
3.5 Ca sử dụng chỉnh sửa thông tin khóa học
3.6 Ca sử dụng thay đổi trạng thái khóa học
3.7 Ca sử dụng tạo mới môn học

3.8: Ca sử dụng chỉnh sửa thông tin môn học
3.9 Ca sử dụng xóa môn học
3.10 Ca sử dụng tạo mới lớp học thuộc môn học
3.11 Ca sử dụng chỉnh sửa thông tin lớp học
3.12 Ca sử dụng xóa lớp học
3.13 Ca sử dụng thêm giáo viên vào lớp học
3.14 Ca sử dụng bắt đầu lớp học
3.15 Ca sử dụng thêm môn học vào khóa học
3.16 Ca sử dụng tạo tài khoản giáo viên
3.17 Ca sử dụng giáo viên cho điểm học viên
3.18 Ca sử dụng đăng ký khóa học
3.19 Ca sử dụng đăng ký lớp học
3.20 Ca sử dụng hủy đăng ký lớp học
3.21 Ca sử dụng lấy chứng chỉ
3.22 Ca sử dụng xem các chứng chỉ
3.23 Ca sử dụng xác thực chứng chỉ trên blockchain
10


3.24 Ca sử dụng đăng ký tài khoản
4.1 API xác thực người dùng
4.2 API về khóa học
4.3 API về môn học
4.4 API về lớp học
4.5 API về chứng chỉ
4.6 API về giáo viên
4.7 API về học viên
4.8 API về thông tin cá nhân

11



Danh sách ký hiệu, chữ viết tắt
Từ hoặc cụm từ

Từ viết tắt

Application Programming Interface

API

Internet Protocol

IP

Representational State Transfer

REST

Software Development Kit

SDK

12


Danh sách hình vẽ
2.1 Hình ảnh so sánh kiến trúc giữa container và máy ảo
3.1 Hình ảnh mô tả kiến trúc của ứng dụng
3.2 Biểu đồ ca sử dụng của người dùng giáo vụ

3.3 Biểu đồ ca sử dụng của người dùng giáo viên
3.4 Biểu đồ ca sử dụng của người dùng học viên
3.5 Màn hình ca sử dụng đăng nhập
3.6 Màn hình ca sử dụng đăng xuất
3.7 Màn hình ca sử dụng thay đổi thông tin cá nhân người dùng
3.8 Màn hình ca sử dụng tạo mới khóa học
3.9 Màn hình ca chỉnh sửa thông tin khóa học
3.10 Màn hình ca sử dụng thay đổi trạng thái khóa học
3.11 Màn hình ca sử dụng tạo mới môn học
3.12 Màn hình ca sử dụng chỉnh sửa thông tin môn học
3.13 Màn hình ca sử dụng xóa môn học
3.14 Màn hình ca sử dụng tạo mới lớp học
3.15 Màn hình ca sử dụng thay đổi thông tin lớp học
3.16 Màn hình ca sử dụng xóa lớp học
3.17 Màn hình ca sử dụng thêm giáo viên vào lớp học
3.18 Màn hình ca sử dụng bắt đầu lớp học
3.19 Màn hình thêm môn học vào khóa học
3.20 Màn hình ca sử dụng tọa mới tài khoản giáo viên
3.21 Màn hình ca sử dụng giáo viên cho điểm học viên
3.22 Màn hình ca sử dụng đăng ký khóa học
3.23 Màn hình ca sử dụng đăng ký lớp học
3.24 Màn hình ca sử dụng hủy đăng ký lớp học
3.25 Màn hình ca sử dụng lấy chứng chỉ
13


3.26 Màn hình ca sử dụng xem các chứng chỉ của học viên
3.27 Màn hình ca sử dụng xác thực chứng chỉ trên blockchain
3.28 Màn hình ca sử dụng đăng ký tài khoản
4.1 Ví dụ mô tả một bản ghi trong document lưu trữ thông tin người dùng

5.1 Giao diện trang chủ khi truy cập với địa chỉ studychain.academy
5.2: Giao diện Hyperledger Explorer khi người dùng truy cập vào
verify.studychain.academy

14


Chương 1

Giới thiệu
Từ khi mạng Internet mới được hình thành cho đến nay, rất nhiều công nghệ,
mô hình đã thay đổi một cách vượt sức tưởng tượng của chúng ta. Tuy nhiên, duy
có kiến trúc của phần lớn các hệ thống thì gần như không thay đổi bao nhiêu. Kiến
trúc một hoặc nhiều máy chủ tập trung được quản lý bởi bên cung cấp dịch vụ đã
hoạt động trong suốt chiều dài lịch sử mạng Internet và ngày nay cũng đạt được độ
ổn định một cách tương đối tốt. Tuy nhiên, kiến trúc tập trung cũng có khá nhiều
điểm hạn chế như tồn tại một điểm chết duy nhất (nguy cơ hứng chịu những cuộc
tấn công từ chối dịch vụ hay đánh cắp dữ liệu), bên cung cấp dịch vụ nắm dữ rất
nhiều thông tin cá nhân của người dùng, gây mất quyền riêng tư của mỗi cá nhân
điển hình là vụ việc mạng xã hội lớn nhất thế giới Facebook bị lộ dữ liệu của hơn
50 triệu tài khoản người dùng hay việc cơ quan an ninh quốc gia Mỹ NSA nghe lén,
thu thập dữ liệu người dùng qua nhiều năm bị phanh phui. Nhiều bên cần trao đổi
thông tin, dịch vụ qua một trang web của một hay nhiều bên thứ ba, gây hao hụt
không ít về chi phí cũng như thời gian, tiêu biểu là các hệ thống tài chính, ngân
hàng đang bị trê trách là rất cồng kềnh, chậm chạm.
Năm 2009, một bài báo được xuất bản mang tên "Bitcoin: A Peer-to-Peer
Electronic Cash System" được đăng tải bởi một nhân vật bí ẩn mang tên Satoshi
Nakamoto đề xuất một hệ thống tiền tệ ngang hàng, phi tập trung, không cần thông
qua bên thứ 3. Sự kiện này đã là tiền đề cho sự bùng nổ của công nghệ blockchain
trong hơn 10 năm trở lại đây. Hàng loạt nền tảng phát triển theo sau Bitcoin như

Ethereum, Hyperledger Fabric,v.v hứa hẹn một tương lai không xa của việc phi tập
trung hóa mạng Internet, mang lại sự minh bạch, an toàn, đưa dữ liệu và sự riêng tư
cho người dùng nắm giữ thay vì các hệ thống, công ty lớn trên toàn cầu.

15


Các ứng dụng được xây dựng trên các nền tảng blockchain được gọi chung là
Dapp.

16


Hệ thống được đề cập trong khóa luận này cũng nhằm phần nào tuân theo tôn chỉ
đó. Hệ thống được xây dựng trên nền tảng Hyperledger Fabric, giúp nhà trường học
viên quản lý học vụ thông thường cũng như việc cung cấp chứng chỉ cho các học
viên. So với các hệ thống truyền thống, hệ thống cung cấp chứng chỉ trên
blockchain minh bạch, an toàn hơn, tránh được các rủi ro thường thấy ở các hệ
thống truyền thống như bị sửa đổi dữ liệu trái phép, giả mạo dữ liệu. Dữ liệu về
cách hành động của người đùng trên hệ thống đều được lưu vết trên cơ sở dữ liệu
blockchain của Hyperledger Fabric và là không thể sửa đổi hay đảo ngược.
Khóa luận sẽ được chia thành năm chương:
Chương 1: Giới thiệu
Chương 2: Giới thiệu các công nghệ được sử dụng
Chương 3: Phân tích và đặc tả yêu cầu
Chương 4: Thiết kế hệ thống
Chương 5: Cài đặt và triển khai ứng dụng

17



Chương 2

Giới thiệu các công nghệ được
sử dụng
2.1 Hyperledger Fabric
2.1.1 Giới thiệu chung
Hyperledger Fabric là một nền tảng blockchain mã nguồn mở thuộc dự án
Hyperledger do tổ chức Linux Foudation khởi động vào năm 2015. Hyperledger
Fabric được duy trì và phát triển chính bởi tập đoàn IBM và Digital Asset.
Hyperledger Fabric là một nền tảng blockchain riêng tư (private blockchain hay
permissioned blockchain) khác với Bitcoin hay Ethereum là các nền tảng
blockchain công khai (public blockchain hay permissionless blockchain).
Hyperledger Fabric được thiết kế để giải quyết các vấn đề doanh nghiệp
(enterprise), nghiệp vụ (business) như chuỗi cung ứng, y tế, giáo dục, bảo hiểm [1].

2.1.2 Các đặc điểm chính
Tính mô-đun
Hyperledger Fabric được đội ngũ phát triển thiết kế kiến trúc dưới dạng môđun. Từ các thuận toán đồng thuận, giao thức quản lý danh tính, quản lý danh tính
đến các thư viện mật mã đều có thể triển khai dưới dạng mô-đun (pluggable). Do
đó, bên triển khai công nghệ sẽ có nhiều tùy chọn, cách cấu hình hệ thống cho phù
hợp với từng mục đích khác nhau.
Ở mức độ trìu tượng cao, Hyperledger Fabric gồm những mô-đun sau:
- Ordering service là thành phần thiết lập sự đồng thuận trên mạng và chuyển
các khối (block) đã được xác minh đến các nút trong mạng.
- Nhà cung cấp dịch vụ thành viên (membership service provider) là thành
phần liên kết các thực thể trong mạng với một định danh riêng được mã hóa.

18



- Thành phần cung cấp chức năng kết nối mạng ngang hàng giữa các nút
trong hệ thống.
- Hợp đồng thông minh (chaincode) chạy trên môi trường ảo hóa (như
Docker) chứa logic nghiệp vụ của hệ thống.
- Sổ cái (Ledger) là thành phần lưu trữ dữ liệu các khối trong chuỗi, sổ cái sử
dụng các hệ cơ sở quản trị dữ liệu NoSQL.
- Chứng thực, chính sách đối với quyền của các thực thể trên mạng.
Nền tảng blockchain riêng tư (private blockchain hay permissioned blockchain)
Trong một nền tảng blockchain công khai, bất cứ ai cũng có thể tham gia và
mọi tác nhân tham gia đều ẩn danh. Hơn nữa, mọi dữ liệu được lưu vết trên cơ sở
dữ liệu blockchain hoàn toàn được công khai, bất cứ ai cũng có thể truy vấn và đọc
được dữ liệu. Đối với môi trường doanh nghiệp, dữ liệu cần có sự riêng tư cũng như
bảo mật sẽ không phù hợp để ứng dụng các nền tảng blockchain công khai vào hệ
thống của mình.
Mặt khác, các nền tảng blockchain riêng tư như Hyperledger Fabric giúp thiết
lập một hệ thống chỉ có thể tham gia khi đã được cho phép, các tác nhân tham gia
vào hệ thống đều được xác định danh tính và kiểm duyệt hoạt động
Ngoài ra, việc người dùng thực thi các hành động xấu nhằm trục lợi cũng sẽ bị
hạn chế. Những người tham gia vào hệ thống đều được định danh, những người
khác hoàn toàn có thể nắm bắt được các hành động trên hệ thống của người khác
như gửi giao dịch, sửa đổi cấu hình mạng hay triển khai hợp đồng thông minh. Các
hành động đều được lưu vết lại trên cơ sở dữ liệu blockchain. Các hành động mờ
ám sẽ hoàn toàn không che dấu được hệ thống cũng như các người dùng khác trong
mạng.
Hợp đồng thông minh
Hợp đồng thông minh là một chương trình máy tính chứa các điều khoản logic
được các bên tham gia vào hệ thống chấp nhận. Hợp đồng thông minh cho phép
thực hiện các giao dịch đáng tin cậy giữa nhiều bên mà không cần bên thứ ba làm
trung gian. Trong Hyperledger Fabric, hợp đồng thông minh được gọi với cái tên

mã chuỗi (chaincode). Chaincode trong Hyperledger Fabric được viết bằng một
trong ba ngôn ngữ lập trình là Go, Java hoặc Javascript.
Có ba điểm chính áp dụng cho hợp đồng thông minh:
- Nhiều hợp đồng thông minh có thể chạy trên cùng một hệ thống.

19


- Hợp đồng thông minh có thể được triển khai một các linh hoạt (trong
nhiều trường hợp và bởi bất cứ ai).
- Mã nguồn của hợp đồng nên được coi là không đáng tin cậy hay thậm chí
là độc hại. Cho nên việc thực thi các hợp đồng thông minh được diễn ra trong
các môi trường ảo hóa, độc lập.
Tính riêng tư và bảo mật
Như chúng ta đã thảo luận, trong một mạng blockchain công khai, các giao
dịch được thực hiện trên mọi nút trong mạng ngang hàng. Điều này đồng nghĩa rằng
việc bảo mật dữ liệu về các giao dịch là bất khả. Mọi giao dịch và dữ liệu liên quan
đều hiển thị cho mọi nút trong mạng.
Những hạn chế kể trên sẽ là vấn đề rất lớn nếu áp dụng vào các hệ thống
doanh nghiệp, kinh doanh. Lấy ví dụ với một hệ thống chuỗi cung ứng, một số bên
do một lý do nào đó chẳng hạn như đối tác chiến lược hay khách hàng thân thiết
được hưởng ưu đãi hơn so với phần còn lại. Nhưng mọi thành phần tham gia vào
mạng đều nhìn thấy được giao dịch, việc áp dụng các chính sách ưu tiên đó sẽ là
không thể vì mọi người cũng muốn được hưỡng mức ưu đãi đó.
Hyperledger Fabric giải quyết vấn đề riêng tư và bảo mật thông qua tính năng
kênh (channel) và dữ liệu riêng tư (private data). Trong các kênh, các bên tham gia
mạng Hyperledger Fabric sẽ thiết lập một mạng mạng con nơi nút thành viên có thể
tham gia kênh và chỉ có họ mới nhìn thấy các giao dịch diễn ra trên kênh. Do đó,
chỉ những nút tham gia và kênh mới có quyền truy cập vào dữ liệu giao dịch trên
kênh đó. Dữ liệu riêng tư ở mức độ thấp hơn, giúp các thành viên trên một kênh có

thể trao đổi dữ liệu riêng tư với các thành viên khác trong kênh mà không cần tạo
một kênh mới.
Hiệu suất và khả năng mở rộng
Hiệu suất và khả năng mở rộng đang là vấn đề nan giải với các nền tảng
blockchain công khai sử dụng thuật toán đồng thuận bằng chứng công việc (Proof
of work). Bitcoin và Ethereum chỉ đạt hiệu suất trong khoảng vài chục giao dịch
mỗi giây, kém xa so với các hệ thống truyền thống lên đến hàng ngàn giao dịch mỗi
giây. Nổi tiếng nhất là sự kiện mạng Ethereum bị nghẽn do quá nhiều người chơi trò
chơi Crypto Kitties vào năm 2017.
Hyperledger Fabric là một nền tảng blockchain riêng tư và không sử dụng
thuật toán đồng thuận bằng chứng công việc nên hiệu suất so với các nền tảng như
Bitcoin hay Ethereum là tốt hơn đáng kể. Một số tài liệu nghiên cứu đã được xuất
20


bản về việc thử nghiệm hiệu suất của Hyperledger Fabric. Hyperledger Fabric khả
năng đạt tới 20.000 giao dịch mỗi giây.
Bảng 2.1: Bảng so sánh Hyperledger Fabric về một số nền tảng khác
Bitcoin

Ethereum

Hyperledger
Fabric

Ngôn ngữ lập
trình

C++


Solididy

Go, Java,
Javascript

Hợp đồng thông
minh

Không có





Thuật toán đồng
thuận

Bằng chứng công
việc

- Bằng chứng công
việc

Raft, Kafka, Solo

- Bằng chứng cổ
phần

Khả năng mở
rộng


Kém

Kém

Cao

Tiền mã hóa

BTC

ETH

Không có

2.2 Node.js
2.2.1 Giới thiệu chung
Node.js là một môi trường thực thi Javascript độc lập, mã nguồn mở và đa nền
tảng. Được xây dựng dựa trên engine google chrome v8, Node.js cho thấy khả năng
xử lý các tác vụ ở phía backend một cách hiệu quả với đặc trưng bất đồng bộ của
mình [2].

2.2.2 Framework Express

21


Express.js hay gọi tắt là Express là một web framework của Node.js, mã
nguồn mở dưới giấy phép MIT. Express giúp việc triển khai các dự án backend
bằng Node.js nhanh chóng, tiện lợi và dễ dàng hơn.


2.3 Go
Go hay còn gọi là Golang là một ngôn ngữ lập trình tĩnh, biên dịch được thiết
kế tại Google bởi Robert Griesemer, Rob Pike và Ken Thompson. Go về mặt cú
pháp có nhiều điểm tương đồng với C. Go được nhiều người xem là ngôn ngữ C của
thế kỷ XXI [3].

2.4 Docker
2.4.1 Giới thiệu về container
Container là một đơn vị phần mềm tiêu chuẩn đóng gói mã nguồn và các thành
phần phụ thuộc. Đặc điểm của container là nhẹ, độc lập, có thể thực thi [4].

2.4.2 So sánh giữa container và máy ảo
Container và máy ảo đều là các môi trường ảo hóa có đặc điểm chung đó là tài
nguyên được phân tách độc lập, khác nhau ở chỗ container ảo hóa hệ điều hành thay
vì ảo hóa phần cứng như máy ảo. Container được đánh giá có tính linh hoạt và hiệu
quả hơn máy ảo [5].
Nhiều container có thể chạy trên cùng một máy vật lý và chia sẻ chung nhân
của hệ điều hành với các container khác.
Nhiều máy ảo cũng có thể chạy trên một máy vật lý. Tuy nhiên, khác với
container chia sẻ chung nhân của hệ điều hành với các container khác, mỗi máy áo
điều có một hệ điều hành riêng, ứng dụng, các tệp nhị phân và thư viện cần thiết.
Điều đó làm cho kích thước bộ nhớ mỗi máy ảo chiếm dụng lên đến hàng chục GB
thay vì MB như container.

22


Hình 2.1: Hình ảnh so sánh kiến trúc giữa container và máy ảo


2.4.3 Giới thiệu Docker
Docker là một bộ nền tảng sử dụng công nghệ ảo hóa cấp hệ điều hành để tổ
chức phần mềm dưới dạng các container.

2.5 Hyperledger Explorer
Hyperledger Explorer là một công cụ ứng dụng web thân thiện với người dùng
được sử dụng để xem, truy vấn các dữ liệu trong mạng Hyperledger Fabric như
thông tin các khối, các giao dịch, các tài khoản [6].

2.6 Vue.js
Vue hay Vue.js là một framework Javascript dùng để xây dựng giao diện
người dùng (user interfaces).Vue được thiết kế từ đầu theo hướng cho phép và
khuyến khích việc phát triển ứng dụng theo từng bước. Khi phát triển lớp giao diện
(view layer), người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễ
học và tích hợp với các thư viện hoặc dự án có sẵn. Cùng với đó, nếu kết hợp với
những kĩ thuật hiện đại như SFC (single file components) và các thư viện hỗ trợ,
Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứng dụng một trang (SPA
- Single-Page Applications) với độ phức tạp cao hơn [7].

2.7 MongoDB
2.7.1 Giới thiệu chung
MongoDB là một hệ quản trị cơ sở dữ liệu hướng tài liệu (document-oriented),
chạy đa nền tảng. MongoDB lưu trữ dữ liệu thành các tài liệu (document) tương tự
23


như JSON, các tài liệu có thể được định nghĩa trước theo một cấu trúc cụ thể
(schema) [8].

2.7.2 Đặc điểm chính

- MongoDB thuộc loại cơ sở dữ liệu không quan hệ (NoSQL) khác với các hệ quản
trị cơ sở dữ liệu quan hệ như MySQL, MariaDB, PostgreSQL, v.v
- MongoDB linh hoạt về cách lưu trữ dữ liệu, mỗi tài liệu sẽ có một cấu trúc khác
nhau để lưu trữ.
- MongoDB không có các phép join bảng tham chiếu nên việc truy vấn tốc đọ truy
vấn dữ liệu là rất nhanh.
- Khả năng mở rộng cao (vốn là hạn chế của hệ quản trị cơ sở dữ liệu quan hệ)
- Phù hợp với các ứng dụng thời gian thực.

24


Chương 3

Phân tích đặc tả yêu cầu
3.1 Phân tích yêu cầu
Ứng dụng được chia thành ba phần là frontend, backend và blockchain. Người
dùng trên hệ thống được chia ra làm ba vai trò: giáo vụ, giáo viên và học viên.
Hệ thống cung cấp các chức năng cho người dùng giáo vụ:
- Đăng nhập
- Tạo mới khóa học, môn học và lớp học.
- Thêm môn học vào khóa học.
- Tạo mới tài khoản giáo viên trên hệ thống.
- Chỉ định giáo viên dạy lớp học.
- Đóng, mở đăng ký khóa học.
- Xóa lớp học.
- Xem danh sách các học viên trong khóa học.
Hệ thống cung cấp các chức năng cho người dùng giáo viên:
- Đăng nhập
- Chỉnh sửa thông tin cá nhân.

- Xem các lớp mình đang giảng dạy.
- Xem danh sách các học viên trong lớp do mình giảng dạy.
- Cho điểm các học viên trong lớp mình giảng dạy.
Hệ thống cung cấp các chức năng cho người dùng học viên:
- Đăng nhập, đăng ký.
- Chỉnh sửa thông tin cá nhân.
- Xem danh sách các khóa học.
- Đăng ký khóa học.
- Đăng ký lớp học thuộc khóa học.
25


×