Với cấu trúc lưu trữ dữ liệu được thiết kế đặc biệt, các giao dịch trong mạng Bitcoin có thể xảy ra mà không cần bất kỳ bên thứ ba, và cốt lõi công nghệ để xây dựng nên Bitcoin chính là
Trang 1TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN
KHOÁ LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG HỆ THỐNG QUẢN LÝ HỒ SƠ SINH VIÊN TRƯỜNG ĐẠI HỌC AN GIANG BẰNG CÔNG NGHỆ BLOCKCHAIN
HYPERLEDGER FABRIC - PHÂN HỆ
NETWORK VÀ SDK
PHAN NGỌC TUẤN
AN GIANG, 05 – 2022
Trang 2TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN
KHOÁ LUẬN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG HỆ THỐNG QUẢN LÝ HỒ SƠ SINH VIÊN TRƯỜNG ĐẠI HỌC AN GIANG BẰNG CÔNG NGHỆ BLOCKCHAIN HYPERLEDGER FABRIC - PHÂN HỆ
NETWORK VÀ SDK
PHAN NGỌC TUẤNMÃ SỐ SINH VIÊN: DTH185417
GIẢNG VIÊN HƯỚNG DẪN: TS NGUYỄN VĂN HÒA
AN GIANG, 05 -2022
Trang 3i
Khoá luận “XÂY DỰNG HỆ THỐNG QUẢN LÝ HỒ SƠ SINH VIÊN
TRƯỜNG ĐẠI HỌC AN GIANG BẰNG CÔNG NGHỆ BLOCKCHAIN HYPERLEDGER FABRIC - PHÂN HỆ NETWORK VÀ SDK” do sinh viên
Phan Ngọc Tuấn thực hiện dưới sự hướng dẫn của TS NGUYỄN VĂN HÒA Tác
giả đã báo cáo kết quả nghiên cứu và được Hội đồng Khoa học và Đào tạo thông qua ngày ………
Phản biện 1 Phản biện 2
(Ký và ghi rõ chức danh, họ tên) (Ký và ghi rõ chức danh, họ tên)
Giảng viên hướng dẫn
(Ký và ghi rõ chức danh, họ tên)
Trang 4ii
LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cảm ơn và lòng biết ơn sâu sắc đến thầy giáo TS.Nguyễn Văn Hòa (Khoa Công nghệ thông tin – Trường Đại học An Giang), người đã giúp tôi chọn đề tài, định hình hướng nghiên cứu, tận tình hướng dẫn và chỉ bảo em trong quá trình thực hiện luận văn tốt nghiệp
Tôi xin được gửi lời tri ân sâu sắc đến thầy giáo ThS Nguyễn Hoàng Tùng, người đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập cũng như giai đoạn đầu của quá trình thực hiện luận văn
Em cũng xin gửi lời cảm ơn các thầy, cô giáo trong Trường Đại học An Giang Các thầy, cô giáo đã dạy bảo và truyền đạt cho em rất nhiều kiến thức, giúp em có được một nền tảng kiến thức vững chắc sau những năm học tập tại Khoa công nghệ thông tin - trường Đại học An Giang
Em xin chân thành cảm ơn!
An Giang, ngày 17 tháng 05 năm 2022
Sinh viên thực hiện
Trang 5iii
TÓM TẮT
Trong bối cảnh phát triển như vũ bão của cuộc cách mạng công nghệ 4.0 hiện nay, Blockchain được các nhà nghiên cứu đánh giá là công nghệ then chốt và có tầm ảnh hưởng lớn đến nhiều lĩnh vực trong đó có lĩnh vực giáo dục về việc truy cứu thông tin chính xác lại càng là vấn đề đang cần được phát triển thêm Trước bối cảnh này, nhiều chủ trương, đường lối chính sách, pháp luật đã được ban hành tại Việt Nam nhằm giúp cho các chủ thể chủ động thích ứng với những thay đổi mạnh mẽ của giai đoạn mới Trong mọi lĩnh vực kế toán kiểm toán, mặc dù công nghệ Blockchain đã được ứng dụng ở một số nước trên thế giới song tại Việt Nam, công nghệ này vẫn hoàn toàn mới mẻ và hiện chúng ta vẫn chưa có hành lang pháp lý làm cơ sở cho việc áp dụng công nghệ mới này Để bắt kịp với những tiến bộ của thời đại, việc tìm hiểu về công nghệ Blockchain, những ứng dụng của nó là hết sức cần thiết Việc ứng dụng chuyển đổi số cùng với công nghệ Blockchain mang lại tính minh bạch, tiện lợi, nhanh chóng khi cần tra cứu thông tin mà không sợ thông tin bị làm giả từ
đó nâng cao tính rõ ràng, đầy đủ nhất
Công nghệ Blockchain triển vọng mang lại nhiều lợi ích tuy nhiên cũng
ẩn chứa nhiều nguy cơ Sau khi tìm hiểu về công nghệ Blockchain và những ứng dụng của công nghệ này trong lĩnh vực đồng thời tiến hành khảo sát thực
tế về nhu cầu ứng dụng công nghệ này trong hoạt động xác thực thông tin sinh viên Trên cơ sở kết quả nghiên cứu, tôi đưa ra một số kiến nghị về khả năng ứng dụng công nghệ Blockchain tại Việt Nam trong thời gian tới Tiếp theo,
tôi trình bày nội dung chi tiết qua từng phần vừa được nhắc đến ở trên
Trang 6iv
MỤC LỤC
CHƯƠNG 1 ĐẶT VẤN ĐỀ 1
1.1 Tính cấp thiết của đề tài 1
1.2 Mục tiêu nghiên cứu của đề tài 1
1.3 Tình hình Blockchain đối với giáo dục trong và ngoài nước 1
CHƯƠNG 2 TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT 4
2.1 Đặt vấn đề 4
2.2 Đối tượng và phạm vi nghiên cứu 4
2.2.1 Đối tượng nghiên cứu 4
2.2.2 Phạm vi nghiên cứu của đề tài 4
2.3 Phương pháp nghiên cứu 4
2.4 Cơ sở lý thuyết 5
2.4.1 Giới thiệu về Blockchain 5
2.4.2 Đặc điểm Blockchain 5
2.4.3 Cấu trúc công nghệ Blockchain 6
2.4.4 Tìm hiểu về sổ phân tán 8
2.4.5 Lợi ích Blockchain mang lại 8
2.5 Tìm hiểu về Hyperledger 9
2.6 Tìm hiểu về công nghệ Hyperledger Fabric 13
2.6.1 Giới thiệu về Hyperledger Fabric 13
2.6.2 Đặc điểm mạng Hyperledger Fabric 14
2.6.3 Kiến trúc mạng Hyperledger Fabric 15
2.6.4 Tìm hiểu về một số ứng dụng phát triển mạng Blockchain Hyperledger 21
CHƯƠNG 3 NỘI DUNG KẾT QUẢ NGHIÊN CỨU 27
3.1 Mô tả bài toán 27
3.1 Mô hình và dữ liệu đề xuất 27
3.1.2 Mô hình 27
Trang 7v
3.1.3 Dữ liệu được đưa xuống Blockchain 28
3.2 API tương tác với chaincode 31
3.3 Cài đặt 36
3.3.1 Cài đặt các thành phần cần thiết 36
3.3.2 Cài đặt Hyperledger Fabric 37
3.3.3 API và giao diện trình bày 43
3.4 Tích hợp Hyperledger Explorer vào Hyperledger Fabric 52
3.4.1 Tìm hiểu Hyperledger Explorer 52
3.4.2 Cài đặt Hyperledger Explorer vào hệ thống Hyperledger Fabric 54
3.5 Kết luận về đề tài 57
3.6 Hướng phát triển 58
Tài liệu tham khảo 59
Trang 8vi
DANH SÁCH CÁC HÌNH ẢNH
Hình 1 Thuật toán đồng thuận 7
Hình 2 Giới thiệu Hyperledger 9
Hình 3 Thành phần Hyperledger 10
Hình 4 Một số framework của Hyperledger 11
Hình 5 Hyperledger Sawtooth 11
Hình 6 Hyperledger Iroha 11
Hình 7 Hyperledger Indy 12
Hình 8 Hyperledger Fabric 12
Hình 9 Giới thiệu Hyperledger Fabric 13
Hình 10 Cấu trúc cơ bản Hyperledger Fabric 15
Hình 11 Cấu trúc peer 16
Hình 12 Mối quan hệ Peer – Ledger - Chaincode 17
Hình 13 Mối liên hệ Peer - Channel 18
Hình 14 Mối liên hệ Peer - Org 18
Hình 15 Mối liên hệ Applications - Peer 19
Hình 16 Cấu trúc Ledger 20
Hình 17 Smart Contracts – chaincode example 20
Hình 18 Khái niệm docker 21
Hình 19 Sự tương tác Application – API - Client 25
Hình 20 Mô hình Fabric 28
Hình 21 Cấu trúc dữ liệu lưu khối Fabric 29
Hình 22 Sơ đồ tương tác API - chaincode 31
Hình 23 Cấu trúc API đã xây dựng 32
Hình 24 API – GET – Lấy tất cả dữ liệu sinhvien 33
Hình 25 API – GET – Lấy thông tin sinhvien theo mssv 34
Hình 26 API – POST – Thêm sinhvien vào khối 35
Hình 27 API – PUT – Thay đổi tên sinhvien 36
Hình 28 Tải SDK Fabric 38
Trang 9vii
Hình 29 Pull images docker 39
Hình 30 Di chuyển vào thư mục cài đặt 40
Hình 31 Tải node_modules 40
Hình 32 Thư mục node_modules 40
Hình 33 Xóa tất cả vùng chứa tránh trùng lặp 41
Hình 34 Khởi động, cài đặt mạng Fabric 42
Hình 35 Thông tin cơ bản về chaincode 42
Hình 36 Tạo giấy chứng nhận (certificate) đăng ký Admin 43
Hình 37 Tổng quan về file apiserver.js 44
Hình 38 API dành cho client sử dụng trong file apiserver.js 45
Hình 39 APIv2 trong file apiserver.js 45
Hình 40 Giao diện trình bày trong file apiserver.js 45
Hình 41 Kết quả API – GET – Lấy tất cả thông tin sinhvien 46
Hình 42 Kết quả API – POST – Thêm sinhvien 47
Hình 43 Kết quả APIv2 – POST – Thêm sinhvien 47
Hình 44 Kết quả API – GET – Truy vấn sinhvien với mssv 48
Hình 45 Kết quả APIv2 – GET – Truy vấn sinhvien với key 48
Hình 46 Kết quả API – PUT – Thay đổi thông tin theo trường vanbangchungchi 49
Hình 47 Kết quả APIv2 – PUT – Thay đổi thông tin theo trường vanbangchungchi 49
Hình 48 Giao diện trình bày chính 50
Hình 49 Tài liệu về API truy vấn tất cả thông tin sinh viên 51
Hình 50 Tài liệu về API khởi tạo sinh viên 52
Hình 51 Giao diện chính của Hyperledger Explorer 55
Hình 52 Giao danh sách network Hyperledger Explorer 56
Hình 53 Giao diện danh khối Hyperledger Explorer 56
Hình 54 Giao diện thông tin giao dịch Hyperledger Explorer 57
Trang 101
CHƯƠNG 1 ĐẶT VẤN ĐỀ 1.1 Tính cấp thiết của đề tài
Do sự phát triển không ngừng của xã hội, nền công nghiệp, các nhu cầu
để phát triển cũng ngày một nâng lên rõ rệt, hoàn thiện, nâng cao chất lượng công việc,… Việc có một hệ thống thông tin minh bạch càng trở nên cấp thiết
để tham khảo một cách chính xác và nhanh chóng Nắm bắt xu thế đó, các doanh nghiệp không chỉ Việt Nam mà còn quốc tế cũng đã từng bước nghiên cứu Blockchain và áp dụng công nghệ này vào các giao dịch và xác thực thông tin
Ngày nay, các đồng tiền điện tử đã trở nên phổ biến, thông dụng trên thế giới Một trong những đồng tiền điện tử thành công nhất không thể không kể đến đó là Bitcoin Với cấu trúc lưu trữ dữ liệu được thiết kế đặc biệt, các giao dịch trong mạng Bitcoin có thể xảy ra mà không cần bất kỳ bên thứ ba, và cốt lõi công nghệ để xây dựng nên Bitcoin chính là Blockchain, được đề xuất vào năm 2008 và triển khai vào năm 2009
Blockchain – Công nghệ chuỗi khối – có thể được xem như một cuốn sổ cái công khai, chống giả mạo và tất cả các giao dịch được lưu trữ trong một danh sách các khối Chuỗi này liên tục được phát triển khi các khối mới được thêm vào Với hàm mật mã bất đối xứng và cơ chế đồng thuận phân tán đã làm cho Blockchain bảo mật, nhất quán hơn các cuốn sổ cái truyền thống
Với tính bảo mật cao, Blockchain được sử dụng để lưu thông tin lưu trữ không chỉ là dữ liệu bảng điểm mà còn là quá trình đào tạo, kinh nghiệm thực
tế và kinh nghiệm tuyển dụng của mỗi người Tránh tình trạng ứng viên gian lận trong quá trình xin học bổng, thăng tiến, trình bày sai về trình độ học vấn, kinh nghiệm làm việc, kỷ luật, v.v
1.2 Mục tiêu nghiên cứu của đề tài
Mục tiêu hướng tới là xây dựng một mạng hỗ trợ truy xuất thông tin của sinh viên một cách nhanh chóng chính xác, đáng tin cậy bằng công nghệ Blockchain Hyperledger Fabric từ đó giúp giáo viên quản lý chính xác về quá trình học tập, giám sát được quá trình học tập của sinh viên và quan trọng hơn
là cầu nối học viên và nhà tuyển dụng
1.3 Tình hình Blockchain đối với giáo dục trong và ngoài nước
Ứng dụng Blockchain vào giáo dục có thể mang lại nhiều tác động Thông tin lưu trữ trên chuỗi khối không chỉ là dữ liệu bảng điểm mà còn cả quá trình đào tạo, kinh nghiệm thực tế, lịch sử tuyển dụng của từng cá nhân
Trang 11Với mỗi học sinh/sinh viên, toàn bộ các thông tin về quá trình đào tạo của mình sẽ được lưu trữ trên hệ thống Blockchain, quản lý từ bảng điểm, thành tích, kết quả các kỳ thi Các dữ liệu thông tin này được lưu trữ an toàn, chuẩn xác và có thể là vĩnh viễn Đối với các nhà tuyển dụng, họ chỉ cần truy cập và xác minh dữ liệu thông tin về ứng viên trên hệ thống, công việc tuyển dụng sẽ rất dễ dàng
Đối với trong nước, việc khai thác tiềm năng và ứng dụng công nghệ Blockchain trong lĩnh vực giáo dục, đặc biệt là giáo dục đại học cần phải được chú trọng thực hiện trong bối cảnh chuyển đổi số hiện nay
Đối với quốc tế, nhiều trường đại học trên thế giới đã bắt đầu triển khai công nghệ Blockchain để theo dõi và lưu trữ bảng điểm và bằng cấp của sinh viên và thông tin của các đơn vị đào tạo Ví dụ có thể kể tới là dự án
“Blockcerts” do Phòng nghiên cứu truyền thông MIT thuộc Viện Công nghệ Massachusetts, Hoa Kỳ phát triển vào năm 2017; Blockcerts cung cấp bằng chứng nhận cho các học viên hoàn thành một số chương trình của MIT dưới dạng số hóa trên nền bảo mật của Blockchain
Đề tài “XÂY DỰNG HỆ THỐNG QUẢN LÝ HỒ SƠ SINH VIÊN TRƯỜNG ĐẠI HỌC AN GIANG BẰNG CÔNG NGHỆ BLOCKCHAIN HYPERLEDGER FABRIC - PHÂN HỆ NETWORK VÀ SDK” với cấu
trúc như sau:
Chương 1 Đặt vấn đề: Sự phát triển không ngừng của xã hội, nền công nghiệp, việc có một hệ thống thông tin minh bạch càng trở nên cấp thiết để tham khảo một cách chính xác và nhanh chóng Từ đó Blockchain được đưa vào sử dụng lưu trữ những thông tin minh bạch Mục tiêu nghiên cứu xây dựng một mạng hỗ trợ truy xuất thông tin của sinh viên một cách nhanh chóng chính xác, đáng tin cậy bằng công nghệ Blockchain Hyperledger Fabric Chương 2 Tổng quan và cơ sở lý thuyết: Trong những năm gần đây, giáo dục – đào tạo luôn là chủ đề nóng hổi được trao đổi trong những diễn đàn
về cải cách giáo dục nhầm đưa ra những phương án giải quyết kịp thời Một số
Trang 123
vấn đề có thể nhắc đến như sau: Tỷ lệ thất nghiệp cao, sinh viên ra trường ngày một tăng tuy nhiên khó khăn trong tìm kiếm công việc, Thiếu minh bạch trong hệ thống thi cử, điểm số Đối tượng đối tượng nghiên cứu hệ thống mạng Blockchain Hyperledger Fabric, xây dựng network, tìm hiểu tập trung
về công nghệ Blockchain Hyperledger Fabric, xây dựng API Với các phương
pháp nghiên cứu: bao gồm phương pháp nghiên cứu, khảo sát, tài liệu và thực
nghiệm
Chương 3 Nội dung kết quả nghiên cứu: Đưa ra mô hình đề xuất cài đặt
cấu hình Hướng dẫn cách cài đặt phát triển đề tài, các thành phần cần thiết…
Giới thiệu về chức năng cơ bản thành phần, giao diện trình bày, kết quả đạt được của đề tài
Trang 13Những vấn đề trong ngành giáo dục - đào tạo Việt Nam gặp phải gồm:
“Tỷ lệ thất nghiệp cao, sinh viên ra trường ngày một tăng tuy nhiên khó khăn trong tìm kiếm công việc Thiếu minh bạch trong hệ thống thi cử, điển hình là những vụ gian lận thi cử trong kỳ thi trung học phổ thông quốc gia năm 2018,…” Cùng với đó, khi đăng ký tuyển dụng hoặc xin học bổng nhiều, thường xuyên xảy ra tình huống ứng viên đã cung cấp thông tin của mình không chính xác, đa phần là kê khai thông tin cao hơn so với năng lực, trình
độ, kinh nghiệm thực tế bản thân nhằm đáp ứng đủ điều kiện xét/thi tuyển
Từ những vấn đề trên để giải quyết sự thiếu minh bạch trong hệ thống thông tin Với tính chất của công nghệ Blockchain hoàn toàn có khả năng ứng dụng vào hệ thống với cơ chế chống thay đổi thông tin, dữ liệu, sửa thông tin hay gian lận trong khai báo thông tin của sinh viên
2.2 Đối tượng và phạm vi nghiên cứu
2.2.1 Đối tượng nghiên cứu
Quy trình xây dựng hệ thống mạng Blockchain Hyperledger Fabric Xây dựng network, triển khai chaincode và API cho webapp
2.2.2 Phạm vi nghiên cứu của đề tài
Tài đề tìm hiểu tập trung về công nghệ Blockchain Hyperledger Fabric Sản phẩm tạo ra chạy trên hệ thống Blockchain Hyperledger Fabric và xây dựng API tương tác giữa webapp với dữ liệu đã có trên mạng Blockchain
Đề tài được thực hiện: từ ngày 29/11/2021 đến ngày 07/04/2022
2.3 Phương pháp nghiên cứu
Các phương pháp nghiên cứu được sử dụng trong đề tài như sau:
Phương pháp nghiên cứu, khảo sát, tài liệu: Khảo sát hệ thống Hồ sơ sinh viên tại trường Đại học An Giang
Trang 145
Phương pháp thực nghiệm: Phân tích, thiết kế, xây dựng, kiểm thử, xây dựng API cho webapp
2.4 Cơ sở lý thuyết
2.4.1 Giới thiệu về Blockchain
Blockchain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối thông tin được liên kết với nhau bằng mã hóa và mở rộng theo thời gian Mỗi khối thông tin đều chứa thông tin về thời gian khởi tạo và được liên kết tới khối trước đó, kèm một mã thời gian và dữ liệu giao dịch
Blockchain có khả năng chống lại việc sửa đổi dữ liệu bởi mỗi khối chứa một hàm băm mật mã của khối trước đó, dấu thời gian và dữ liệu giao dịch (thường được biểu diễn dưới dạng cây Merkle) Khi mỗi khối chứa thông tin
về khối trước đó, chúng tạo thành một chuỗi, với mỗi khối bổ sung củng cố các khối trước nó
Blockchain sử dụng giao thức ngang hàng để quản lý và sử dụng như một sổ cái phân tán công khai, nơi các nút cùng tuân thủ một giao thức để giao tiếp và xác thực các khối mới
Blockchain đã được phổ biến bởi một người (hoặc một nhóm người) sử dụng tên Satoshi Nakamoto vào năm 2008 để làm sổ cái giao dịch công khai của tiền điện tử bitcoin Việc phát minh ra Blockchain và ứng dụng cho Bitcoin đã làm cho đây trở thành loại tiền tệ kỹ thuật số đầu tiên giải quyết được vấn đề double spending (chi tiêu gian lận khi 1 lượng tiền được dùng 2 lần) Công nghệ này của Bitcoin đã trở thành nguồn cảm hứng cho một loạt các ứng dụng khác trong rất nhiều lĩnh vực khác nhau [4]
Blockchain là sự kết hợp mốt cách hoàn hảo của sự minh bạch và tính bảo mật, nó cho phép tất cả mọi người đều có quyền biết các thông tin giao dịch của nhau, tuy nhiên dữ liệu riêng tư của mọi các nhân thì vẫn đảm bảo bí mật tuyệt đối
Blockchain giúp mọi người dù không hề quen biết nhưng vẫn có thể tin tưởng nhau tuyệt đối và có thể thực hiện những giao dịch quan trọng mà không cần bất kỳ một công ty hay tổ chức uy tín nào đứng ra làm trung gian trong khi vẫn đảm bảo về tốc độ, chi phí, tin cậy
2.4.2 Đặc điểm Blockchain
Không thể làm giả: không thể phá hủy các chuỗi Blockchain: Theo như
lý thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ Blockchain biến mất khi không còn Internet trên toàn cầu[4]
Trang 152.4.3 Cấu trúc công nghệ Blockchain
Công nghệ Blockchain tương đồng với cơ sở dữ liệu, chỉ khác ở việc tương tác với cơ sở dữ liệu Chi tiết những đặc tính cơ bản của công nghệ Blockchain bao gồm:
2.4.3.1 Chuỗi khối
Một chuỗi khối giống như một nơi để lưu trữ dữ liệu bán công cộng trong một không gian chứa (khối) Bất cứ ai trong hệ thống cũng có thể xác nhận việc bạn nhập thông tin vào vì trong khối chứa có chữ ký của bạn, nhưng chỉ có bạn (hoặc một chương trình) có thể thay đổi được dữ liệu của khối đó vì chỉ có bạn cầm khóa bí mật cho dữ liệu đó Trong đó, phần thông tin được lưu trữ mã hóa và phần header của nó là công khai[2]
Dữ liệu lưu trữ có thể là bất cứ thông tin gì: một văn bản, hình ảnh, video hoặc một số dư tiền mã hóa
Trang 167
2.4.3.2 Thuật toán đồng thuận
Hình 1 Thuật toán đồng thuận Thuận toán đồng thuận hay cơ chế phân tán đồng đẳng (Distributed) giúp xác thực các giao dịch một cách tin cậy mà không cần dựa vào một bên thứ ba nào
Thuận toán đồng thuận hay cơ chế phân tán đồng đẳng (Distributed) - Cơ chế này ngược lại với mô hình cổ điển về cơ chế đồng thuận tập trung – nghĩa
là khi một cơ sở dữ liệu tập trung được dùng để quản lý việc xác thực giao dịch Một sơ đồ phân tán đồng đẳng chuyển giao quyền lực và sự tin tưởng cho một mạng lưới phân tán đồng đẳng và cho phép các nút của mạng lưới đó liên tục lưu trữ các giao dịch trên một khối (block) công cộng, tạo nên một chuỗi (chain) độc nhất: chuỗi khối (Blockchain)[3]
2.4.3.3 Hợp đồng thông minh
Công nghệ Blockchain cung cấp nền tảng để khởi chạy hợp đồng thông minh (smart contracts) Đây là những chương trình tự động, ẩn danh chạy trên nền tảng Blockchain và thực hiện theo những điều kiện cụ thể để thực hiện một chức năng nào đó
Đây thực sự là bước đột phá mang tính cách mạng của Blockchain khi nó mang lại sự linh hoạt, tốc độ, bảo mật và tự động hóa hoàn toàn Điều này có thể tạo nên một hệ thống được tin tưởng tuyệt đối mà vẫn cắt giảm được chi phí Hợp đồng thông minh có thể được lập trình để thực hiện các hành động
mà người dùng cần và tùy theo từng yêu cầu kinh doanh cụ thể
2.4.3.4 Tính toán tin cậy
Khi bạn kết hợp các nền tảng đằng sau chuỗi khối, cơ chế đồng thuận phi tập trung và hợp đồng thông minh, bạn sẽ nhận ra rằng chúng hỗ trợ cho việc truyền bá các nguồn lực và giao dịch theo một cách ngang hàng, và trong khi
Trang 178
làm điều đó, chúng cho phép các máy tính tin tưởng và xác thực lẫn nhau ở một mức độ sâu
2.4.3.5 Bằng chứng công việc
Các node tham gia vào hệ thống Blockchain cùng thực hiện các tính toán
để tìm ra hash cho khối block mới thỏa mãn các điều kiện nhất định
2.4.4 Tìm hiểu về sổ phân tán
Mục tiêu của Blockchain là cho phép thông tin kỹ thuật số được ghi lại
và phân phối, nhưng không được chỉnh sửa Theo cách này, Blockchain là nền tảng cho các sổ cái bất biến hoặc các bản ghi của các giao dịch không thể thay đổi, xóa hoặc phá hủy Đây là lý do tại sao Blockchains còn được gọi là công nghệ sổ cái phân tán (DLT)
Công nghệ sổ cái phân tán (DLT) là một giao thức cho phép hoạt động
an toàn của cơ sở dữ liệu kỹ thuật số phi tập trung
DLT cho phép lưu trữ tất cả thông tin một cách an toàn và chính xác bằng cách sử dụng mật mã Điều tương tự có thể được truy cập bằng cách sử dụng "khóa" và chữ ký mật mã[3]
Ý tưởng về một sổ cái phân tán không hoàn toàn mới và nhiều tổ chức vẫn duy trì dữ liệu ở các địa điểm khác nhau Tuy nhiên, mỗi vị trí thường nằm trên một hệ thống trung tâm được kết nối, hệ thống này sẽ cập nhật từng
vị trí theo định kỳ Điều này làm cho cơ sở dữ liệu trung tâm dễ bị tấn công bởi tội phạm mạng và dễ bị chậm trễ vì cơ quan trung tâm phải cập nhật từng ghi chú ở xa
Sổ cái Blockchain thường được mô tả là phi tập trung vì nó được sao chép qua nhiều người tham gia mạng, mỗi người trong số họ cộng tác trong việc bảo trì nó Chúng ta sẽ thấy rằng phân quyền và cộng tác là những thuộc tính mạnh mẽ phản ánh cách các doanh nghiệp trao đổi hàng hóa và dịch vụ trong thế giới thực
2.4.5 Lợi ích Blockchain mang lại
Tăng hiệu suất làm việc của hệ thống: Đây là tính năng đầu tiên và cốt yếu nhất của phần mềm này Điều tuyệt vời nhất của Blockchain đó chính là
nó có thể gia tăng công suất hoạt động của toàn bộ hệ thống Nhờ vào việc sẽ
có nhiều máy tính hoạt động cùng một lúc trong cùng một mạng lưới, giúp giải quyết công việc hiệu quả hơn – tối ưu hơn so với việc chỉ tập trung quyền kiểm soát vào một máy tính cụ thể[1]
Trang 189
Tính năng bảo mật tốt hơn: Công nghệ Blockchain sẽ có tính năng bảo mật tốt hơn bởi vì sẽ không có bất kỳ một khe hở nào có thể được tận dụng để đánh sập hệ thống – thậm chí là đối với các hệ thống tài chính có nguy cơ tiềm
ẩn cao nhất
Tính ổn định: Bởi vì Blockchain được xây dựng trên nền tảng sổ cái (ledger) làm cốt lõi Bất kỳ nền tảng tập trung nào đều cũng có thể dễ dàng bị xâm nhập bởi các hacker và đòi hỏi sự tin tưởng từ bên thứ ba Nhưng với Blockchain thì chúng ta sẽ luôn cần đạt được sự đồng thuận giữa các user (người dùng), exchange (giao dịch) và nodes operator (nút toán tử) để có thể thay đổi được dữ liệu của Blockchain
Xử lý nhanh hơn: Blockchain hoàn toàn có thể xử lý được lượng lớn dữ liệu bởi vì chúng xử lý dữ liệu với một tốc độ rất nhanh Từ đó, tiết kiệm được rất nhiều thời gian, tiền bạc và mang lại sự tiện lợi
Nền tảng phi tập trung: Công nghệ phi tập trung cung cấp cho bạn khả năng lưu trữ tài sản vào trong hệ thống thông qua Internet Chủ sở hữu sẽ có quyền kiểm soát trực tiếp hệ thống và chuyển giao tài sản của mình sang bất
kỳ một người nào khác thông qua một chiếc chìa khóa riêng
Tính khắc phục: Nhờ vào sự minh bạch trong công nghệ của Blockchain, chúng ta sẽ có thể giải quyết được những vấn đề rắc rối liên quan đến việc gian lận
2.5 Tìm hiểu về Hyperledger
Hình 2 Giới thiệu Hyperledger Hyperledger là một dự án mã nguồn mở, nó xây dựng một hệ sinh thái các giải pháp và người dùng trên nền tảng công nghệ Blockchain nhằm giải quyết các vấn đề trong ngành công nghiệp
Trang 1910
Hyperledger thuộc tổ chức Linux Foundation NodeJs, Alljoyn, Dronecode là một số dự án nổi tiếng của Linux Foundation Mục đích của Linux Foundation là tạo ra một cộng đồng các nhà phát triển làm việc trên các
dự án nguồn mở, nhằm duy trì sự phát triển của các dự án, trong đó, mã nguồn
dự án luôn được nâng cấp, sửa đổi và phân phối lại[9]
Hình 3 Thành phần Hyperledger Trên mạng Hyperledger, nó lại là một câu chuyện hoàn toàn khác! Các peer liên kết trực tiếp với nhau và chỉ có sổ cái của riêng họ được cập nhật về thỏa thuận giao dịch Các bên giúp thực hiện giao dịch chỉ được biết một lượng thông tin đủ để họ cần để chuyển tiếp và cho phép giao dịch trên mạng Tất cả điều này được thực hiện nhờ kiến trúc mô đun của Hyperledger,
nó làm cho các cơ chế như thuật toán đồng thuật trở thành một tính năng có thể tùy biến (plug-and-play) Trong kiến trúc này, những đặc điểm đáng chú ý nhất được thể hiện trong các peer của mạng Các peer đã được chia thành ba vai trò riêng biệt, đó là:
Người chứng thực (Endorser): Các endorser là những peer thực thi các giao dịch trong chaincode container và đề xuất giao dịch lên mạng dựa trên kết quả của hợp đồng thông minh Tất cả các endorser peer phải được cài đặt chaincode
Người cam kết (Committer): Đây là những peer không nhất thiết phải cài đặt chaincode,chúng lưu trữ sổ cái đầy đủ (full ledger) Sự khác biệt chính giữa committer peer và endorser peer là việc committer peer không thể gọi chaincode hoặc chạy các hàm trong hợp đồng thông minh
Người đồng ý (Consenters): Các nút này chịu trách nhiệm điều hành sự đồng thuận của mạng Consenters có trách nhiệm xác nhận các giao dịch và quyết định các giao dịch sẽ được đưa vào sổ cái
Trang 2011
Một số framework của Hyperledger:
Hình 4 Một số framework của Hyperledger
Hyperledger Sawtooth
Hình 5 Hyperledger Sawtooth Loại hình: Công nghệ sổ cái phân tán (Distributed Ledger Technology), Smart Contract Engine
Sawtooth là một nền tảng Blockchain doanh nghiệp được phát triển bởi Intel, chạy với một thuật toán đồng thuận mới có tên Proof of Elapsed Time (PoeT), cho phép doanh nghiệp tương tác với các sổ cái phân tán (distributed ledgers) nhằm phục vụ các mục đích khác nhau
Hyperledger Iroha
Hình 6 Hyperledger Iroha Loại hình: Công nghệ sổ cái phân tán (Distributed Ledger Technology), Smart Contract Engine, thư viện tiện ích (utility library)
Iroha là một framework Blockchain được thiết kế đơn giản và dễ tích hợp vào các dự án cơ sở hạ tầng yêu cầu sử dụng công nghệ sổ cái phân tán
Trang 2112
Hyperledger Indy
Hình 7 Hyperledger Indy Loại hình: Sổ cái phân tán (Distributed Ledger ), thư viện tiện ích (utility library)
Indy là một sổ cái phân tán được xây dựng cho mục đích định danh phi tập trung Nó cung cấp các công cụ, thư viện và các component có thể tái sử dụng để tạo và sử dụng các danh tính kỹ thuật số (digital identities) một cách độc lập
Hyperledger Fabric
Hình 8 Hyperledger Fabric Loại hình: Công nghệ sổ cái phân tán (Distributed Ledger Technology), Smart Contract Engine
Fabric là một dự án được phát triển dưới sự cố vấn của IBM Fabric đang
là nền tảng Blockchain đang được chấp nhận rộng rãi nhất bởi các doanh nghiệp hàng đầu Được xây dựng như một framework mô-đun nơi các ứng dụng có thể dễ dàng mở rộng ở mọi cấp độ, Fabric dự định cung cấp các dịch
vụ Blockchain cơ bản như minh bạch, phân cấp và bảo mật
Trang 2213
2.6 Tìm hiểu về công nghệ Hyperledger Fabric
2.6.1 Giới thiệu về Hyperledger Fabric
Hình 9 Giới thiệu Hyperledger Fabric Hyperledger Fabric, một dự án mã nguồn mở từ Linux Foundation, là khuôn khổ Blockchain mô-đun và là tiêu chuẩn thực tế cho các nền tảng Blockchain doanh nghiệp Được dự định làm nền tảng để phát triển các ứng dụng cấp doanh nghiệp và giải pháp công nghiệp, kiến trúc mô-đun mở sử dụng các thành phần plug-and-play để đáp ứng nhiều trường hợp sử dụng Hyperledger Fabric là một nền tảng sổ cái phân tán mở, đã được chứng minh, cấp doanh nghiệp Nó có các kiểm soát quyền riêng tư nâng cao nên chỉ những dữ liệu bạn muốn chia sẻ mới được chia sẻ giữa những người tham gia mạng “được phép” (đã biết)
Hyperledger Fabric được khởi xướng bởi Digital Asset và IBM và hiện
đã nổi lên như một liên doanh hợp tác giữa các ngành, hiện đang được tổ chức bởi Linux Foundation Trong số một số dự án Hyperledger, Fabric là dự án đầu tiên thoát khỏi giai đoạn “ươm tạo” và đạt được giai đoạn “hoạt động” vào tháng 3 năm 2017
Lợi ích của Hyperledger Fabric:
Permissioned network (Kiểm soát mạng): Thiết lập sự tin cậy phi tập trung trong một mạng lưới những người tham gia đã biết thay vì một mạng lưới mở gồm những người tham gia ẩn danh
Confidential transactions (Giao dịch bí mật): Chỉ hiển thị dữ liệu bạn muốn chia sẻ với các bên mà bạn muốn chia sẻ
Pluggable architecture (Kiến trúc có thể xếp gọn): Điều chỉnh Blockchain cho phù hợp với nhu cầu của ngành bằng một kiến trúc có thể cắm
Trang 232.6.2 Đặc điểm mạng Hyperledger Fabric
Hyperledger Fabric được phát triển bởi Hyperledger Và được tạo ra với
Tuy nhiên, Hyperledger Fabric sẽ không dễ sử dụng cho người mới Bởi
vì nó được hoạt động như một framework mô-đun, nơi mà các ứng dụng có thể dễ dàng mở rộng ở mọi cấp độ Hyperledger Fabric hi vọng sẽ trở thành nhà cung cấp các dịch vụ Blockchain minh bạch, phân cấp và bảo mật
Trang 2415
2.6.3 Kiến trúc mạng Hyperledger Fabric
2.6.3.1 Cấu trúc cơ bản của một mạng Hyperledger Fabric
Hình 10 Cấu trúc cơ bản Hyperledger Fabric
N: (Network) Mạng
NC: Network Configuration (Cấu hình của mạng)
C: Channel (Kênh) tập hợp các tổ chức có vai trò nhất định trong cùng một
quy trình kinh doanh
CC: Channel Configuration (Cấu hình của kênh)
R: Organization (Tổ chức)
O: Orderer Node: Nếu như trong Public Blockchain, tất cả các node của mạng
đều tham gia vào quá trình đồng thuận, thì ở Hyperledger Fabric chỉ có Orderer tham gia vào quá trình đó
P: Peer, là điểm tương tác giữa các thành viên trong tổ chức tương ứng với
kênh, mọi hành động của người dùng đều phải đi qua peer
S: Smart Contract (Chaincode) được cài đặt trên kênh, định nghĩa rõ các
struct, các hành động mà người dùng có thể thực hiện để tương tác trạng thái của struct được lưu trong sổ cái
L: Ledger ( Sổ cái ), lưu trữ trạng thái của các đối tượng
CA: Certificate Authority, phát hành identity cho người dùng hoặc node của tổ
chức tương ứng
A: Application, ứng dụng hay giao diện (web, mobile app) giúp người dùng
tương tác với hệ thống dễ dàng hơn
Trang 25P: (Peer node) Nút ngang hàng
S: (Chaincode) Hợp đồng thông minh
L: (Ledger) Sổ cái
Giải thích về sơ đồ trên:
+ Network N bao gồm các peer lần lượt là: P1, P2 và P3
+ Mỗi P(Peer) lưu trữ 1 bản sao của L1 (ledger)
+ P1, P2, P3 sử dụng cùng 1 chaincode S1 để truy cập bản sao của L1(Ledger)
Các ứng dụng ngang hàng có thể được tạo, bắt đầu, dừng, cấu hình lại và thậm chí là xóa Họ đưa ra một tập hợp các API cho phép quản trị viên và ứng dụng tương tác với các dịch vụ mà họ cung cấp
Trang 2617
2.6.3.3 Mối liên hệ Peer – Ledger – Chaincode
Hình 12 Mối quan hệ Peer – Ledger - Chaincode Một peer (P1) lưu trữ một bản sao của chaincode (S1) và ledger (L1) trên
nó Trên mỗi peer không chỉ lưu trữ 1 chaincode hoặc 1 ledger mà còn có thể lưu trữ nhiều chaincode hoặc ledger Do mỗi peer lưu trữ Ledger, chaincode, các client và admin phải tương tác với một peer nếu họ muốn truy cập ledger hay chaincode Đó là lý do tại sao các peer được coi là thành tố cơ bản nhất của Fabric[9]
Một peer có thể trả về kết quả của một truy vấn cho client application ngay lập tức vì tất cả các thông tin cần thiết để đáp ứng truy vấn đều nằm trong bản sao của ledger được lưu trên peer đó Tuy nhiên, các client application cũng có thể kết nối với một hoặc nhiều peer khác thực hiện truy vấn nếu nghi ngờ dữ liệu lưu trên peer hiện tại bị sai
Khi một peer được tạo khởi tạo, vẫn chưa có Ledger cũng như Chaincode được lưu trên nó Sau này chúng ta sẽ tìm hiểu cách Ledger được tạo ra như thế nào và cách cài đặt Chaincode trên các peer
Trang 2718
2.6.3.3 Mối liên hệ Peer với Channel
Hình 13 Mối liên hệ Peer - Channel Channel là cơ chế để các peer cũng như các thành phần khác có thể giao tiếp với nhau
Channel được hiểu đơn giản như một nhóm các tổ chức cùng chung một chuỗi giá trị tham gia vào cùng một channel, một tổ chức có thể tham gia vào nhiều channel, và peer như là điểm tương tác của tổ chức với channel tương ứng[9]
2.6.3.3 Mối liên hệ Peer với Org
Hình 14 Mối liên hệ Peer - Org Bởi vì Blockchain network là một mạng phi tập trung nên nó được quản
lý bởi một tập hợp các tổ chức chứ không phải là một tổ chức đơn lẻ Các peer
là trọng tâm của cách thức mà loại mạng phân tán này hình thành và là điểm kết nối của các tổ chức với network[9]
Trang 2819
2.6.3.4 Mối liên hệ Applications and Peers
Hình 15 Mối liên hệ Applications - Peer Thông qua kết nối ngang hàng, các ứng dụng có thể thực thi các mã lệnh
để truy vấn hoặc cập nhật sổ cái Kết quả của giao dịch truy vấn sổ cái được trả về ngay lập tức, trong khi cập nhật sổ cái liên quan đến sự tương tác phức tạp hơn giữa các ứng dụng, đồng nghiệp và người đặt hàng
Một ứng dụng ngang hàng có thể trả lại kết quả của một truy vấn cho một ứng dụng ngay lập tức vì tất cả thông tin cần thiết để đáp ứng truy vấn đều nằm trong bản sao cục bộ của sổ cái Mỗi peer không bao giờ tham khảo ý kiến của các peer khác để trả lời một truy vấn từ một ứng dụng Tuy nhiên, các ứng dụng có thể kết nối với một hoặc nhiều peer để đưa ra một truy vấn Giao dịch cập nhật bắt đầu theo cách tương tự như giao dịch truy vấn, nhưng có thêm hai bước Mặc dù các ứng dụng cập nhật sổ cái cũng kết nối với các ứng dụng ngang hàng để gọi một mã chaincode, không giống như các ứng dụng truy vấn sổ cái, một ứng dụng ngang hàng riêng lẻ không thể thực hiện cập nhật sổ cái vào lúc này, vì các ứng dụng khác trước tiên phải đồng ý với thay đổi - một quá trình được gọi là đồng thuận
2.6.3.5 Tìm hiểu về ledger
Sổ cái là một khái niệm chính trong Hyperledger Fabric Nó lưu trữ thông tin thực tế quan trọng về các đối tượng kinh doanh, cả giá trị hiện tại của các thuộc tính của đối tượng và lịch sử của các giao dịch dẫn đến các giá trị hiện tại này
Trang 2920
Hình 16 Cấu trúc Ledger Ledger khi phân tích ra sẽ bao gồm 2 đối tượng: Blockchain và World State(Trạng thái hiện tại của dữ liệu) Chúng ta có thể tùy chọn database để lưu Ledger trong đề tài này sẽ sử dụng CouchDB
Blockchain lưu lại toàn bộ giao dịch, giá trị của các đối tượng sau khi thực hiện các giao dịch ấy được lưu vào World State
Mạng duy trì nhiều bản sao của một sổ cái - được giữ nhất quán với mọi bản sao khác thông qua một quá trình được gọi là đồng thuận Thuật ngữ Công nghệ Sổ cái Phân tán (DLT) thường được kết hợp với loại sổ cái này - một loại sổ cái về mặt logic, nhưng có nhiều bản sao nhất quán được phân phối trong một mạng lưới
2.6.3.5 Tìm hiểu về Smart Contracts và Chaincode
Hình 17 Smart Contracts – chaincode example Smart Contract xác định các quy tắc giữa các tổ chức khác nhau trong các hành động Các application gọi một smart contract để tạo ra các giao dịch được ghi lại kết quả trên Ledger
Trang 3021
Trong hình trên, chúng ta có thể thấy hai tổ chức ORG1 và ORG2 đã định nghĩa Smart Contract như thế nào để query, transfer và update Các application từ các tổ chức này gọi smart contract này để thực hiện một bước đã thỏa thuận trong quy trình kinh doanh
2.6.3.6 Tìm hiểu về ordering node
Hầu hết các mạng Public Blockchain, chẳng hạn như Ethereum và Bitcoin, bất kỳ node nào cũng có thể tham gia vào quá trình đồng thuận (consensus) Hyperledger Fabric thì khác, nó có một loại node được gọi là một orderer (hay còn được gọi "ordering node"), thực hiện nhiệm vụ "consensus",
có thể là chỉ có 1 ordering node trong một network, hoặc có thể có nhiều node tạo nên 1 ordering service
Hyperledger Fabric được thiết kế dựa trên các thuật toán có tên Deterministic consensus (Deterministic là một thuật toán , với một đầu vào cụ thể, sẽ luôn tạo ra cùng một đầu ra, với máy cơ bản luôn đi qua cùng một chuỗi trạng thái.), nên bất kỳ block nào đã được các peer validates và được tạo bởi ordering service thì đều được đảm bảo là chính xác Ledger sẽ không thể xảy ra tình trạng rẽ nhánh như các Blockchain khác
Ngoài ra, ordering còn lưu trữ các thông tin khác như: tổ chức nào được phép tạo channel, ai có thể thay đổi các cấu hình channel, và tất cả hành động thay đổi cấu hình đó đều phải đi qua orderer
2.6.4 Tìm hiểu về một số ứng dụng phát triển mạng Blockchain Hyperledger
2.6.4.1 Docker
Khái niệm
Hình 18 Khái niệm docker Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa) Ban đầu viết bằng Python, hiện tại đã chuyển sang Golang Docker khá giống virtual machine
Trang 3122
Một số khái niệm trong docker:
+ Docker Engine : là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng
+ Docker Hub: là một “github for docker images” Trên DockerHub có hàng ngàn public images được tạo bởi cộng đồng cho phép bạn dễ dàng tìm thấy những image mà bạn cần Và chỉ cần pull về và sử dụng với một số config mà bạn mong muốn
+ Images: là một khuôn mẫu để tạo một container Thường thì image sẽ dựa trên 1 image có sẵn với những tùy chỉnh thêm Ví dụ bạn build 1 image dựa trên image Centos mẫu có sẵn để chạy Nginx và những tùy chỉnh, cấu hình để ứng dụng web của bạn có thể chạy được Bạn có thể tự build một image riêng cho mình hoặc sử dụng những image được chia sẻ từ cộng đồng Docker Hub Một image sẽ được build dựa trên những chỉ dẫn của Dockerfile + Container: là một instance của một image Bạn có thể create, start, stop, move or delete container dựa trên Docker API hoặc Docker CLI
+ Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host
+ Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý các đối tượng như Container, Image, Network và Volumes thông qua REST API Các Docker Daemon cũng giao tiếp với nhau để quản lý các Docker Service
+ Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một image + Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo
Container trong Docker
Các containers cho phép lập trình viên đóng gói một ứng dụng với tất cả các phần cần thiết, chẳng hạn như thư viện và các phụ thuộc khác, và gói tất cả
ra dưới dạng một package
Tính hữu ích mà Docker mang lại
- Tính dễ ứng dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên, sys admin… nó tận dụng lợi thế của container để build, test nhanh chóng Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, private cloud… Câu thần chú là “Build once, run anywhere”
- Tốc độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container trong vài giây
Trang 3223
- Môi trường chạy và khả năng mở rộng: Bạn có thể chia nhỏ những chức năng của ứng dụng thành các container riêng lẻ Ví dụ: Database chạy trên một container và Redis cache có thể chạy trên một container khác trong khi ứng dụng Node.js lại chạy trên một cái khác nữa Với Docker, rất dễ để liên kết các container với nhau để tạo thành một ứng dụng, làm cho nó dễ dàng scale, update các thành phần độc lập với nhau
2.6.4.2 Nodejs
NodeJS là mã nguồn mở chạy trên môi trường V8 JavaScript runtime (một trình thông dịch JavaScript chạy cực nhanh trên trình duyệt Chrome) NodeJS giúp các nhà phát triển xây dựng các ứng dụng web một cách đơn giản và dễ dàng mở rộng
Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ Dù sao thì chúng ta cũng nên biết qua một chút chút lịch sử của thứ mà chúng ta đang học một chút chứ nhỉ? =)) NodeJS có thể được dùng để xây dựng các loại ứng dụng khác nhau như các ứng dụng dòng lệnh, ứng dụng web, ứng dụng trò chuyện theo thời gian thực, máy chủ REST API, Tuy nhiên, NodeJS thường được dùng chủ yếu để xây dựng các chương trình mạng như máy chủ web, tương tự như PHP, Java hoặc ASP.NET
2.6.4.3 Python
Ngôn ngữ Python là một ngôn ngữ lập trình mã nguồn mở, đa nền tảng,
dễ học dễ đọc Python có cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Vì thế nó được sử dụng rộng rãi
Python là ngôn ngữ hỗ trợ nhiều mẫu đa lập trình khác nhau như: mệnh lệnh, lập trình hướng đối tượng, lập trình hàm,… được dùng đa lĩnh vực: web, 3D CAD,…
Ưu điểm của ngôn ngữ python:
Là ngôn ngữ dễ học đối với người mới bắt đầu, nhưng nó cũng là ngôn ngữ được các lập trình viên sử dụng
Khả năng mở rộng cao, thích hợp cho cả các dự án lớn và các chương trình nhỏ
Trang 33Điểm mạnh của Go là bộ thu gom rác và hỗ trợ lập trình đồng thời (tương tự như đa luồng – multithreading) Go là một ngôn ngữ biên dịch như C/C++, Java, Pascal… Go được giới thiệu vào năm 2009 và được sử dụng hầu hết trong các sản phẩm của Google
Không hỗ trợ quá tải toán tử hoặc ghi đè phương thức
Không hỗ trợ thao tác trên con trỏ (vì lý do bảo mật)
Không hỗ trợ kiểu Generic (giống như template trong C++)
2.6.4.5 RESTful API
RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế Web services) để tiện cho việc quản lý các resource Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP
Thành phần của RESTful API:
API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng
Trang 3425
dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc
dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử lý dữ liệu
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource RESTful là một trong những kiểu thiết
kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụng web để quản các resource RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng để thiết kế một RESTful API
Cách thức hoạt động của RESTful API:
Hình 19 Sự tương tác Application – API - Client REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng
GET (SELECT): Trả về một Resource hoặc danh sách Resource
POST (CREATE): Tạo mới một Resource
PUT (UPDATE): Cập nhật thông tin cho Resource
DELETE (DELETE): Xoá một Resource