TÓM TẮT KHÓA LUẬNNội dung đề tài: Bài khóa luận này sẽ tập trung vào việc áp dụng công nghệ chuỗi khối vào việc phát triên một ứng dụng bâu cử trực tuyên trên nên tảng trình duyệt và yêu
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HE THONG THONG TIN
NGUYEN NGỌC KHƯƠNG DUY - 19521426
VUONG THỊNH LỢI - 19520691
KHÓA LUẬN TÓT NGHIỆP
UNG DỤNG CÔNG NGHỆ CHUOI KHOI TRONG VIỆC
XÂY DỰNG HỆ THÓNG BẦU CỬ
Applying blockchain technology in building voting system
KY SU NGANH HE THONG THONG TIN
GIANG VIEN HUONG DAN THS NGUYEN HO DUY TRI
TP HO CHi MINH, 2023
Trang 2LỜI CẢM ƠN
Chúng em xin bày tỏ lòng biết ơn đối với ThS Nguyễn Hồ Duy Tri người đã tận tình
chỉ bảo giúp đỡ em trong học tập, nghiên cứu và ThS Hà Lê Hoài Trung đã góp ý phản biện giúp chúng em hoan thành luận văn này.
Chúng em xin chân thành cảm ơn các thầy cô, khoa Hệ thống thông tin trường Đạihọc Công nghệ thông tin — Dai học quốc gia TP HCM đã tạo điều kiện cho chúng em
trong thời gian học tập tại trường.
Mặc dù đã có nhiều cố gắng va nỗ lực dé hoàn thành tốt luận văn nhưng chắc chắn sẽ
không tránh khỏi những thiếu sót Kính mong nhận được sự chỉ bảo, đóng góp củacác thầy, cô giáo
Chúng em xin chân thành cảm ơn!
Trang 3MỤC LỤCChương 1 TONG QUAN VE DE TÀII - 2-2 ©52££2£E+£E+£EtzEzEeerxerxeres 17
1.1 Lý do chon để tai c ceccecccccescsscssessessessessessesesecsessessessessessessssssessesseeseeseeeessees 171.2 Đối tượng nghiên cứu - 2 2 £+E+k£EE£EEEEEEEEEEE2E1211217171 2121 xe 17
1.3 Pham vi nghiÊn CỨU - 5 c1 11x HH ng vờ 17
“"h ẩn ` /(Ý£ đ ` vẻ h aa 28
2.6 Angpular đ ÁN nọ D / Lee 29
Chương3 HỆ THONG LƯU TRU SỬ DUNG CÔNG NGHỆ CHUOI KHOI31
3.1 Khảo sát một số nền tảng chuỗi khối - 2 + +22++x++zx+2zszẻz 313.2 Sơ đồ hệ thong ecceccceccccccsssesssesssesssssseessesssessssssessussssessesssecsusesussseessecseesessecs 31
BQ Kênh 2k t2 HT ererrre 32
3.2.2 — TỔ chức -c+ckc2E2ESEEEEE21211221 211121111 33
3.2.3 Chuỗi mã :©2: SE teEESESEEEEErrkerkerrerrerreree 33
3.2.4 Cơ quan cấp chứng chỉ - ¿5£ +k+Sk+EE+EEEEEEEEEEEEEEerkerkerkeree 33
3.2.5 Dot liệu bí mật ¿ :+-++cxtEE++ESEkerkerkrrrrerrerrrrvee 34
3.3 Các quy trÌnh sọ nà 34
3.3.1 Tạo cuộc bầu chọn - + +++++Ek+EE+EE£EESEEerkerErrrrkerkerree 353.3.2 — Bỏ phiếu 2c C22 TT TE101211111 2111 11 1e cre 37
Trang 43.3.3 Đóng cuộc bầu chọn -¿-©2¿2-++2c++2E+tEEteExrtrxerreerkeerxee 383.4 Phát triển chuỗi mã - 2 £++k+EE+EE£+EE£EEEEEEEEEEEEEEEEEEEEEEEEErkrrkerreee 40
3.4.1 _ Định nghĩa đối tượng CBC - :- 25<+E++E2EzEerEerkerxereeree 40
3.4.2 Các hàm trong chuỗi mã -¿ - 52 ©2+E+E££E+E+EEE£krEerrkrrerrrs 42
Chương 4 PHƯƠNG PHÁP BẢO MẬTT - + +2 +EE+EEeEEeEEErrkerkerrerex 52
AL Khao Sat nh 5A 5 52
4.1.2 Mã hóa đường cong €ÏI 5 SĂ + sirirrreerrerkrre 53
4.1.2.1 ECDSA cececccccccsessssssessessesssessessessussssssessessusssessessessusssessessessessseesecses 53 4.1.2.2 EdDSA JEZZZ ưất 54
4.1.2.3 ECDH@GZ/@£c À 54
413 KếtquếZ Ê đ ‹& )Ì / 55
4.2 Sử dụng EdDSA 220 2c 21 2 222 E21 EEEcrrrrerrrree 57
4.2.1 Dinh danh BTC -++cEcSESEEEEEEEErEErrrrrkerkerreee 57
4.2.2 Mã hóa phiếu bầu -2¿©-+++++2+++Ex++rxrrreerkesrxrrrrees 59
4.2.3 Định danh định trƯỚC - - ¿5 5S E222 1E E2 EE£++zeeezeeeszeeeesz 60
4.3 So sánh giữa các phương pháp bảo mật - -c Sc*Ssseseeseree 62
4.3.1 Thur viện “ellIptiC” SG n1 3S vn ng ng re 62
4.3.2 Công cụ nội bộ của NodeJS - - S1 vs ng ngư, 63
4.3.3 Phương pháp mã hóa - - -c S S3 ng ng 64
4.3.4 Đánh giá hiệu suất -22 2cccEcEE2 2 EEEEEEEEEEErkerkerreee 65
4.3.5 Tổng kết -2c 2S k2 22212111 67
Chương 5 XÂY DUNG UNG DUNG oeeeecesceccessessesssesseeseesesssesseesesseessessesseeseees 68
5.I TOng quit c.ccccecceccecccccssesscsscssesscsssseesessessessessesuesscssssessessessssscsussssessessesseseessees 68
Trang 55.3.5 Đóng CBC vieecccscsssesssesssessssssesssecssessusssssssecssecsusssscssecsusssssesecasecsseeseceses 88
5.3.6 _ Tổng kết CBC 22222 EEEE211211211271 1112112111 89
5.3.7 Kiểm tra lịch sử CBC -+-c+ckc2E2ESEEEEEEEErrrrrkerkerree 92
5.4 Chức năng g1ao dIỆn + 2c tt TT HH, 95
5.4.1 _ Thay đổi ngôn ngữ -+c tk E221 EEEEerkrrkrree 955.4.2 Chế độ sáng/tối cc©cccccccrkrrreerreerkeerxee 98
Chương 6 TỐNG KẾT -2E+EEEEEEEEEEEeEEerkerrerrkee 101
6.1 Kết quả đạt được ¿22c 25+22c22 2222212211271 .1cEkrrree 1016.2 Ưu và nhược điểm cceccccscccscsssesesesssessssssssssecsuessssssscasecssecsssssecssecsssesesesecaes 101
6.2.1 Ưuđiểm -.- 522222 1016.2.2 Nhược điểm -:- s22 E212 21tr 101
6.3 Hướng phat tridn.ecececccecccceccessessesssessessesssessessessesscssessessessesssessessessessseess 102
6.4 Tổng Ket eccecceccccccsesscsssssssssecsessessesscsussucsssessessessssessussessssessessesassneaneaneseess 102
Trang 6DANH MỤC HÌNHHình 1.1 Polys
Hình 3.6 Tạo khóa bí mật cho CBC
Hình 3.7 Tạo các khóa bí mật cho CBC
Hình 3.8 Danh sách chữ ký mã hóa định danh được chỉ định
Hình 3.9 Xác thực danh tính phiếu bầu
Hình 3.10 ID của phiếu bầu
Hình 3.11 Lưu dữ liệu phiếu bầu lên số cái công khai
Hình 3.12 Đóng CBC
Hình 3.13 Lay đữ liệu phiếu bầu từ dữ liệu bí mật của tổ chức
Hình 3.14 Công khai đữ liệu bỏ phiếu sau khi đóng CBC
Hình 3.15 Lấy nội dung phiếu bầu
Hình 3.16 Lay lịch sử thay đổi của CBC
Hình 4.1 RSA
Hinh 4.2 ECDSA
Hinh 4.3 M6 ta ECDH [3]
19 20 21
22 23 25 26
29 29
32
35
37
39 43 43
44
44 45
46
47 48 49
50 51 51 52 53 55
Trang 7Hình 4.4 Mã hóa định danh BTC 57
Hình 4.5 Kiểm tra định danh BTC khi tham gia CBC 58Hình 4.6 Mã hóa thông tin bầu chọn 60
Hình 4.7 Mã hóa định danh định trước 61
Hình 4.8 Kiểm tra định danh của phiếu bầu có phải định danh định trước 62
Hình 5.1 Sơ đồ tông quát 69Hình 5.2 Sơ dé use case 70Hình 5.3 Sơ đồ luồng sự kiện nghiệp vu “Tao CBC” 72Hình 5.4 Sơ đồ tuần tự nghiệp vụ “Tạo CBC” 72
Hình 5.5 Giao diện MainComponent 73
Hình 5.6 Giao diện CreateInfoComponent 74
Hình 5.7 Giao diện CreateOptionsComponent khi chọn ché độ don lựa chọn 75Hình 5.8 Giao diện CreateOptionsComponent khi chọn chế độ đa lựa chọn 75Hình 5.9 Giao diện CreateOptionsComponent khi chọn chế độ đa lựa chọn với giới
hạn lựa chọn 76
Hình 5.10 Lựa chon CBC “Công khai” 76
Hình 5.11 Lựa chon CBC “Riêng tư” 77
Hình 5.12 Lựa chọn CBC “Bí mật” 78
Hình 5.13 Kết quả tạo CBC 78Hình 5.14 Sơ đồ luồng sự kiện nghiệp vụ “Xác thực với CQCCC” 79Hình 5.15 Sơ đồ tuần tự nghiệp vụ xác thực với CQCCC 80Hình 5.16 Tham gia cuộc bầu chọn 80Hình 5.17 Kiểm tra CBC tôn tại 81
Hình 5.18 Xác thực danh tinh CBC 82
Hình 5.19 Điền định danh 82
Hình 5.20 Giao diện quản lý CBC 83
Hình 5.21 Sơ đồ luồng sự kiện của nghiệp vụ “Bỏ phiếu” 84Hình 5.22 Sơ đồ tuần tự của nghiệp vụ “Bỏ phiếu” 84Hình 5.23 Giao diện bỏ phiếu 85
Trang 8Hình 5.24 Sơ đồ luồng sự kiện của nghiệp vụ “Kiểm tra phiếu bầu” 86Hình 5.25 Sơ đồ tuần tự của nghiệp vụ “Kiểm tra phiêu bầu” 86Hình 5.26 Giao điện kiểm tra ID phiếu bầu 87Hinh 5.27 Kiém tra phiéu bau 87
Hinh 5.28 Két qua kiém tra phiéu bau 88
Hình 5.29 So dé luéng sự kiện của nghiệp vu “Đóng CBC” 88Hình 5.30 So đồ tuần tự của nghiệp vụ “Đóng CBC” 89Hình 5.31 Sơ đồ luồng sự kiện của nghiệp vụ “Tổng kết CBC” 90Hình 5.32 Sơ đồ tuần tự của nghiệp vụ “Tổng kết CBC” 91Hinh 5.33 Téng két CBC 92
Hình 5.34 Sơ đồ luồng sự kiện của nghiệp vụ “Kiểm tra lịch sử CBC” 93
Hình 5.35 So đồ tuần tự của nghiệp vụ “Kiểm tra lịch sử CBC” 93Hình 5.36 Giao điện nhập CBC dé kiểm tra lich sử 94Hình 5.37 Giao diện kết quả lịch sử CBC 94Hình 5.38 Lấy dữ liệu danh sách giao dịch 95Hình 5.39 Nút đổi ngôn ngữ ứng dụng 96
Hình 5.40 Giao diện tạo CBC ở tiếng Việt 96
Hình 5.41 Giao diện tao CBC ở tiếng Anh 97Hinh 5.42 Giao dién quan ly 6 tiéng Viét 97Hình 5.43 Giao diện quản lý ở tiếng Anh 98Hình 5.44 Nút đổi chế độ sáng/ tối 98Hình 5.45 Giao diện kết quả tạo CBC ở chế độ sáng 99Hình 5.46 Giao diện kết quả tao CBC ở chế độ tối 99Hình 5.47 Giao diện quan lý ở chế độ sáng 100Hình 5.48 Giao điện quản lý ở chế độ tối 100
Trang 9DANH MỤC BANG
Bang 3.1 Bảng thuộc tính của CBC - - 5 5 + kg HH gi rưệt 41
Bang 3.2 Các hàm trong chuỗi MA c.cecccccssessessessesseseseeseesecseeseesesuesueseseeseeseeseesease 42
Bang 4.1 Các nhóm phương pháp dé đánh giá 2-2 2+s2+s£+x+£xezxezszse2 65
Bang 4.2 Các hàm chuỗi mã dé đánh giá ¿2-2 22522 EE£+E+E££EerEerxerxersrree 66Bang 4.3 Kết qua do lường hiệu suất (đơn vị: mili-giây) 55-55 csccs s52 67
Bang 5.1 Danh sach tac nhan 0N ä 70 Bang 5.2 Danh sách nghi€p VU ceeccesceesseesnecesseeesceeeseeceseessaeceseeeeseeeesecesaeeneaeenaes 71
Trang 10DANH MỤC TỪ VIET TAT
STT Ký hiệu chữ viết tắt Chữ viết đầy đủ
1 BTC Ban tổ chức
2 CBC Cuộc bầu chọn
3 CK Chuỗi khối
4 CQCCC Co quan cap chimg chi
5 NTG Nguoi tham gia
Trang 11TÓM TẮT KHÓA LUẬN
Nội dung đề tài:
Bài khóa luận này sẽ tập trung vào việc áp dụng công nghệ chuỗi khối vào việc phát
triên một ứng dụng bâu cử trực tuyên trên nên tảng trình duyệt và yêu tô bảo mật của
công nghệ chuỗi khối trong việc lưu trữ thông tin dir liệu Do công nghệ chuỗi khối
là một công nghệ mới mẻ vả có tiêm năng trong ứng dụng các hệ thông bâu cử do tính bảo mật cao và lưu trữ dữ liệu an toàn Ngoài ra hiện tại trên thị trường chưa có
nhiêu các ứng dụng bâu cử đơn giản quy mô từ nhỏ đên vừa có áp dụng công nghệ
chuỗi khôi trực tuyến và dễ tiếp cận và sử dung.
Mục tiêu đề tài:
13
- Muc tiêu lý thuyết
le) Tìm hiểu và năm vững kiến thức về công nghệ chuỗi khối, hiểu được
cách làm/ xây dựng hệ thống với công nghệ chuỗi khối
Tìm hiểu cơ chế bảo mật được sử dụng khi ứng dụng công nghệ chuỗikhối trong phát triển ứng dụng có tính bảo mật cao
Tìm hiểu một số kỹ thuật/cách thức/phương pháp, so sánh, đánh giá vềkhả năng bảo mật của công nghệ chuỗi khối
Củng có kiến thức lập trình phát triển ứng dụng nền tảng trình duyệt
trực tuyến.
« Muc tiêu sản phầm
le) Xây dựng hệ thông bỏ phiếu dựa trên công nghệ chuỗi khối với các tinh
năng bảo mật, an toàn lưu trữ
Xây dựng được ứng dụng bầu cử bầu cử trên nền tảng trình duyệt trựctiếp với day đủ các chức năng, giao diện thân thiện, dé sử dụng
Áp dụng được các phương pháp bảo mật cho quá trình lưu trữ, truy xuất
dữ liệu bầu cử đã được lưu trên công nghệ chuỗi khối.
Trang 12Tìm hiệu vê công nghệ chuỗi khôi
Khảo sát một sô nên tảng công nghệ chuỗi khôi
Đánh gia ưu điêm, nhược điêm của các nên tảng đó qua đó xác
Xây dựng được một hệ thống chuỗi khối đã được chọn
‹ Tim hiểu một số phương pháp bảo mật được sử dụng trong công nghệ chuỗi
khối và hệ thống bầu cử dé áp dụng vào hệ thống
o Phương pháp thực hiện
Tìm và đọc một số bài báo, công trình nghiên cứu khoa học cóliên quan đến bảo mật trong công nghệ chuỗi khối và hệ thốngbầu cử
Đánh giá, so sánh ưu & nhược điểm để sàng lọc các phương
pháp khả thi và hợp lý
Tìm hiểu các phương án mà nền tảng đã cho, các thư viện hỗ trợ,
dé xem xét phương án áp dụng các phương pháp bảo mật đã
tìm hiéu.
o_ Dự kiến kết quả
Năm được các yêu tô ưu, nhược diém của một vài phương pháp
bảo mật công nghệ chuỗi khối và hệ thống bầu cử đã chọn và
tìm hiêu
Ap dụng thành công những phương pháp được chon và tìm hiéu
Trang 13‹ _ Xây dựng ứng dụng bau cử trực tuyến trên nền tảng trình duyệt
o Phương pháp thực hiện
« Tim hiểu các framework xây dựng ứng dụng trên nên tảng trình
duyệt hiện có trên thị trường
« Tìm hiểu các framework giao diện có thé sử dung dé tạo ra giao
diện thân thiện, dễ sử dụng,
« _ Đánh giáưu & nhược điểm các lựa chọn về framework xây dựng
ứng dung va giao diện dé đưa ra lựa chọn tối ưu nhất về mặt thời
gian và công sức.
o_ Dự kiến kết quả
« Chon được một framework xây dựng ứng dung và giao diện tối
ưu nhất
« Xây dựng ứng dung bau cử trực tuyến trên nền tảng trình duyệt
đáp ứng các nghiệp vụ cơ bản của một hệ thống bầu cử cơ bản
- _ So sánh, đánh giá kết quả đã đạt được của đề tài nghiên cứu
o Phương pháp thực hiện
« Tìm hiểu một vài tiêu chí của một hệ thống chuỗi khối về yêu tô
bảo mật, lưu trữ,
» Tim hiểu một vai tiêu chí của một hệ thống bầu cử
« Áp dụng các tiêu chí tìm được dé đánh giá, nhận xét hệ thống
bầu cử và chuỗi khối đã xây dựng
o_ Dự kiến kết quả
«= Xay dựng được một vài đồ thị/ bảng dé nhận xét các yếu tố về
bảo mật, hiệu suất, của hệ thống đã đạt được
Kết quả mong đợi:
- _ Hiểu rõ được kiến thức liên quan đến công nghệ chuỗi khối về hệ thống bầu
cử.
- Nam rõ, triển khai và đánh giá được các phương pháp bao mật đã được sử
dụng trong quá trình phát triển hệ thống bầu cử sử dụng công nghệ chuỗi khối
15
Trang 14Xây dựng được ứng dụng bầu cử trực tuyến trên nền tảng trình duyệt có sửdụng công nghệ chuỗi khối thân thiện va dé sử dụng
Trang 15Chương 1 TONG QUAN VE DE TÀI
Chương này giới thiệu tổng quát nội dung đề tài của bài khóa luận này, bao gồm lý
do chọn đề tài, đối tượng nghiên cứu, phạm vi nghiên cứu và các nghiên cứu liênquan đến hệ thống bầu cử sử dụng công nghệ chuỗi khối
1.1 Lý do chọn đề tài
Công nghệ chuỗi khối đã được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau như
tài chính, chuỗi cung ứng và chăm sóc sức khỏe Tuy nhiên, một trong những ứng
dụng hứa hẹn nhất của công nghệ chuỗi khối là trong lĩnh vực hệ thống bỏ phiếu bầu
cử Các hệ thống bầu cử phải đối mặt với nhiều thách thức như minh bạch, hiệu quả
và đúng đắn Trong bài khóa luận này, nhóm tác giả mong muốn khám phá cách công
nghệ chuỗi khối có thể được áp dụng dé xây dựng một hệ thống bỏ phiếu có thé vượt
qua những thách thức và tăng cường sự tin tưởng của những phiếu bầu chọn củangười tham gia Nhóm tác giả sẽ xem xét tài liệu hiện có về các hệ thống bỏ phiếudựa trên chuỗi khối, xác định các nguyên tắc và yêu cầu thiết kế chính, đồng thời đềxuất một kiến trúc và giao thức mới cho hệ thống bỏ phiếu dựa trên chuỗi khối có thé
hỗ trợ nhiều loại bầu cử và kế hoạch bỏ phiếu khác nhau
1.2 Đối tượng nghiên cứu
Khả năng áp dụng và tính bảo mật của công nghệ chuỗi khối trong hệ thống bỏ phiếubầu cử
1.3 Pham vi nghiên cứu
Tập trung tìm hiểu tính bảo mật, an toàn của hệ thống bỏ phiếu sử dụng công nghệchuỗi khối Các phương pháp bảo mật cơ bản như mật mã băm, mã hóa đường cong,
Các chức năng hệ thống như API, mô hình ghép nối song tuyến tính giữa các nút trên
mạng chuỗi khối và cơ quan cấp chứng chỉ xác thực danh tính, làm cầu nối giữa
hệ thống và ứng dụng giao diện trên trình duyệt.
Ứng dụng giao diện trên nền tảng trình duyệt trực tuyến gồm các chức năng và giao
diện cơ bản đề hiện thực hóa các chức năng của hệ thông mà không yêu cầu quá nhiều
về các chức năng nâng cao ngoài hệ thông và giao diện phức tạp.
17
Trang 161.4 Nghiên cứu liên quan
e Bai báo khoa học:
o A Blockchain-Based Network Security Mechanism for Voting Systems
Nhom tac gia: Hsin-Te Wu va Chang-Yi Yang
Nội dung tom tat: Bai nghiên cứu đề xuất cơ chế bảo mật mạng cho các hệ thống bỏ
phiếu sử dụng công nghệ chuỗi khối và ghép nối song tuyến tính Các tác giả lập luận
rằng chuỗi khối có thê cung cấp một giải pháp phân tán, minh bạch và công bằng chocác hệ thống bỏ phiếu điện tử có thé chống lại các cuộc tan công mạng và đảm bảotính toàn vẹn cua dif liệu Các tác giả sử dụng ghép nối song tuyến tinh dé dat đượctính ân danh, tính xác thực, tính toàn vẹn và tính không thoái thác trong các giao dich
bỏ phiếu Bài nghiên cứu trình bày cách thức hợp đồng thông minh có thể được sử
dụng để thiết lập các quy định liên quan đến cử tri và cách thức thực hiện bỏ phiếu
kín và hệ thống bỏ phiếu mở bằng cách sử dụng cơ chế được đề xuất [14]
o Secure Electronic Voting System using Blockchain Technology
Nhóm tác gia: Kashif Mehboob Khan, Junaid Arshad va Muhammad Mubashir Khan
Nội dung tóm tắt: Bài nghiên cứu nay dé xuất một hệ thong bỏ phiếu kỹ thuật số antoàn dựa trên công nghệ chuỗi khối phi tập trung ghi lại các giao dịch và đảm bảotính toàn vẹn và minh bạch Trinh bày việc thiết kế và triển khai hệ thống sử dụngnền tảng Multichain, là một khung phát triển chuỗi khối mã nguồn mở Bài nghiên
cứu cũng đánh giá hệ thống về bảo mật, quyền riêng tư, khả năng kiểm chứng, khả
năng mở rộng và kha năng sử dụng Bài nghiên cứu kết luận rằng hệ thống có thékiểm chứng từ đầu đến cuối, có thé khắc phục những hạn chế và thách thức của các
hệ thống bỏ phiếu điện tử hiện có [10]
- Ung dụng trên thị trường
o Polys
18
Trang 17Polys Use Casesv Solutions» Success Stories Blog Log In +
Blockchain-based online voting
Conduct remote elections and voting without
reputational or legal risks.
Hinh 1.1 PolysPolys là một hệ thống bỏ phiéu trực tuyến sử dung công nghệ chuỗi khối dé
đảm bảo tính bảo mật và minh bạch Cho phép người dùng tạo và quản lý các
cuộc bau cử, cũng như bỏ phiếu ân danh từ bat kỳ thiết bị nào Polys đã được
hàng trăm tô chức trên khắp thế giới sử dụng cho nhiều mục đích khác nhau, chăng hạn như giáo dục, kinh doanh và tác động xã hội Polys nham mục dich
làm cho việc bỏ phiếu trở nên dễ tiếp cận, thuận tiện và đáng tin cậy hơn với các công nghệ tiên tiến.
o Followmyvote
19
Trang 18© followmyvote.com —cetinvoived ourennẽsv rêo He Knowledge Center Q | me |
//A Quantum Shift In App Development Is Coming
Hinh 1.2 Followmyvote
Follow My Vote là một trang web nhằm mang một hệ thong bỏ phiếu trực tuyến bangcông nghệ chuỗi khối đến cho hàng triệu người trên khắp thé giới Trang web cungcấp thông tin về những ưu và nhược điểm của bỏ phiếu trực tuyến, những thách thức
và giải pháp sử dụng chuỗi khối cũng như tầm nhìn và sứ mệnh của nhóm Follow My
Vote.
20
Trang 19o Voatz
G Voatz How It Works Security & Technology v About Us v Resources v
Secure, accessible voting
at your fingertips.
The future of
Fast Company 2021 World Changing Webby Award Ideas 2021 Honoree
Multi-Category Apps and Software;
Finalist & Honoree Public Service & Activism
Hinh 1.3 Voatz
Voatz là công ty cung cấp các giải pháp bỏ phiếu di động an toàn va dé tiếp cận chocác cuộc bầu cử Sử dụng bảo mật điện thoại thông minh, xác minh danh tính từ xa,sinh trắc học và chuỗi khói dé bảo vệ thông tin và phiếu bầu của cử tri Voatz tạo ra
một dấu vét bằng giấy có thê kiểm chứng của cử tri dé kiểm toán và lập bảng kết quả
tức thì Voatz đã được các chính phủ và các đảng phái chính trị sử dụng trong các
cuộc bầu cử khác nhau trên khắp đất nước Voatz nhằm mục đích làm cho việc bỏ
phiêu trở nên thuận tiện va dé dang cho mọi người.
21
Trang 20Chương 2 CƠ SỞ LÝ THUYÉT
Chương này dé cập đến những công nghệ, ứng dụng nén tảng được sử dung trong bàikhóa luận bao gồm chuỗi khối, Hyperledger Fabric, NestJS, ngôn ngữ Javascript và
công cụ lập trình giao diện Angular.
2.1 Chuỗi khối
TECHNOLOGY
Hình 2.1 Chuỗi khối
Chuỗi khối là một loại cơ sở dữ liệu dùng chung khác với cơ sở đữ liệu thông thường
ở cách lưu trữ thông tin; chuỗi khối lưu trữ đữ liệu trong các khối được liên kết với
nhau thông qua mật mã Các loại thông tin khác nhau có thể được lưu trữ trên một
chuỗi khối, nhưng cách sử dụng phổ biến nhất cho các giao dich là số cái Trongtrường hợp của Bitcoin, chuỗi khối được phân cấp đề không một cá nhân hoặc nhómnao có quyền kiêm soát—thay vào đó, tat cả người dùng cùng nhau giữ quyền kiêm
soát Các chuỗi khối phi tập trung là bất biến, có nghĩa là dữ liệu đã nhập là khôngthể đảo ngược Đối với Bitcoin, các giao dịch được ghi lại vĩnh viễn và bất kỳ ai cũng
có thê xem được.
Công nghệ chuỗi khối có nhiều ứng dụng tiềm năng ngoài tiền điện tử, chăng hạn
như ứng dụng tài chính phi tập trung (DeFi), mã thông báo không thé thay thé (NFT)
và hợp đồng thông minh Các ứng dụng này có thé tận dụng tính bảo mật, tính minh
22
Trang 21bach và hiệu quả của các chuỗi khối dé tạo ra những cách mới dé trao đối giá trị và
tiễn hành kinh doanh Công nghệ chuỗi khối cũng có thé được sử dụng dé làm cho
dữ liệu trong bat kỳ ngành nao trở nên bat biên, giảm nhu câu về các bên thứ ba va bên trung gian dang tin cậy [5]
2.2 Hyperledger Fabric
<*, HYPERLEDGER
7 FABRIC
Hinh 2.2 Hyperledger Fabric
Hyperledger Fabric là một nền tang phô biến dé xây dựng các ứng dụng chuỗi khối
yêu cầu tính bảo mật, quyền riêng tư và khả năng mở rộng Nó được thiết kế theo
mô-đun và có thể mở rộng, cho phép các thành phần và giao thức khác nhau được thêmvào và tùy chỉnh Hyperledger Fabric hỗ trợ các hợp đồng thông minh được viết băng
nhiều ngôn ngữ khác nhau, chang hạn như Go, Java và Node.js Hyperledger Fabric
cũng cho phép nhiều tô chức cộng tác và chia sẻ dữ liệu một cách an toàn trên số cáiphân tán mà không cần dựa vào cơ quan trung ương Hyperledger Fabric là một trong
những dự án dưới sự bảo trợ của Hyperledger, được tô chức bởi Linux Foundation
Các hệ thống bỏ phiếu điện tử sử dụng Hyperledger Fabric có thé tận dụng các lợi ích
của công nghệ chuỗi khối, chăng hạn như tính minh bạch, tinh bat biến, bao mật và
khả năng mở rộng Trong hệ thống bỏ phiếu điện tử sử dụng Hyperledger Fabric, cửtri có thể bỏ phiếu bằng hợp đồng thông minh, sau đó được ghi lại trên số cái chuỗikhối theo cách bat biến Điều này đảm bảo rằng các phiếu bầu không thé bị giả mao
hoặc thao túng và danh tính của cử tri được bảo vệ bằng mã hóa Ngoài ra,
Hyperledger Fabric cho phép tạo các kênh và tổ chức khác nhau trong mạng, có thểcho phép các cấp độ truy cập và quyền riêng tư khác nhau cho các bên liên quan khácnhau trong quá trình bầu cử Ví dụ: cử tri có thể thuộc về một kênh, trong khi cơ quan
23
Trang 22bâu cử có thê thuộc vê kênh khác và kiêm toán viên có thê thuộc vê kênh thứ ba.
Băng cách này, mỗi kênh có thể có số cái và hợp đồng thông minh riêng và chỉ các
bên được ủy quyền mới có thể truy cập chúng Hyperledger Fabric cũng cung cấp
hiệu suât cao và khả năng mở rộng cho các hệ thông bỏ phiêu điện tử, vì nó sử dụng
kiến trúc mô-đun tách biệt quá trình xử lý giao dịch khỏi cơ chế đồng thuận Điềunày cho phép thực hiện song song các giao dịch và xác thực các khối nhanh hơn Hơnnữa, Hyperledger Fabric hỗ trợ các loại thuật toán đồng thuận khác nhau, chăng hạnnhư Raft hoặc Kafka, có thé duoc chon theo nhu cầu va sở thích của những người
tham gia mang [8]
24
Uu diém
o Kiến trúc mô-đun: Hyperledger Fabric cho phép các nha phat triển thêm
vào các thành phần khác nhau, chăng hạn như thuật toán đồng thuận,
hệ thống quản lý danh tính và hợp đồng thông minh, theo nhu cầu và
sở thích của họ Điều này cho phép tùy chỉnh và tính linh hoạt cho cáctrường hợp và tình huống sử dụng khác nhau
Ủy quyền mạng: Hyperledger Fabric được thiết kế với ý tưởng phânquyền mạng, trong đó tất cả những người tham gia đều có danh tính vàvai trò đã biết Điều này giúp tăng cường bảo mật, quyền riêng tư vàtuân thủ, cũng như giảm chỉ phí tính toán của các giao dịch ân danh
Hỗ trợ kênh: Hyperledger Fabric hỗ trợ tạo các kênh, là các mạng con
riêng trong mạng chính Các kênh cho phép các nhóm người tham gia
khác nhau chia sẻ dữ liệu và thực hiện các giao dịch mà không dé lộchúng với phần còn lại của mạng Điều này cải thiện hiệu quả và tính
bảo mật cho sự cộng tác của nhiêu bên.
‹ Nhuoc điểm
o_ Độ phức tạp: Hyperledger Fabric có kiến trúc và thiết kế phức tạp, có
thé đặt ra thách thức cho các nhà phát triển và người dùng Ví dụ:
Hyperledger Fabric yêu cầu một dich vụ order riêng biệt dé phát cácgiao dịch tới mạng, dịch vụ này bô sung thêm một lớp trừu tượng và
Trang 23điều phối Ngoài ra, Hyperledger Fabric có nhiều loại nút, chăng hạn
như peer, endorser, orderer va client, mỗi loại có chức năng và trách
nhiệm khác nhau, điều này có thé làm tăng độ khó hiểu và quản ly
mạng.
o_ Hiệu suất: Hiệu suất của Hyperledger Fabric có thể thay đổi tùy thuộc
vào cấu hình và khối lượng công việc của mạng Chăng hạn, thônglượng của Hyperledger Fabric có thể bị ảnh hưởng bởi các yếu tố như
sỐ lượng endorser, chính sách xác nhận, kích thước của các khối và cơ
chế đồng thuận Ngoài ra, độ trễ của Hyperledger Fabric có thê bị ảnh
hưởng bởi các yếu tố như số lượng kênh, số lượng giao dịch trên mỗi
kênh và cấu trúc liên kết mạng
dé thanh toán phí giao dịch va tai nguyên tính toán Ethereum liên tục được cải thiện
khám phá các khía cạnh khác nhau của giao thức như sự đồng thuận, thực thi, mật
mã, khả năng mở rộng và bảo mật nhờ cộng đông nghiên cứu tích cực và cởi mở.
25
Trang 24Hệ thông bâu chọn chuối khôi là một cách mới đê tiên hành các cuộc bâu chọn tận
dụng lợi thé của công nghệ sô cái phi tập trung Ethereum là một trong những lựachọn phô biến nhất đề phát triển các hệ thống như vậy, vì nó cung cấp tính minh bạch,
bảo mật và khả năng tiêp cận Tuy nhiên nó cũng có một sô ưu và nhược điêm: [4]
‹«ồ Uudiém
26
Cộng đồng lớn và tích cực gồm các nhà phát triển và người dùng hỗ trợ
và cung cấp phản hồi cũng như sự đôi mới
Ngôn ngữ lập trình mạnh mẽ và linh hoạt cho phép các nhà phát triểnviết các hợp đồng thông minh phức tạp
Mức độ bảo mật và phân cấp cao, sử dụng cơ chế đồng thuận bằng
chứng công việc giúp chông lại kiêm duyệt và giả mạo.
« Nhược điểm
2.4.
o Hạn chê vê hiệu suât và khả năng mở rộng, Ethereum chỉ có thê xử lý
trung bình khoảng 15 giao dịch mỗi giây, điều này có thể dẫn đến tắc
Trang 25Exonum là một framework dé tạo các ứng dụng chuỗi khối an toàn, hiệu quả và cóthể mở rộng Exonum cho phép các nhà phát triển xây dựng các hệ thống phi tập
trung có thể xử lý các vấn đề kinh doanh khác nhau, chăng hạn như quản lý tài sản,quản lý danh tính, quản lý chuỗi cung ứng, v.v Exonum cung cấp một thư viện lõi,
triển khai nút, CLI nút tạo điều kiện phát triển chuỗi khối Exonum được thiết kế để
tạo các chuỗi khối phân quyền, nơi những người tham gia mang được biết và tin cậy.Exonum sử dụng thuật toán đồng thuận tùy chỉnh có thê xử lý tới 5.000 giao dịch mỗigiây với độ trễ thấp Exonum cũng hỗ trợ ngôn ngữ lập trình Rust, cho phép các hợp
đồng thông minh linh hoạt và hiệu quả Exonum cung cấp khả năng xác minh, an
danh và mã hóa từ đầu đến cuối cho các quy trình bầu chọn điện tử Nó có thể tích
hợp với nhiều công cụ mật mã khác nhau, chăng hạn như quantum key distribution
và elliptic-curve cryptography, dé tăng cường tính bảo mật và độ tin cậy của bỏ phiếuđiện tử Exonum đã được sử dụng bởi Polys, một công cụ bỏ phiếu dựa trên chuỗikhối từ Kaspersky Innovation Hub, đề đi chuyên từ Ethereum và tăng năng suất cũngnhư khả năng mở rộng của nó Exonum là một framework phù hợp cho các hệ thống
bỏ phiếu điện tử đòi hỏi hiệu suất, tính minh bạch và khả năng tùy chỉnh cao [1]
‹e Uudiém
o_ Mã nguồn mở và có thể mở rộng, nghĩa là bất kỳ ai cũng có thể đóng
góp vào sự phát triển của nó hoặc sử dụng nó cho các dự án của riêng
họ.
o_ Sử dụng mô hình phân quyền, nghĩa là chỉ các nút được ủy quyền mới
có thê tham gia vào mạng chuỗi khối và xác thực các giao dịch
o Tận dụng Rust làm ngôn ngữ lập trình chính, mang lại hiệu suất cao,
độ tin cậy và an toàn bộ nhớ.
o Cung cấp một bộ công cụ và thư viện phong phú dé phát triển, thử
nghiệm va triển khai các dịch vụ chuỗi khối
‹ Nhược điểm
o_ Vẫn còn tương đối mới và đang được phát triển, nên có thê có một số
161 hoặc thiêu một sô tính năng.
27
Trang 26o Doi hỏi trình độ chuyên môn kỹ thuật cao và kiến thức về các khái niệm
chuỗi khối, điều này có thé hạn chế những người không phải là nhà phat
triển hoặc người mới bắt đầu áp dụng
Có thé không phù hợp với một số trường hợp sử dụng yêu cầu một chuỗi khối công
khai hoặc phi tập trung hoản toan, chang hạn như các giao dịch an danh hoặc kha
năng chống kiêm duyệt
2.5 NestJS
NestJS là một khung tiến bộ dé xây dung các ứng dung phía máy chủ hiệu quả, cóthé mở rộng và đáng tin cậy với Node.js Nó tận dụng TypeScript, một siêu bộJavaScript có thêm các loại tĩnh và các tính năng khác, để nâng cao năng suất và chấtlượng mã của nhà phát triển NestJS cũng hỗ trợ phát triển JavaScript thuần túy chonhững người thích nó NestJS áp dụng kiến trúc mô-đun kết hợp các yếu tố của lậptrình hướng đối tượng, lập trình chức năng và lập trình phản ứng chức năng Nó cungcấp mức độ trừu tượng cao so với các khung công tac Node.js phô biến, chang hạnnhư Express hoặc Fastify, nhưng cũng hiển thị trực tiếp các API của họ cho nhà phát
triển, cho phép tùy chỉnh và linh hoạt NestJS cung cấp một bộ tinh năng và công cụ
phong phú, chăng hạn như tiêm phụ thuộc, bộ điều khiển, đường ống, bộ bảo vệ, bộ
chặn, bộ trang trí, bộ lọc ngoại lệ, tiện ích thử nghiệm, v.v Nó cũng tích hợp liềnmạch với các thư viện và mô-đun bên thứ ba khác nhau, chăng hạn như TypeORM,GraphQL, Swagger, Passport, v.v NestJS được lấy cảm hứng rất nhiều từ Angular,một trong những khung giao điện người dùng phố biến nhất Nó tuân theo một cau
trúc dự án tương tự và sử dụng các khái niệm và thuật ngữ tương tự Điều này giúp
các nhà phát triển đã quen thuộc voi Angular dé dàng bắt đầu với NestJS và ngượclại NestJS cũng chia sẻ triết lý của Angular về việc cung cấp cách xây dựng ứng dụngnhất quán và chuẩn hóa, trong khi vẫn cho phép tùy chỉnh và khả năng mở rộng.NestJS là một dự án nguồn mở được duy trì và phát triển tích cực bởi một cộng đồngnhững người đóng góp sôi nổi Nó có một tài liệu toàn diện bao gồm tat cả các khía
cạnh của khung, từ cài đặt và các bước đầu tiên đến các chủ đề nâng cao và các
phương pháp hay nhất Nó cũng có một cộng đồng thân thiện và hữu ích trên Discord,
28
Trang 27GitHub, Stack Overflow và các nền tảng khác NestJS là một khung nhằm trao quyền
cho các nhà phát triển tạo ra các ứng dụng phía máy chủ hiện đại, có thể mở rộng và
có thé bảo trì băng Node.js Đó là một khuôn khổ mà bạn có thé tin tưởng dé xử lýcác nhu cầu về cơ sở hạ tầng và logic kinh doanh của mình, trong khi bạn tập trung
vào việc cung cap giá tri cho người dùng của mình [11]
29
Trang 28tính năng cơ bản của Angular, chăng hạn như các thành phần, chỉ thị, dịch vụ, đường
ống, biểu mẫu, định tuyến và thử nghiệm [2]
30
Trang 29Chương 3 HE THONG LƯU TRU SU DUNG CÔNG NGHỆ CHUOI
KHOI
Chương nay thé hiện chi tiết hệ thống chuỗi khối dé lưu trữ các cuộc bầu chon và
phiếu bầu của người tham gia Bắt đầu bằng việc khảo sát một số nền tảng chuỗi khối
trên thị trường và chọn ra nền tảng phù hợp nhất để xây dựng Sau khi đã chọn đượcnên tảng, tiễn hành xây dựng các đối tượng và các quy trình trong hệ thống
3.1 Khảo sát một số nền tảng chuỗi khối
Nhóm đã khảo sát qua ba nền tảng chuỗi khối:
Một trong những lý do nhóm tác giả quyết định không sử dụng Ethereum cho dự áncủa mình là nó có hiệu suất hạn chế và yêu cầu trả phí xác minh Ethereum sử dụngmột hệ thống gọi là gas để đo lường chỉ phí tính toán của mỗi giao dịch trên mạngcủa nó Phí gas được thanh toán bằng Ether, tiền điện tử gốc của Ethereum và chúng
dao động tùy thuộc vào nhu cầu và tắc nghẽn mạng Nhóm tác giả muốn tránh những
hạn chế và chi phí nay, vì vậy nhóm tác giả đã chọn một giải pháp khác
Nhóm tác giả không chọn Exonum cho hệ thống của mình vì nó vẫn còn mới và đangđược phát triển Dé tai cần một nền tảng hoàn thiện, ồn định hơn và đã được thửnghiệm và chứng minh trên thị trường Nhóm tác giả cũng muốn tránh các sự cố hoặclỗi tương thích tiềm ẩn có thé phát sinh khi sử dung một framework đang phát triển
3.2 Sơ đồ hệ thống
Hệ thống bao gồm:
31
Trang 30Kênh của Hyperledger Fabric là một cách tạo mạng riêng giữa hai hoặc nhiều tổ chức
thành viên muôn thực hiện các giao dịch bí mật Một kênh có sô cái dùng chung, một
hoặc nhiêu ứng dụng chuỗi mã và nút orderer tạo va phân phôi các khôi cho các peer.
Mỗi thành viên có một anchor peer kết nối với kênh và giao tiếp với các peer khác.
Một kênh có thé được chia sẻ trên toàn bộ mạng hoặc được riêng tư hóa để chỉ bao
gồm những người tham gia cụ thê
Hệ thống của ứng dụng sẽ sử dụng một kênh duy nhất cho toàn bộ hệ thống Số cái
của kênh sẽ là danh sách các CBC được tạo Các peer sẽ là những NTG, BTC và quản
trị viên của các CQCCC Một chuỗi mã chính được triển khai lên kênh này
32
Trang 313.2.2 Tổ chứcMột tô chức trong Hyperledger Fabric là một thực thé logic đại điện cho một bên liênquan trong thế giới thực, chắng hạn như một công ty, cơ quan chính phủ hoặc một
tập đoàn Mỗi tô chức có danh tinh, tư cách thành viên và chính sách riêng chi phối
các tương tác của tổ chức đó với các tô chức khác và toàn bộ mạng
Một trong những chức năng chính trong Hyperledger Fabric là các tổ chức có théhình thành các nhóm được gọi là các kênh, là các mang con giao tiếp cho phép cách
ly và bảo mật dữ liệu Các kênh cho phép các tô chức chỉ chia sẻ thông tin và giaodịch với những người được ủy quyền và cần biết Ví dụ: một kênh có thể được tạo
cho mạng lưới chuỗi cung ứng liên quan đến nhiều tổ chức, chang hạn như nhà cung
cấp, nhà sản xuất, nhà phân phối và nhà bán lẻ
3.2.3 Chuỗi mã
Một khái niệm quan trọng khác trong Hyperledger Fabric là các tô chức có thé triểnkhai các hợp đồng thông minh được gọi là chuỗi mã (chaincode) trên các kênh mà họ
tham gia Chuỗi mã là logic nghiệp vụ xác định các quy tắc và hoạt động của mạng.
Chuỗi mã có thể được viết bằng nhiều ngôn ngữ lập trình khác nhau, chăng hạn như
Go, Javascript, Typescript hoặc Java Chuỗi mã có thé truy cập dữ liệu số cái và thực
hiện các giao dịch theo logic đã thỏa thuận.
3.2.4 Cơ quan cấp chứng chỉHyperledger Fabric dựa trên các chứng chi dé dam bảo tinh bao mật và danh tính của
những người tham gia Cơ quan cấp chứng chỉ chịu trách nhiệm phát hành và quản lý
các chứng chỉ này, có thé được sử dụng cho các mục đích khác nhau như xác thực,
ủy quyền, mã hóa và ký
Hyperledger Fabric cung cap dịch vụ CQCCC tích hợp có tên là Fabric CA, dịch vụnày có thé được sử dụng dé thiết lập và định cấu hình CQCCC cho mạng CQCCC
hỗ trợ các tính năng như đăng ký danh tính, đăng ký chứng chỉ, thu hồi chứng chỉ và
tạo khối genesis và giao dịch cau hình kênh
33
Trang 323.2.5 Dữ liệu bí mật
Hyperledger Fabric cho phép đữ liệu được chia sẻ giữa các tổ chức khác nhau một
cách an toàn và phi tập trung Một trong những tính năng của Hyperledger Fabric là
thu thập dữ liệu riêng tư, cho phép bảo mật và bảo mật dữ liệu cho một số giao dịch
nhất định Dữ liệu riêng tư là một tập hợp con của số cái kênh mà chỉ một nhóm các
tổ chức được ủy quyền mới có thé truy cập được, trong khi các thành viên còn lại củakênh chỉ có thể xem hàm băm của dữ liệu riêng tư Bằng cách này, dữ liệu nhạy cảm
có thể được bảo vệ khỏi bị tiết lộ trái phép, trong khi vẫn duy trì tính nhất quán của
dữ liệu và khả năng kiểm tra trên kênh Dữ liệu riêng tư có thể được định cấu hình
bằng cách sử dụng các định nghĩa bộ sưu tập chỉ định tên, phạm vi, chính sách và các
yêu cầu chứng thực của dữ liệu riêng tư
3.3 Các quy trình
Dưới đây là các quy trình trừu tượng mà hệ thống chuỗi khối sử dụng HyperledgerFabric sẽ sử dụng đề lưu trữ CBC và các phiếu bầu của NTG bao gồm quy trình tạo
CBC, quy trình NTG bỏ phiếu bau và cuối cùng là đóng, tổng kết, thống kê phiếu bầu
của CBC Các quy trình sẽ là nền móng cho việc xây dựng các hàm chuỗi khối
34
Trang 34Tác nhân chính của quy trình này sẽ là người dùng hệ thống Người dùng có thé tạomột CBC với các thông số tinh chỉnh được cho trước trên ứng dụng Sau đó hệ thống
sẽ tiếp nhận yêu cầu và xử lý tạo CBC theo các bước quy định Một CBC có thể có
các hình thức như là “công khai”, “riêng tư” hoặc “bí mật” tùy thuộc vào nhu câu sử
dụng của người dùng Nội dung mô tả của từng hình thức như sau:
« Công khai:
o_ Cuộc bầu chọn có thê được tham gia bời bất kỳ ai Danh tính và phiếu
bầu của họ sẽ được công khai và xem bởi tất cả mọi người
o Sau khi đóng cuộc bầu chọn, không ai có thể tham gia được nữa
e Riêng tư
o_ Cuộc bau chọn có thê được tham gia bời bat kỳ ai Danh tính và phiếu
bầu của họ sẽ được mã hóa và không thê bị tiết lộ công khai
o Sau khi đóng cuộc bầu chọn, không ai có thé tham gia được nữa Kết
quả và các khóa bí mật của cuộc bầu chọn sẽ được công khai dé truy
cập và kiểm định
„« Bí mật
o Cuộc bau chọn có thê được tham gia bời bat kỳ ai Danh tinh và phiếu
bầu của họ sẽ được mã hóa và không thể bị tiết lộ công khai
o Sau khi đóng cuộc bầu chọn, không ai có thể tham gia được nữa Kết
quả và các khóa bí mật của cuộc bầu chọn sẽ được công khai dé truy
cập và kiểm định
o_ Chỉ những người tham gia được chỉ định từ trước sẽ có phiếu bầu và
danh tính của họ được công khai Đối với những người tham gia khácnăm ngoài danh sách, phiếu bầu và danh tính của họ sẽ bị bỏ qua và
xóa.
36
Trang 353.3.2 Bó phiếu
Bỏ phiêu CBC
Ký mã hoa thông tin
bao gồm nội dung
Lưu thông tin bỏ
phiêu vảo số cái
Sử dụng chữ ký mới Sử dụng mã giao dich
lảm ID phiêu bầu lảm ID phiêu bầu
Hình 3.3 Quy trình bỏ phiếu
37
Trang 36Tác nhân chính của quy trình sẽ là người tham gia CBC Mỗi người tham gia sẽ nhập
một chuỗi định danh dé xác minh phiếu bau đó là của họ Chuỗi định danh nay cùng
với nội dung phiếu bau sẽ được xác thực ở CQCCC tạo ra một mã định danh gắn liềnvới họ Mã định danh này sau đó được đưa vào số cái công khai và tùy thuộc vào hình
thức của CBC mà sẽ có quy trình xử lý riêng biệt như đã mô tả bên trên.
Một giải thuật mã hóa sẽ được sử dụng dé mã hóa dữ liệu phiếu bầu và danh tính
Khóa bí mật của CBC sẽ được giấu đi trong dit liệu bi mật của tô chức HyperledgerFabric Chỉ sau khi CBC đã được đồng thuận đóng, các khóa bí mật mới được côngkhai cho phép tất cả mọi người tham gia hệ thống kiểm tra và xác thực lại độ chínhxác của dữ liệu phiếu bầu
3.3.3 Đóng cuộc bầu chọn
Tác nhân chính của quy trình này sẽ là các BTC được quy định trước trong quá trình
tạo CBC Các BTC sẽ có quyền yêu cầu đóng CBC khi có nhu cầu Một khi số lượngBTC yêu cầu đóng thỏa tỷ lệ đồng thuận quy định trước, CBC sẽ chuyền sang trạng
thái “đóng” hoặc “tổng kết” tùy vào hình thức của CBC
Lúc này các dữ liệu bí mật như khóa bí mật, nội dung bau chọn, danh tính NTG sẽđược lần lượt công khai vào số cái bởi các tô chức Hyperledger Fabric Điều này giúpcho kết quả CBC được minh bạch, tránh gian lận trong quá trình xảy ra biểu quyết
38
Trang 37chưa công khai
dữ liệu phiêu bầu?
Trang 383.4 Phát triển chuỗi mã
Chuỗi mã của hệ thống chuỗi khối được lựa chọn viết bằng ngôn ngữ Typescript
Chuỗi mã sẽ được triển khai lên lần lượt cả hai t6 chức dé người dùng của cả hai cóthé thao tác với dir liệu trong chuỗi khối Dé có thé lập trình được chuỗi mã, chúng
ta cần định nghĩa đối tượng chính trên số cái công khai, sau đó là các hàm có thé gọi
được để tạo các giao dịch trên các khối Các giao dịch này sẽ được xác thực bởi toàn
bộ peer trên mạng chuỗi khối, nếu hợp lệ, những thay đôi trong giao dịch sẽ được áp
dụng lên số cái công khai
3.4.1 Định nghĩa đối tượng CBCTrước khi viết chuỗi mã, chúng ta cần định nghĩa đối tượng chính được lưu trong sốcái công khai của hệ thống chuỗi khối Ở đây là các CBC mà người tạo và tham gia
bỏ phiếu Cụ thé CBC bao gồm các thuộc tính:
40
Trang 39Orøanizers Bản ghi chuỗi mã hóa khóa chính của BTC với giá trị là
& nhãn thời gian ma BTC quyét định đóng CBC
MinimumConsent Số lượng BTC tối thiêu cần đồng thuận dé đóng một CBC
OptionType Loại lựa chon mà NTG có thé chon, có thé là don lựa chọn
P 3P hoặc đa lựa chọn
MultipleOptionLimit Nêu loại lựa chọn ở trên là đa lựa chọn thì đây sẽ là sô lượng
lựa chọn mà người dùng có thê chọn tôi đa
Trạng thái của CBC, có thể là “đang mở”, “đang tông kết”
VotesPublic Những phiếu bau đã được công khai
Votes Mang chuỗi ID đã được mã hóa của những phiếu bau
EndorsingOrgs Mang chuoi những tô chức của Hyperledger Fabric cân
chứng thực giao dịch
Ban ghi chuỗi những khóa bí mật của CBC với mỗi tô chức
PrivateKeys , ;
của Hyperledger Fabric
ClosedOn Nhãn thời gian khi CBC chuyền sang tráng thái “đã đóng”
41
Trang 402 Authenticate Vote Xác thực danh tinh va nội dung phiếu bau.
3 VoteBallot Lưu thông tin phiếu bau lên số cái công khai
4 EndBallot Đóng CBC.
5 EinalizeBallotAsOrg Tông ket di liệu các phiêu bau của tô chức
tham gia.
6 EinalizeBallot Lưu dữ liệu các phiêu bâu sau tông kêt vào sô
cái công khai.
7 GetBallot Lay thông tin của một CBC
8 GetVote Lay thông tin của một phiếu bau
9 GetBallotHistory Lay các giao dich lich sử cua CBC trên chuỗi
o ID của CBC được tạo ngẫu nhiên là một chuỗi dài 64 ký tự ID rút
gọn của CBC cũng được tạo ngẫu nhiên với điều kiện là không có
CBC nào đã sử dụng ID rút gọn này
42