Đồng thời, nhu cầu của du học sinh Lào ở Việt Nam ngày càng tăng lên và hiện tại có hơn 814 sinh viên đang học tại miền Nam, những băn khoăn, thắc mắc trong công tác học tập, nghiên cứu
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRẦN VĂN HOÀI
Đồng Nai - năm 2019
Trang 3LỜI CẢM ƠN
Được sự phân công của khoa Sau Đại học - Trường Đại học Lạc Hồng và sự đồng ý của
giảng viên hướng dẫn PGS.TS Trần Văn Hoài tôi đã thực hiện đề tài “Ứng dụng công nghệ blockchain trong xác minh thông tin quá trình học tập của du học sinh lào”
Đầu tiên, tôi xin chân thành cảm ơn thầy PGS.TS Trần Văn Hoài đã tận tình hướng dẫn, chỉ bảo trong suốt thời gian thực hiện luận văn
Kế đến tôi xin bày tỏ lòng biết ơn đến quí thầy cô trong Khoa sau đại học của Đại Học Lạc Hồng đã tận tâm dạy bảo, cung cấp những kiến thức rất quí báu trong suốt quá trình học tập; cũng như thầy cô trong văn phòng khoa hết lòng giúp đỡ, cung cấp những tài liệu tham khảo, tạo điều kiện thuận lợi để tôi hoàn thành luận văn
Tôi cũng xin gửi lời cảm ơn đến những người thân trong gia đình; cùng các anh chị, các bạn trong lớp đã luôn quan tâm giúp đỡ trong suốt thời gian học tập cũng như làm luận văn
Do thời gian làm luận văn còn hạn chế, và kiến thức cũng có hạn; nên luận văn không tránh khỏi những thiếu sót Kính mong nhận được những ý kiến đóng góp của quí thầy cô và các bạn để luận văn được hoàn chỉnh hơn
Xin chân thành cảm ơn!
Đồng Nai, ngày 25 tháng 12 năm 2019
HỌC VIÊN
Anousith Saphangthong
Trang 4LỜI CAM ĐOAN
Tôi cam đoan rằng kết quả đạt được trong luận văn này là sản phẩm của riêng cá nhân, là kết quả đạt được trong quá trình học tập và nghiên cứu khoa học độc lập
Trong toàn bộ nội dung của luận văn, những điều được trình bày là của cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu Tất cả các tài liệu tham khảo đều có xuất
Trang 5TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA SAU ĐẠI HỌC
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
TÓM TẮT LUẬN VĂN
(Dùng cho học viên và người hướng dẫn)
Đề tài: Ứng dụng công nghệ Blockchain trong xác minh thông tin quá trình học tập của
du học sinh Lào
Ngành: Công nghệ thông tin Mã số: 8480201
Học viên: Anousith Saphangthong
Người hướng dẫn: PGS TS Trần Văn Hoài
- Cập nhật dữ liệu mọi lúc: sinh viên có thể truy cập dữ liệu nguồn được xác nhận bất cứ lúc nào
- Giảm khối lượng công việc của nhân viên quản lý sinh viên: trình độ và kết quả học tập sẽ được số hóa với một nền tảng cho thấy các chi tiết đáng tin cậy
để giảm khối lượng công việc của nhân sự và loại bỏ các thủ tục phức tạp
- Đáng tin cậy: một điều khác làm cho Blockchain nổi bật so với các nền tảng
kỹ thuật số khác là độ tin cậy của dữ liệu Ngoài khả năng mã hóa tiên tiến và
dữ liệu phi tập trung, nếu có sự giả mạo hệ thống sẽ khiến thông tin giả mạo không khớp với thông tin mà mọi người trong hệ thống có, coi như thông tin
đó là ngầm thiếu uy tín
Ngày 10 tháng 10 năm 2019
PGS TS Trần Văn Hoài Anousith Saphangthong
Trang 6MỤC LỤC
Mục lục
Danh mục hình
Danh mục bảng
Mở đầu 1
1 Lý do thực hiện đề tài 1
2 Tình hình nghiên cứu 2
3 Mục tiêu nghiên cứu 3
4 Đối tượng 3
5 Phạm vi nghiên cứu 3
6 Phương pháp nghiên cứu 3
7 Dự kiến kết quả đạt được 3
CHƯƠNG 1 Tổng quan về công nghệ blockchain 5
1.1 Giới thiệu về blockchain 5
1.1.1 Đặc điểm 5
1.1.2 Nguyên lý hoạt động 5
1.1.3 Phân loại 6
1.2 Tổng quan về Ethereum 7
1.2.1 Giới thiệu về Ethereum 7
1.2.2 Kiến trúc 7
1.2.3 Ứng dụng 8
1.3 Tổng quan về smart contract 8
1.3.1 Giới thiệu về smart contract 8
1.3.2 Nguyên lý hoạt động 9
1.3.3 Các thành phần của smart contract 9
1.3.4 Lợi ích của smart contract 10
1.4 Các ứng dụng phi tập trung 10
1.4.1 Giới thiệu ứng dụng phi tập trung 10
1.4.2 Làm sao để xây dựng một DApp? 11
1.5 Một số phần mềm, thư viện và framework được sử dụng trong đề tài 11
1.5.1 Geth 11
1.5.2 Remix 11
1.5.3 Nodejs 11
1.5.4 Truffle 12
1.5.5 Lite-server 12
1.5.6 Web3.js 12
Trang 71.5.7 Bootstrap 12
1.5.8 Metamask 12
1.6 Tiểu kết 12
CHƯƠNG 2 HỆ THỐNG XÁC MINH THÔNG TIN SINH VIÊN 13
2.1 Giới thiệu về hệ thống 13
2.1.1 Thiết kế hệ thống 14
2.1.2 Kiến trúc của hệ thống 15
2.1.3 Đặc điểm của hệ thống 17
2.1.4 Nhược điểm 18
2.2 Cài đặt phần mềm Geth 18
2.2.1 Cài đặt từ kho mã nguồn (repository) của Ubuntu bằng công cụ quản lý gói APT 19
2.2.2 Cài đặt từ binary package 20
2.2.3 Kiểm tra geth 21
2.3 Thiết lập hệ thống private Ethereum 21
2.3.1 Thiết lập khối nguyên thủy 21
2.3.2 Tạo miner và tài khoản 23
2.3.3 Khởi động miner và bắt đầu đào (mining): 24
2.4 Lập trình smart contract 26
2.5 Lập trình RESTful API với nodejs 38
2.5.1 Cài đặt nodejs trên hệ điều hành Ubuntu 38
2.5.2 Lập trình server nodejs 41
2.6 Lập trình website 49
CHƯƠNG 3 KẾT QUẢ VÀ THỬ NGHIỆM 51
3.1 Tính toàn vẹn của dữ liệu trên hệ thống 51
3.1.1 Chuẩn bị 52
3.1.2 Thực hiện 52
3.2 Chứng minh tính xác thực của dữ liệu 60
CHƯƠNG 4 KẾT LUẬN 66 TÀI LIỆU THAM KHẢO
Trang 8DANH MỤC HÌNH
Hình 1.1 – Nguyên lý hoạt động của smart contract 9
Hình 2.1 hệ thống Blockchain vào giáo dục 13
Hình 2.2 Sơ đồ hoạt động của hệ thống 14
Hình 2.3 Sơ đồ kiến trúc hệ thống 15
Hình 2.2 Cài đặt geth từ trình quản lý Apt 19
Hình 2.3 Cài đặt geth từ trình quản lý Apt 19
Hình 2.4 Trang web tải geth 20
Hình 2.5 Thư mục cài đặt geth 20
Hình 2.6 Kiểm tra phiên bản của geth 21
Hình 2.7 Kết quả khởi tạo miner 23
Hình 2.8 Kết quả tạo tài khoản trên miner 24
Hình 2.9 Thư mục sau khi cài đặt miner 24
Hình 2.10 Console điều khiển miner 25
Hình 2.11 Kết quả khi cho miner đào 26
Hình 2.12 Giao diện IDE remix 27
Hình 2.13 Menu cài đặt plugin 27
Hình 2.14 Menu quản lý tệp tin 28
Hình 2.15 Menu compile 35
Hình 2.16 Kết quả compile khi có code lỗi 36
Hình 2.17 Menu triển khai smart contract 36
Hình 2.18Nơi kiểm thử smart contract sau khi triển khai 37
Hình 2.19 Giao diện nhập địa chỉ Web3 provider 38
Hình 2.20Trang web download nodejs 39
Hình 2.21 Thư mục cài đặt nodejs 40
Hình 2.22 Kết quả kiểm tra phiên bản nodejs 41
Hình 2.23 Cấu trúc thư mục của dự án 42
Hình 2.24 Giao diện trang web tra cứu thông tin 50
Hình 3.1 Lấy thông tin enode của miner 53
Hình 3.2 Kết quả lấy địa chỉ ip của máy chủ 54
Hình 3.3 Kết quả của lệnh kết nối từ miner thứ hai đến miner thứ nhất 55
Trang 9Hình 3.4 Kết quả của lệnh kết nối hai miner với nhau 55
Hình 3.5 Kết quả hiển thị số block hiện tại của cả hai miner 56
Hình 3.6 Kết quả của lệnh kiểm tra trạng thái đồng bộ dữ liệu 56
Hình 3.7 Giao diện sau khi tắt miner thứ nhất 59
Hình 3.8 Server nodejs chuyển kết nối sang miner thứ hai khi tắt miner thứ nhất 59
Hình 3.9 Dữ liệu được trả về từ miner thứ hai thông qua server nodejs 60
Hình 3.10 Thông qua trang Quản lý thông tin sinh viên để thêm thông tin mới 61
Hình 3.11 Kiểm tra số khối hiện tại trong hệ thống 62
Hình 3.12 Thông tin chi tiết của một block 63
Hình 3.13 Thông tin dữ liệu của Smart contract đã được mã hoá 64
Hình 3.14 Kết quả trả về là một chuỗi đã mã hoá và chứa thông tin của smart contract 65
Hình 4.1 Trang chủ website tra cứu thông tin du học sinh Lào tại Việt Nam (thử nghiệm) 74
Trang 10DANH MỤC BẢNG
Bảng 2.1 Các id không được sử dụng trong hệ thống 22 Bảng 4.1 So sánh dữ hệ thống blockchain và một hệ thống dữ liệu thông thường 66
Trang 11MỞ ĐẦU
1 Lý do thực hiện đề tài
Cùng với sự lên ngôi của Blockchain (chuỗi khối), với khả năng chia sẻ thông tin
dữ liệu minh bạch theo thời gian thực, tiết kiệm không gian lưu trữ và bảo mật cao, công nghệ blockchain là một trong những xu hướng công nghệ đột phá, có khả năng ứng dụng rộng rãi Trên thực tế, việc ứng dụng Blockchain trong giáo dục có tiềm năng rất lớn,
nó không chỉ giải quyết những bất cập đang tồn tại mà còn bổ sung cho những thiếu sót trong bộ máy quản lý truyền thống Đảm bảo mỗi sinh viên khi ra trường hoặc đang trong quá trình rèn luyện có thể theo dõi chính xác được quá trình học tập của sinh viên trong suốt quá trình học ở các trường từ khi nhập học đến khi ra trường [4] Thông tin một khi đã được ghi vào khối thì không thể sửa đổi được Do vậy, chuỗi khối có thể được xem như một công cụ lưu trữ thông tin hiệu quả, minh bạch Công nghệ chuỗi khối blockchain lưu trữ bản sao thông tin tại mọi nút (máy tính tham gia vào hệ thống), và vì vậy rất khó để bất cứ ai thay đổi, giả mạo thông tin được lưu trữ Việc tìm kiếm, truy xuất thông tin cũng được thuận tiện, dễ dàng hơn Đối với giáo dục – đào tạo, nền tảng công nghệ blockchain cũng đem lại tiềm năng ứng dụng như đối với các ngành nghề khác
Hiện nay, công tác quản lý sinh viên tại tổng lãnh sự quán dân nhân Lào tại TP
Hồ Chí Minh; các công việc trước đây vẫn làm thủ công như lập danh sách sinh viên, lập danh sách trường học tốn rất nhiều thời gian, công sức và giấy tờ, sổ sách lưu trữ Tin học hóa trong công tác quản lý nhằm bớt sức lao động của con người, tiết kiệm được thời gian, độ chính xác cao và tiện lợi rất nhiều so với việc làm thủ công quản lý trên giấy tờ như trước đây Blockchain được thiết kế để chống lại sự thay đổi dữ liệu Thông tin trong blockchain không thể bị thay đổi và chỉ được bổ sung thêm khi có sự đồng thuận của tất cả các nút trong hệ thống Ngay cả khi nếu một phần của hệ thống blockchain sụp đổ, những máy tính và nút khác sẽ tiếp tục hoạt động để bảo vệ thông tin Đồng thời, nhu cầu của du học sinh Lào ở Việt Nam ngày càng tăng lên và hiện tại
có hơn 814 sinh viên đang học tại miền Nam, những băn khoăn, thắc mắc trong công tác học tập, nghiên cứu khoa học đòi hỏi phải có một môi trường lưu trữ thông tin sinh viên, truyền bá tin tức, cung cấp những thông tin mới nhất từ các nhà trường, những thông tin liên quan đến sinh viên, đồng thời cũng là nơi để lưu dữ liệu sinh viên, báo
Trang 12cáo dữ liệu về người học, báo cáo tổng quát quá trình học tập của sinh viên một cách đầy đủ và rõ ràng [4]Ứ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ế, dữ liệu cá nhân (bao gồm điểm, hoạt động đoàn thể, phong trào, giải thưởng…) của từng học sinh sẽ được lưu trữ chi tiết và cụ thể trong Blockchain Trong thực tế, khi đăng ký tuyển dụng hoặc xin học bổng, 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
Chính vì vậy, Blockchain là nơi lưu trữ an toàn, minh bạch, chính xác và vô thời hạn tất cả các dữ liệu thông tin của các sinh viên
2 Tình hình nghiên cứu
Ngoài nước
Như đã nói trên, công nghệ blockchain đang dần được áp dụng vào nhiều lĩnh vực trong cuộc sống Ngày càng nhiều cá nhân, cơ quan và tổ chức quan tâm, nghiên cứu và cho ra nhiều ứng dụng của blockchain được áp dụng vào cuộc sống Một số ví dụ như:
Zug ở Thụy Sĩ, nơi được gọi là “Thung lũng Crypto” đã hợp tác với Uport triển khai một dự án Blockchain để cư dân có thể đăng ký ID, cho phép
họ tham gia bỏ phiếu trực tuyến và chứng minh nơi cư trú
Các dự án chăm sóc sức khỏe như MedRec đang sử dụng Blockchain như một phương tiện tạo điều kiện chia sẻ dữ liệu trong khi cung cấp xác thực
Trong nước
Đối với Việt Nam, công nghệ này vẫn còn khá mới, chưa phổ biến và được
áp dụng rộng rãi Nhưng đã có một có cá nhân và tổ chức tìm hiểu, nghiên cứu và
Trang 13áp dụng vào thực tế như: truy xuất nguồn gốc xoài Cát Chu của hợp tác xã Mỹ Xương dựa trên nền tảng blockchain của Infinity Blockchain Labs (IBL) - công ty chuyên phát triển các giải pháp công nghệ trên nền tảng blockchain [6]
Tại diễn đàn Nông nghiệp Mùa Xuân 2018, chủ đề “Đổi mới chuỗi cung ứng nhằm tăng cường hiệu quả nền nông nghiệp Việt Nam” ngày 24/4 đã đem lại nhiều bất ngờ thú vị Điều đặc biệt, 3 tập đoàn của Thái và Công ty Cổ phần Lina Network đã chọn khuôn khổ Diễn đàn để thực hiện Lễ ký kết biên bản ghi nhớ thỏa thuận hợp tác ứng dụng Lina Paltform vào chuỗi cung ứng (còn gọi là ứng dụng Lina Supply Chain/LINA của Công ty Cổ phần Lina Network)
3 Mục tiêu nghiên cứu
Phân tích thực trạng thu nhận thông tin du học sinh Lào từ trưởng cụm trường đến đại sứ quán Lào, đề xuất phương pháp xác thực thông tin với công nghệ Blockchain nhằm tăng tính minh bạch
4 Đối tượng
Đối tượng nghiên cứu của đề tài là dữ liệu du học sinh do Lãnh sự quán dân nhân Lào tại TP.HCM quản lý
5 Phạm vi nghiên cứu
Xây dựng một hệ thống blockchain nội bộ
Lập trình một hợp đồng thông minh trong việc quản lý
Xây dựng một website dựa trên nền tảng blockchain
6 Phương pháp nghiên cứu
Nghiên cứu báo cáo, bài báo và tài liệu hướng dẫn về blockchain: [7], [8], [9]
Phân tích và thiết kế cấu trúc cho hệ thống blockchain
Tìm hiểu cách thu thập dữ liệu của du học sinh lào từ các trường
Nghiên cứu báo cáo, bài báo và tài liệu hướng dẫn về DApp: [10], [11], [12]
Phân tích dữ liệu để lập trình ra một smart contract trong quản lý sinh viên
Nghiên cứu cách để kết nối website với blockchain
7 Dự kiến kết quả đạt được
- Hệ thống sử dụng được ở lãnh sự quán Nhân dân Lào tại TP.HCM để có thể theo dõi quá trình học tập du học sinh, đánh giá kết quả học tập của sinh viên một cách
Trang 14nhanh nhất và chính xác nhất Hệ thống Blockchain với việc mô phỏng 2 Node với giao diện web để xem và thao tác thông tin
-Tên bài báo dự định công bố: Ứng dụng công nghệ blockchain trong xác minh thông tin quá trình học tập của du học sinh lào
Luận văn được chia làm ba phần: phần mở đầu, phần nội dung và phần kết luận Phần mở đầu
Nêu lý do chọn đề tài, tổng quan tình hình phát triển, mục tiêu nghiên cứu đề tài, đối tượng, phạm vi, phương pháp nghiên cứu cũng như những đóng góp mới của đề tài Bên cạnh đó cũng chỉ ra mặt hạn chế mà đề tài chưa thực hiện được để giúp mọi người
có cái nhìn rõ hơn
Phần nội dung chính: gồm 4 chương
Chương 1: Tổng quan lý thuyết về công nghệ Blockchain
Trong chương này, tác giả sẽ giới thiệu và trình bày những kiến thức cơ bản về công nghệ blockchain, nền tảng ethereum, smart contract và các ứng dụng phi tập trung Đồng thời, tác giả cũng sẽ giới thiệu một số công cụ, thư viện và framework mà tác giả
đã dùng trong đề tài
Chương 2: Hệ thống xác minh thông tin sinh viên
Trong chương này, tác giả miêu tả các bước chi tiết để dựng nên được một hệ thống blockchain, các tạo các smart contract và tích hợp dữ liệu vào hệ thống Tạo website để kết nối với hệ thống blockchain để tạo ra một ứng dụng phi tập trung
Chương 3: Kết quả và thử nghiệm
Mô tả một số kết quả đã làm được và chứng minh tính toàn vẹn của dữ liệu Chương 4: Kết luận đưa ra những so sánh và kết luận
Trang 15CHƯƠNG 1 TỔNG QUAN VỀ CÔNG NGHỆ BLOCKCHAIN 1.1 Giới thiệu về blockchain
Blockchain là một hệ thống cơ sở dữ liệu phân tán phi tập trung, bao gồm nhiều máy tính kết nối trong mạng ngang hàng (peer-to-peer) với nhau tạo thành Hệ thống này lưu trữ thông tin thành các khối dữ liệu liên kết với nhau, và được quản lý bởi mọi người tham gia vào trong hệ thống[2]
Thông tin trong blockchain không thể bị thay đổi và chỉ được bổ sung thêm khi
có sự đồng thuận của tất cả các nút trong hệ thống Đây là một hệ thống bảo mật an toàn cao trước khả năng bị sửa đổi dữ liệu Ngay cả khi một phần của hệ thống blockchain sụp đổ, những máy tính và các nút khác sẽ tiếp tục bảo vệ thông tin và giữ cho mạng lưới tiếp tục hoạt động[2]
1.1.1 Đặc điểm
Các đặc điểm chính và nổi bật của công nghệ blockchain có thể kể đến như:
Hệ thống được thiết kế phân tán nên mỗi người tham gia vào hệ thống sẽ lưu giữ một bản sao dữ liệu, điều đó giúp cho dữ liệu không thể bị làm giả và tấn công
Dữ liệu chỉ có thể sửa đổi khi đạt được sự đồng thuận của mọi người tham gia trong hệ thống, và sẽ được lưu vết trên hệ thống
Mọi sự thay đổi dữ liệu sẽ được lưu vết trên hệ thống do đó có thể nói blockchain là một hệ thống cơ sở dữ liệu có tính minh bạch
1.1.2 Nguyên lý hoạt động
Ứng dụng được biết đến và thảo luận nhiều nhất về công nghệ blockchain chính
là đồng tiền điện tử Bitcoin Hiện nay đồng tiền điện tử này có thể được sử dụng để trao đổi các sản phẩm và dịch vụ, giống như đồng đô la Mỹ (USD), Euro (EUR), đồng nhân dân tệ Trung Quốc (CNY) và các loại tiền tệ của các quốc gia khác Do vậy chúng ta sẽ tạm lấy đồng tiền này làm đại diện để nói về nguyên lý hoạt động của công nghệ blockchain
Trang 16Bitcoin là một đơn vị tiền tệ kỹ thuật số với mã là BTC, cũng giống như đô la
Mỹ bản thân nó không mang giá trị, nó chỉ có giá trị bởi vì có một cộng đồng đồng ý
sử dụng nó làm đơn vị giao dịch hàng hóa và dịch vụ
Để theo dõi số lượng Bitcoin mà mỗi người sở hữu trong các tài khoản nhất định và theo dõi các giao dịch phát sinh từ đó thì chúng ta cần đến một cuốn sổ kế toán, trong trường hợp này nó chính là blockchain và đây thực tế là một tệp kỹ thuật
số theo dõi tất cả các giao dịch Bitcoin
Tệp sổ cái này không được lưu trữ trong một máy chủ trung tâm, như trong một ngân hàng hoặc trong một trung tâm dữ liệu mà ngược lại nó được phân phối trên toàn thế giới thông qua một mạng lưới các máy tính ngang hàng với vai trò lưu trữ dữ liệu và thực thi các tính toán Mỗi máy tính này đại diện cho một “nút” của mạng lưới blockchain và mỗi nút đều có một bản sao của tệp sổ cái này
Giả sử nếu A muốn gửi Bitcoin cho B, A sẽ phát một thông báo tới mạng lưới
và cho biết số lượng Bitcoin trong tài khoản của mình sẽ giảm 5 BTC và số lượng Bitcoin trong tài khoản của B sẽ tăng lên tương ứng Mỗi nút trong mạng sau đó sẽ nhận được thông báo này và ánh xạ giao dịch được yêu cầu vào bản sao sổ cái kế toán của họ, và theo đó số dư tài khoản của cả hai bên đều được cập nhật
1.1.3 Phân loại
Public blockchain, đây là hệ thống blockchain mà bất kỳ ai cũng có thể đọc và ghi dữ liệu trên blockchain Quá trình xác thực giao dịch trên blockchain này đòi hỏi phải có hàng nghìn hay thậm chí là hàng vạn nút tham gia Do đó để tấn công vào hệ thống blockchain này là điều bất khả thi Ví dụ về public blockchain: Bitcoin, Ethereum…
Private blockchain, đây là hệ thống blockchain mà người dùng chỉ có quyền đọc dữ liệu, không có quyền ghi bởi vì điều này thuộc về một bên thứ ba tuyệt đối tin cậy Bên thứ ba này có thể hoặc không cho phép người dùng đọc dữ liệu trong một
số trường hợp Bên thứ ba cũng toàn quyền quyết định mọi thay đổi trên blockchain
Vì đây là một Private Blockchain, cho nên thời gian xác nhận giao dịch khá nhanh vì chỉ cần một lượng nhỏ thiết bị tham gia xác thực giao dịch Ví dụ: Ripple là một dạng
Trang 17Private Blockchain, hệ thống này cho phép 20% các nút là gian dối và chỉ cần 80% còn lại hoạt động ổn định là được
Permissioned blockchain hay còn được gọi là consortium blockchain, là một dạng của private blockchain nhưng bổ sung thêm một số tính năng nhất định, kết hợp giữa “niềm tin” khi tham gia vào public blockchain và “niềm tin tuyệt đối” khi tham gia vào private blockchain Ví dụ: các ngân hàng hay tổ chức tài chính liên doanh sẽ
sử dụng Blockchain cho riêng mình
1.2 Tổng quan về Ethereum
1.2.1 Giới thiệu về Ethereum
Ethereum là một nền tảng mã nguồn mở dựa trên công nghệ blockchain cho phép các nhà phát triển xây dựng và triển khai các ứng dụng và hợp đồng thông minh hoạt động trên nền tảng blockchain[3]
Mạng lưới Ethereum sử dụng đồng coin “Ether” hoạt động với tư cách tiền tệ của mạng lưới Ether được trao đổi như một cách thức chi trả cho việc vận hành các ứng dụng phi tập trung trên mạng lưới Đồng Ether cũng là tiền áo lớn thứ hai thế giới vì giá trị vốn hóa thị trường đứng sau Bitcoin[3]
1.2.2 Kiến trúc
1.2.2.1 Ether
Ether, là một loại tiền mã hóa được giao dịch trong mạng lưới Ethereum được gọi là Ether Nó được liệt kê dưới mã ETH và giao dịch trên các sàn giao dịch tiền mã hóa Nó cũng được sử dụng để trả phí giao dịch và dịch vụ tính toán trên mạng Ethereum
1.2.2.2 Máy ảo Ethereum (Ethereum Virtual Machine)
Máy ảo Ethereum là một môi trường chạy các hợp đồng thông minh Ethereum
Nó được hoàn toàn cô lập từ mạng, hệ thống tập tin và các quá trình khác của hệ thống máy chủ Mỗi nút Ethereum trong mạng chạy một EVM và thực hiện các hướng dẫn giống nhau Ethereum Virtual Machines đã được lập trình trong C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly
Trang 181.2.2.3 Hợp đồng thông minh
Hợp đồng thông minh là một cơ chế trao đổi xác định, được kiểm soát bởi các phương tiện kỹ thuật số mà có thể giúp cho việc thực hiện giao dịch trực tiếp giữa các thực thể mà không cần tin cậy nhau Các hợp đồng này được định nghĩa bằng cách lập trình và được chạy chính xác như mong muốn mà không bị kiểm duyệt, lừa đảo hay sự can thiệp từ bên thứ ba trung gian
Chúng có thể được sử dụng để tạo điều kiện, xác minh và thực thi việc đàm phán hoặc thực hiện các hướng dẫn thủ tục kinh tế và có khả năng tránh được sự kiểm duyệt, thông đồng và rủi ro từ phía đối tác Trong Ethereum, các hợp đồng thông minh được coi là các kịch bản tự trị hoặc các ứng dụng phân cấp được lưu trữ trong chuỗi khối Ethereum để thực hiện sau đó bởi EVM Các hướng dẫn được nhúng trong các hợp đồng Ethereum được thanh toán bằng ether và có thể được thực hiện bằng nhiều ngôn ngữ Turing-complete khác nhau
1.2.3 Ứng dụng
Rất nhiều người nghĩ Ethereum tạo ra để cạnh tranh với đồng tiền ảo Bitcoin nhưng thực chất tiền tệ không phải là mục đích mà Ethereum nhắm đến Công nghệ blockchain của Ethereum tập trung tạo ra các ứng dụng hoạt động dựa trên smart contract nhằm giải quyết mọi giao dịch một cách dễ dàng, nhanh chóng, tiết kiệm, an toàn và công khai
1.3 Tổng quan về smart contract
1.3.1 Giới thiệu về smart contract
Smart contract là một bộ giao thức đặc biệt với mục tiêu là đóng góp xác nhận hay tiến hành quá trình đàm phán và thực hiện hợp đồng Smart contract cho phép ta triển khai giao dịch mà không cần thông qua một bên thứ ba trung gian
Những giao dịch này hoàn toàn dễ dàng truy dấu và không thể bị can thiệp hoặc đảo chiều Smart contract chứa trong mình toàn bộ những thông tin chi tiết về các điều khoản và thực hiện chúng một cách tự động
Trang 19Sau khi có nhận lệnh triển khai thì hợp đồng sẽ được triển khai theo đúng như điều khoản định sẵn Đồng thời, smart contract cũng sẽ tự động kiểm tra quá trình thực hiện những cam kết nêu trong hợp đồng
Hình 1.1 – Nguyên lý hoạt động của smart contract
1.3.3 Các thành phần của smart contract
Chủ thể hợp đồng, chương trình phải được cấp khả năng truy cập đến sản phẩm/dịch vụ liệt kê trong hợp đồng để có thể tự động khóa hay mở khóa chúng
Chữ ký điện tử, tất cả các bên tham gia đồng ý triển khai thỏa thuận bằng các khóa cá nhân của họ
Điều khoản hợp đồng, điều khoản của smart contract có dạng một chuỗi các hoạt động Các bên tham gia hợp đồng đều phải ký chấp nhận nó
Trang 20Nền tảng phân quyền, smart contract sau khi hoàn tất sẽ được tải lên Blockchain của nền tảng phân quyền tương ứng và được phân phối về cho các node của nền tảng ấy
1.3.4 Lợi ích của smart contract
Smart contract được mã hóa và phân phối về cho các node Cách thức này bảo đảm nó sẽ không bị thất lạc hay sửa đổi mà không được bạn cho phép
Hầu hết các công đoạn đều được tự động hoá, và gần như loại bỏ hoàn toàn bên trung gian
1.4 Các ứng dụng phi tập trung
1.4.1 Giới thiệu ứng dụng phi tập trung
Như tác giả đã trình bày trong phần giới thiệu về Ethereum ở trên, Ethereum cung cấp một nền tảng để các nhà phát triển tạo ra các ứng dụng chạy trên blockchain, các ứng dụng này được gọi là ứng dụng phi tập trung, thường được gọi là DApp (Decentralized App)
Các ứng dụng phi tập trung là ứng dụng có mã nguồn mở, không chịu sự kiểm soát của một cá nhân hoặc đối tượng nào, và chạy trên blockchain hoặc mạng lưới máy tính phi tập trung Các ứng dụng phi tập trung không có máy chủ trung tâm, người dùng liên hệ với nhau thông qua các kết nối đồng cấp Các ứng dụng thông thường đều chịu sự kiểm soát của một đối tượng, chạy trên một máy chủ trung tâm
và dễ bị tấn công hoặc gặp thời gian chết do máy chủ rơi vào trạng thái ngoại tuyến
Một ứng dụng phi tập trung không có máy tính chủ hoặc đối tượng đơn lẻ nào kiểm soát, nó hoạt động trên một mạng máy tính và các thay đổi đều do người dùng quyết định Không có vấn đề nghiêm trọng rằng máy chủ có thể bị sập hoặc bị tấn công Nếu một máy tính trên mạng lưới thoát tuyến, ứng dụng không bị ảnh hưởng
vì còn hàng ngàn máy khác đang vận hành ứng dụng vào thời điểm đó
Ngay cả khi một máy tính trong mạng lưới bị tấn công, cũng không thể thực hiện các thay đổi trên ứng dụng vì cần phần lớn mạng lưới phải đồng thuận với thay đổi đó
Trang 211.4.2 Làm sao để xây dựng một DApp?
Để xây dựng ra một DApp ta cần phải:
Có một hệ thống blockchain đóng vai trò như một server để lưu trữ cơ sở dữ liệu, trong luận văn này, tác giả sẽ tự tạo một hệ thống private blockchain và sử dụng
hệ thống này để xây dựng DApp
Có tài khoản ví điện tử trên mạng blockchain đó
Tạo ra smart contract quy định các điều khoản, chủ thể, giao dịch và triển khai smart contract lên hệ thống blockchain
Xây dựng ứng dụng hay website và kết nối chúng đến hệ thống blockchain
1.5 Một số phần mềm, thư viện và framework được sử dụng trong đề tài
1.5.1 Geth
Geth hay còn gọi là Go Ethereum, là một chương trình giúp người dùng tương tác với hệ thống blockchain của Ethereum như mining, thực hiện giao dịch… Đồng thời, Geth cũng là chương trình hỗ trợ người dùng tự tạo ra hệ thống blockchain của riêng mình
1.5.2 Remix
Remix là một trình soạn thảo và biên dịch ngôn ngữ lập trình Solidity, remix cũng hỗ trợ các công cụ để nhà phát triển gỡ lỗi và chạy thử smart contract Điểm đặc biệt của remix là không cần phải cài đặt mới sử dụng được, mà chỉ cần truy cập vào đường link: https://remix.ethereum.org/ là có thể sử dụng ngay
1.5.3 Nodejs
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8 Engine Nodejs sử dụng rộng bởi hàng ngàn lập trình viên trên toàn thế giới NodeJS cung cấp các thư viện phong phú ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất
Trang 221.5.6 Web3.js
Web3.js là một thư viện javascript, giúp các ứng dụng javascript chạy trên trình duyệt web kết nối và tương tác với hệ thống blockchain Web3.js có thể tải tại: https://github.com/ethereum/web3.js
1.5.7 Bootstrap
Bootstrap là một framework giúp người dùng dễ dàng tạo ra giao diện website,
nó chứa các mẫu thiết kế có sẵn dựa trên HTML và CSS cho các kiểu chữ, biểu mẫu, nút bấm, điều hướng và các thành phần giao diện khác
1.5.8 Metamask
Metamask cho phép người dùng chạy các ứng dụng Ethereum DApps ngay trong trình duyệt mà không cần khởi động toàn bộ node Ethereum dẫn đến trình duyệt trở nên nặng nề và chậm chạp
1.6 Tiểu kết
Qua chương này, tác giả đã nêu lên một số cơ sở lý thuyết và một số thư viện, phần mềm được sử dụng trong đề tài Trong chương tiếp theo, tác giả sẽ tiến hành xây dựng một hệ thống private blockchain
Trang 23CHƯƠNG 2 HỆ THỐNG XÁC MINH THÔNG TIN SINH VIÊN 2.1 Giới thiệu về hệ thống
Như đã nói trên phần mở đầu, công nghệ blockchain đang dần được áp dụng vào nhiều lĩnh vực trong cuộc sống Ngày càng nhiều cá nhân, cơ quan và tổ chức quan tâm, nghiên cứu và cho ra nhiều ứng dụng của blockchain được áp dụng vào cuộc sống Mục tiêu của hệ thống là ứng dụng tính minh bạch và độ tin cậy cao của công nghệ blockchain để tăng cao độ an toàn khi lưu trữ thông tin sinh viên Tất cả dữ liệu liên quan đến công việc học tập (điểm, hoạt động ngoại khoá, kỹ năng, trải nghiệm,…) đều
sẽ được lưu trữ trên Blockchain một cách minh bạch, rõ ràng, bất biến Quá trình này
sẽ hạn chế được tối đa các vấn đề về gian lận điểm, bằng cấp giả mạo trong giáo dục
Hình 2.1 hệ thống Blockchain vào giáo dục
Hiện tại, có một hệ thống được gọi là OpenBadger sử dụng Blockchain để thu thập thông tin chứng chỉ do hơn 3.000 cơ quan đào tạo trên toàn thế giới, từ các tổ chức phi lợi nhuận Các tổ chức kinh doanh cung cấp đào tạo kiến thức, hoặc các tổ chức lớn như IBM và Microsoft, cũng như các khóa đào tạo của các tổ chức giáo dục Học viên cũng có thể sử dụng các chứng chỉ được lưu trữ trên OpenBadger để mở ra các cơ hội nghề nghiệp mới
Trang 242.1.1 Thiết kế hệ thống
Quay về hệ thống xác minh thông tin sinh viên của mình, vì nhu cầu của du học sinh Lào ở Việt Nam ngày càng tăng lên và hiện tại có hơn 800 sinh viên đang học tại miền Nam Làm sao để đảm bảo mỗi sinh viên khi ra trường có thể theo dõi chính xác được quá trình học tập của sinh viên trong suốt quá trình học ở các trường
từ khi nhập học đến khi ra trường Hiện trạng, công tác quản lý sinh viên tại tổng lãnh sự quán dân nhân Lào tại TP Hồ Chí Minh; các công việc trước đây vẫn làm thủ công như lập danh sách sinh viên, lập danh sách trường học tốn rất nhiều thời gian, công sức và giấy tờ, sổ sách lưu trữ (chưa có hệ thống quản lý sinh viên)
Chính vì vậy hệ thống xác thực thông tin sinh viên sẽ giúp sinh viên sở hữu thông tin có thể truy cập dữ liệu nguồn được xác nhận bất cứ lúc nào, có thể sử dụng thông tin đã lưu trữ trên, đồng thời phụ huynh, công tác quản lý sinh viên cho đến nhà tuyển dụng cũng có thể xem thông tin lưu trữ trên hệ thống, 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ế, dữ liệu cá nhân (bao gồm điểm, hoạt động đoàn thể, phong trào, giải thưởng…) của từng học sinh sẽ được lưu trữ chi tiết và cụ thể trong Blockchain.Học viên chia sẻ thông tin trong ID cho các nhà tuyển dụng và doanh nghiệp, từ đó các nhà tuyển dụng dễ dàng tìm kiếm các nhân tố tài năng phù hợp
Hình 2.2 Sơ đồ hoạt động của hệ thống
Trang 252.1.2 Kiến trúc của hệ thống
Hệ thống xác thực thông tin sinh viên gồm một server nodejs đóng vai trò điều khiển mọi hoạt động trong hệ thống, đồng thời cũng tạo kết nối trung gian để người dùng tương tác với blockchain Ethereum đóng vai trò như một cơ sở dữ liệu chứa tất
cả thông tin sinh viên Khi có yêu cầu từ client đến server, server sẽ thực hiện các yêu cầu tương ứng đến hệ thống blockchain, rồi phản hồi kết quả nhận được từ blockchain cho client
Hình 2.3 Sơ đồ kiến trúc hệ thống
Nhân viên nhập liệu: có quyền nhập vào, chỉnh sửa và cập nhật Làm nhiệm vụ thu thập dữ liệu và nhập vào dữ liệu thông tin của mỗi sinh viên, thông tin cá nhân, bảng điểm, 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
Client: có quyền chỉ được xem thông tin
Trang 26Hình 2.4 Sơ đồ nhập thông tin vào hệ thống
Khi nhập thông tin một sinh viên, nếu địa chỉ ví của tài khoản đang gọi đến yêu cầu lưu thông tin không được đăng ký thì báo lỗi, nếu đã đăng ký thì tiếp tục kiểm tra sinh viên đã được lưu trữ trên hệ thống chưa? Nếu sinh viên đã được lưu trữ trên hệ thống thì thực hiện việc cập nhật lại thông tin sinh viên, nếu sinh viên chưa được lưu trữ trên hệ thống thì thực hiện thêm sinh viên mới trên hệ thống
Các thông tin đã thu thập và lưu vào hệ thống bao gồm có:
Thông tin cơ bản của mỗi sinh viên: họ tên, ngày sinh, trường, cấp học, ngành học, khóa học, số điện thoại, email, địa chỉ kí túc xá, loại học bổng, số thông thư, công việc chính thức, điểm, hình ảnh, năm nhập học và kết thúc
Thông tin thực tập: nơi thực tập, thời gian thực tập, điểm thực tập, công việc thực tập
Trang 27 Thông tin đoàn đội: ngày gia nhập đoàn thanh niên, liên đoàn, hội phụ nữ ,đảng viên dự bị và ngày gia nhập đảng viên
Thông tin văn bằng: họ tên, ngày sinh, trường, số hiệu, năm tốt nghiệp, xét loại, hình thức đào tạo và ngày cấp bằng
2.1.3 Công cụ thực hiện
Trong hệ thống này, luận văn sử dụng những công cụ như sau:
Ngôn ngữ lập trình solidity để điều khoản smartcontact
Nodejs thực hiện thiết kế giao diện, chức năng và giao tiếp với nguời sử dụng
Cơ sở dữ liệu sử dụng công nghệ Blockchain dựa vào nền tảng Ethereum platform for blockchain
Giảm khối lượng công việc của nhân viên quản lý sinh viên: các công việc trước đây vẫn làm thủ công như lập danh sách sinh viên, lập danh sách trường học tốn rất nhiều thời gian, công sức và giấy tờ, sổ sách lưu trữ Trình độ và kết quả học tập sẽ được số hóa với một nền tảng cho thấy các chi tiết đáng tin cậy để giảm khối lượng công việc của nhân sự và loại bỏ các thủ tục phức tạp
Trang 28Đáng tin cậy: một điều khác làm cho Blockchain nổi bật so với các nền tảng kỹ thuật số khác là độ tin cậy của dữ liệu Ngoài khả năng mã hóa tiên tiến và dữ liệu phi tập trung, nếu có sự giả mạo hệ thống sẽ khiến thông tin giả mạo không khớp với thông tin mà mọi người trong hệ thống có, coi như thông tin đó là ngầm thiếu
uy tín
2.1.5 Nhược điểm của hệ thống
Thuật toán đồng thuận Proof of Work giúp bảo vệ blockchain đã được chứng minh là rất hiệu quả trong những năm qua Tuy nhiên, có một vài dạng tấn công tiềm năng có thể được thực hiện nhắm vào các mạng blockchain, trong đó đặc biệt được nhắc tới nhiều là tấn công 51% Một cuộc tấn công như vậy có thể xảy ra nếu
có một đơn vị kiểm soát hơn 50% sức mạnh băm của mạng lưới Điều này sẽ cho phép đơn vị này phá vỡ mạng lưới bằng cách cố ý ngăn chặn hoặc sửa đổi việc đặt các giao dịch Mặc dù về mặt lý thuyết là có thể xảy ra, nhưng thực tế là chưa bao giờ có cuộc tấn công 51% thành công nhắm vào blockchain
Một nhược điểm khác của các hệ thống blockchain là một khi dữ liệu đã được thêm vào blockchain thì việc sửa đổi là rất khó Mặc dù tính ổn định là một trong những lợi thế của blockchain, nhưng nó không phải lúc nào cũng tốt Việc thay đổi
dữ liệu hoặc mã blockchain thường rất phức tạp và thường cần có một hard fork, trong đó một chuỗi sẽ bị bỏ và một chuỗi mới được đưa lên
Các sổ cái Blockchain có thể phát triển rất lớn theo thời gian Blockchain Bitcoin hiện cần khoảng 200GB dung lượng lưu trữ Tốc độ tăng kích thước hiện tại của blockchain có vẻ như vượt xa tốc độ tăng dung lượng lưu trữ của các ổ đĩa cứng Mạng lưới có nguy cơ mất các node nếu kích thước của sổ cái là quá lớn để các cá nhân tải xuống và lưu trữ
2.2 Cài đặt phần mềm Geth
Có 2 cách cài đặt Geth cho Ubuntu:
Trang 292.2.1 Cài đặt từ kho mã nguồn (repository) của Ubuntu bằng công cụ quản lý gói
APT
Geth không có sẵn trong repository của Ubuntu nên chúng ta phải thêm vào bằng các lệnh sau:
sudo apt-add-repository ppa:ethereum/ethereum
sudo apt update
Hình 2.5 Cài đặt geth từ trình quản lý Apt
Sau đó cài đặt geth bình thường:
sudo apt-get install geth
Hình 2.6 Cài đặt geth từ trình quản lý Apt
Trang 302.2.2 Cài đặt từ binary package
Tải geth từ trang web sau https://geth.ethereum.org/downloads/
Hình 2.7 Trang web tải geth
Sau đó giải nén vào thư mục cần cài đặt, tôi sẽ giải nén vào thư mục theo đường dẫn /opt/geth/
Hình 2.8 Thư mục cài đặt geth
Trang 31Trong terminal nhập lệnh sau:
ln -s /opt/geth/geth /usr/bin/
2.2.3 Kiểm tra geth
Để kiểm tra geth đã được cài đặt hay chưa, từ terminal, nhập lệnh sau để kiểm tra phiên bản của geth: geth version
Hình 2.9 Kiểm tra phiên bản của geth
2.3 Thiết lập hệ thống private Ethereum
Quá trình cài đặt miner sẽ theo từng bước sau: thiết lập khối nguyên thủy, thiết lập và tạo tài khoản ví cho miner, điều khiển miner
Trước tiên, chúng ta sẽ tạo một thư mục có tên là ethereum và làm việc trong thư mục này:
mkdir ethereum
cd ethereum
2.3.1 Thiết lập khối nguyên thủy
Khối nguyên thủy (genesis block) là khối đầu tiên của hệ thống, khối này sẽ định nghĩa các điều kiện và nguyên tắc của hệ thống cho các node và miner muốn tham gia vào
Trang 32Để cấu hình (thiết lập) genesis block, trong thư mục gốc của dự án, tạo một file có tên genesis.json, sau đó mở file và dán vào nội dung sau:
{
"nonce": "0x0000000000000042",
"mixhash":
"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData":
"0x436861696e536b696c6c732047656e6573697320426c6f636b", "gasLimit": "0xffffffff",
Trong đoạn code này, cần chú ý vào các giá trị sau:
Difficulty: là độ khó để mã hóa một block, nếu chỉnh độ khó càng cao đồng
nghĩa với tốc độ đào của miner càng chậm
ChainId: cũng như một địa chỉ ip hay một port, chainId được dùng để khai
báo id của hệ thống blockchain Lưu ý là không được dùng các id sau:
Bảng 2.1 Các id không được sử dụng trong hệ thống
Trang 33ChainId Network
1 Mainnet
2 Expanse - An alternative Ethereum implementation
3 Ropsten - Ethereum test network
4 Rinkeby - Ethereum test network
42 Kovan - Ethereum test network
61 Ethereum Classic Mainnet - Ethereum Classic main network
62 Morden - Ethereum Classic test network
2.3.2 Tạo miner và tài khoản
Chúng ta tiếp tục tạo một thư mục để chứa dữ liệu của miner, tôi sẽ đặt tên là miner1
Trong thư mục đang làm việc, mở terminal và nhập vào lệnh sau để khởi tạo miner từ file genesis:
geth datadir miner1 init genesis.json
Khi thành công, terminal sẽ xuất ra các thông tin sau:
Hình 2.10 Kết quả khởi tạo miner
Để tạo tài khoản cho miner, nhập tiếp vào các lệnh sau:
Trang 34geth datadir miner1 account new
Geth sẽ yêu cầu chúng ta nhập mật khẩu cho tài khoản
Hình 2.11 Kết quả tạo tài khoản trên miner
Kiểm tra lại thư mục miner1, ta sẽ thấy xuất hiện 2 thư mục mới là keystore
và geth
Hình 2.12 Thư mục sau khi cài đặt miner
2.3.3 Khởi động miner và bắt đầu đào (mining):
Trong thư mục miner1, chúng ta sẽ tạo một shell script để khởi động miner, tạo một file có tên là startMiner.sh với nội dung như sau:
Trang 35geth identity "miner1" networkid 88 datadir
"/home/trinh/Desktop/ethereum/miner1" rpc rpcapi
"db,eth,net,web3,personal" rpcport "8545" unlock 0 password /home/trinh/Desktop/ethereum/miner1/password.sec ipcpath "~/.ethereum/geth.ipc"
Cũng trong thư mục miner1, tạo một file password.sec để lưu mật khẩu của tài khoản đã tạo, mục đích là để khi khởi động miner, thì geth sẽ dùng mật khẩu trong file này để tự động unlock tài khoản Chúng ta cũng có thể tự unlock tài khoản sau khi khởi động miner Sau đó, cấp quyền thực thi cho file script:
Hình 2.13 Console điều khiển miner
Để cho miner đào, chúng ta nhập lệnh:
miner.start()
Sau một khoảng thời gian đào, chúng ta nhập lệnh kiểm tra tiền (ETH) sẽ thấy
số lượng tiền tăng lên:
Trang 37Hình 2.15 Giao diện IDE remix
Nếu là lần đầu tiên mở Remix, chúng ta sẽ cần phải cài một vài plugin để hỗ trợ cho việc lập trình Để thêm plugin, chúng ta chọn biểu tượng hình phích cắm ở side menu bên trái
Hình 2.16 Menu cài đặt plugin
Lúc này, danh sách các plugin sẽ xuất hiện cho chúng ta lựa chọn để thêm vào Trong báo cáo này, luận văn đã dùng các plugin sau:
Solidity compiler, dùng để biên dịch và kiểm tra lỗi cho code của smart contract Deploy & run transactions, dùng để chạy thử smart contract trên môi trường javascript hoặc triển khai smart contract lên hệ thống
Trang 38Sau khi đã cài đặt các plugin, chúng ta cần tạo một contract mới để bắt đầu lập trình, nhấn vào biểu tượng tờ giấy để trở lại khu vực quản lý tệp tin Sau đó chọn biểu tượng dấu cộng để tạo một smart contract mới
Hình 2.17 Menu quản lý tệp tin
Để lập trình một smart contract, đầu tiên cần phải khai báo phiên bản Solidity và tên của smart contract
contract StudentAuthentication {
address owner = address(0);
constructor() public { owner = msg.sender;
Trang 39} }
Tiếp theo, chúng ta cần khai báo cấu trúc của thông tin sinh viên khi được lưu trên Ethereum
contract StudentAuthentication {
struct Student { string Name;
Tương tự, chúng ta sẽ có struct cho thông tin chi tiết của sinh viên và điểm:
contract StudentAuthentication {
struct DetailStudent { string Dormitory;
Trang 40struct Subject { string Name;
string Value;
} }
Ta sẽ dùng mapping để lưu trữ thông tin của struct như một khóa chính trong SQL, mỗi một mã sinh viên (kiểu String) sẽ được dùng để truy xuất thông tin của một struct sinh viên
mapping (string => Student) Students;
mapping (string => DetailStudent) DetailStudents;
Đối với việc lưu điểm cho sinh viên, mỗi sinh viên có không chỉ một môn học,
do đó chúng ta cần thêm mã môn học để xác định điểm số
mapping (string => mapping(string => Subject)) Subjects;
Mapping ngoài cùng nghĩa là với mỗi mã sinh viên chúng ta có thể tra cứu toàn
bộ kết quả học tập của một sinh viên, và mapping trong cùng nghĩa là mã môn học Như vậy, khi cần truy xuất điểm một môn học của một sinh viên, câu truy vấn của chúng ta
sẽ như sau:
Subjects[masv][mamonhoc]
Các sự kiện khi thực hiện lưu thông tin sinh viên và điểm Các sự kiện này sẽ được gọi trong các hàm lưu thông tin, các sự kiện này nhằm mục đích lưu lại các hành động mà smart contract đã thực hiện vào log