1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

76 71 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ỨNG DỤNG CUNG CẤP CHỨNG CHỈ TRÊN NỀN TẢNG BLOCKCHAIN KHĨA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY Ngành: Hệ Thống Thông Tin HÀ NỘI – 2020 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ỨNG DỤNG CUNG CẤP CHỨNG CHỈ TRÊN NỀN TẢNG BLOCKCHAIN KHĨA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY Ngành: Hệ Thống Thông Tin Cán hướng dẫn: PGS.TS Nguyễn Trí Thành HÀ NỘI – 2020 LỜI CẢM ƠN Đầu tiên, muốn xin gửi lời cảm ơn đến PGS.TS Nguyễn Trí Thành dìu dắt, tạo điều kiện cần thiết giúp đỡ tơi hồn thành khóa luận Tôi xin cảm ơn tới thầy, cô trường đại học Công Nghệ Đại học Quốc Gia Hà Nội, tập thể lớp K61 T đồng hành với suốt bốn năm vừa qua Các thầy, tận tình bảo, truyền đạt kiến thức vô quý giá giúp tơi bước chân vững vào đường lập trình Các bạn học phấn đấu, giúp đỡ bốn năm giảng đường đại học vừa qua Tơi xin anh Đỗ Trung Kiên tồn thể thành viên Blockchain Research Team thuộc công ty cổ phần Sun-Asterisk Việt Nam chiếu cố, giúp đỡ q trình học hỏi, nghiên cứu cơng nghệ Blockchain thời gian vừa qua Cuối cùng, xin dành lời cám ơn đến gia đình tơi, người ln quan tâm, lo lắng, thương yêu vô điều kiện Gia đình ln động lực bước tiế tơi gặp khó khăn sống TĨM TẮT Tóm tắt: Hiện nay, blockchain công nghệ bật nhất, hứa hẹn tảng cách mạng công nghiệp 4.0 nhân loại Khi nói đến blockchain, người ta thường liên tưởng đến tiền mã hóa, mà điển hình tảng Bitcoin hay Ethereum Tuy nhiên, ứng dụng công nghệ blockchain dừng lại việc cách mạng hóa giao dịch tiền tệ không giới kỳ vọng đến Công nghệ blockchain kỳ vọng tương lai gần áp dụng vào gần mặt đời sống xã hội chuỗi cung ứng, y tế, giáo dục v v Một tảng dựa công nghệ blockchain đầu việc giải vấn đề nêu Hyperledger Fabric hỗ trợ phát triển tập đồn IBM Trong khóa luận này, đề cập đến vấn đề xây dựng ứng dụng tảng Hyperledger Fabric, ứng dụng nhằm cung cấp chứng xác minh, an tồn cho học viên hồn thành khóa học thuộc quan, tổ chức giáo dục Từ khóa: Blockchain, Hyperledger Fabric LỜI CAM ĐOAN Tơi xin cam đoạn tồn khóa luận việc xây dựng ứng dụng cung cấp chứng tảng blockchain, giao diện ứng dụng phần mềm hệ thống thực hướng dẫn PGS.TS Nguyễn Trí Thành Tất tài liệu tham khảo liên quan tới khóa luận tốt nghiệp nêu rõ nguồn danh sách tài liệu tham khảo Khóa luận khơng chép tài liệu, cơng trình nghiên cứu nhân hay tổ chức khác Tôi xin chịu trách nhiệm lời cam đoan Nếu nội dung điều cam đoan không đúng, xin chịu trách nhiệm theo quy định trường đại học Công Nghệ - Đại học Quốc Gia Hà Nội Hà Nội, ngày Sinh Viên tháng năm Mục lục Danh sách bảng Danh sách ký hiệu, chữ viết tắt Danh sách hình vẽ Chương Giới thiệu 14 Chương Giới thiệu công nghệ sử dụng 16 2.1 Hyperledger Fabric 16 2.1.1 Giới thiệu chung 16 2.1.2 Các đặc điểm 16 2.2 Node.js 20 2.2.1 Giới thiệu chung 20 2.2.2 Framework Express 20 2.3 Go 20 2.4 Docker 20 2.4.1 Giới thiệu container 20 2.4.2 So sánh container máy ảo 20 2.4.3 Giới thiệu Docker 21 2.5 Hyperledger Explorer 21 2.6 Vue.js 21 2.7 MongoDB 22 2.7.1 Giới thiệu chung 22 2.7.2 Đặc điểm 22 Chương Phân tích đặc tả yêu cầu 23 3.1 Phân tích yêu cầu 23 3.1.1 Đặc tả yêu cầu chức 24 3.1.2 Đặc tả yêu cầu phi chức 24 3.1.3 Tóm tắt yêu cầu người sử dụng 25 3.1.4 Thiết kế ca sử dụng 27 3.1.5 Phân tích ca sử dụng 28 Chương Thiết kế hệ thống 57 4.1 Thiết kế API Server 57 4.1.1 API xác thực người dùng 57 4.1.2 API khóa học 58 4.1.3 API mơn học 59 4.1.4 API lớp học 60 4.1.5 API chứng 61 4.1.6 API giáo viên 61 4.1.7 API học viên 62 4.1.8 API thông tin cá nhân 63 4.2 Thiết kế liệu hợp đồng thông minh 64 4.2.1 Struct Course thể thông tin khóa học 64 4.2.2 Struct Subject thể thông tin môn học 65 4.2.3 Struct Class thể thông tin lớp học 65 4.2.4 Struct Teacher thể thông tin giáo viên 65 4.2.5 Struct Student thể thông tin học viên 66 4.2.6 Struct Information chứa thông tin người dùng 66 4.2.7 Struct Score thể thông tin điểm số 66 4.2.8 Struct Certificate thể thông tin chứng 66 4.3 Thiết kế sở liệu MongoDB 67 4.3.1 Document người dùng 67 Chương 5: Cài đặt triển khai ứng dụng 68 5.1 Cấu hình máy chủ web Nginx với tên miền studychain.academy 68 5.2 Cấu hình máy chủ web Nginx với tên miền verify.studychain.academy 70 5.3 Cài đặt triển khai mã nguồn 72 5.3.1 Cài đặt phần mã nguồn frontend 72 5.3.2 Cài đặt phần mã nguồn server Node.js 72 5.3.2 Cài đặt phần mã nguồn server Node.js 73 Cài đặt phần mã nguồn mạng Hyperledger Fabric 73 Kết luận 74 Tài liệu tham khảo 75 Danh sách bảng 2.1 Bảng so sánh Hyperledger Fabric số tảng khác 3.1 Ca sử dụng đăng nhập với người dùng hệ thống 3.2 Ca sử dụng đăng xuất 3.3 Ca sử dụng thay đổi thông tin tài khoản người dùng 3.4 Ca sử dụng tạo khóa học 3.5 Ca sử dụng chỉnh sửa thơng tin khóa học 3.6 Ca sử dụng thay đổi trạng thái khóa học 3.7 Ca sử dụng tạo môn học 3.8: Ca sử dụng chỉnh sửa thông tin môn học 3.9 Ca sử dụng xóa mơn học 3.10 Ca sử dụng tạo lớp học thuộc môn học 3.11 Ca sử dụng chỉnh sửa thơng tin lớp học 3.12 Ca sử dụng xóa lớp học 3.13 Ca sử dụng thêm giáo viên vào lớp học 3.14 Ca sử dụng bắt đầu lớp học 3.15 Ca sử dụng thêm mơn học vào khóa học 3.16 Ca sử dụng tạo tài khoản giáo viên 3.17 Ca sử dụng giáo viên cho điểm học viên 3.18 Ca sử dụng đăng ký khóa học 3.19 Ca sử dụng đăng ký lớp học 3.20 Ca sử dụng hủy đăng ký lớp học 3.21 Ca sử dụng lấy chứng 3.22 Ca sử dụng xem chứng 3.23 Ca sử dụng xác thực chứng blockchain 10 HTTP /students GET Giáo vụ Lấy thông tin tất học viên / GET students/:username /courses Giáo vụ Lấy danh sách khóa mà học viên đăng ký / GET students/:username /classes Giáo vụ Lấy danh sách lớp mà học viên đăng ký / GET students/:username Giáo vụ Lấy thông tin học viên theo username 4.1.8 API thông tin cá nhân Bảng 4.8: API thông tin cá nhân Đường dẫn API Phương thức HTTP Quyền người dùng Chức /me GET Giáo viên, học viên Lấy tất thông tin tài khoản /me PUT Giáo viên, học viên Chỉnh sửa thông tin tài khoản /me/summary GET Giáo viên, học viên Lấy thông tin chung tài khoản /me/classes GET Giáo viên, học viên Lấy thông tin tất lớp đăng ký thêm vào 62 /me/courses GET Học viên Lấy thông tin tất khóa học đăng ký /me/certificates GET Học viên Lấy thông tin tất chứng học viên đạt / GET me/courses/:course Id/certificate Học viên Lấy thơng tin chứng theo khóa học / me/subjects/:subje ctId GET Học viên Lấy thông tin môn học học viên /me/courses/notenroll GET Học viên Lấy thông tin tất khóa học chưa đăng ký / GET me/courses/:course Id/scores Học viên Điểm số khóa học /me/avatar PUT Giáo viên, học viên Thay đổi ảnh đại diện /me/password PUT Giáo viên, học viên Thay đổi mật 4.2 Thiết kế liệu hợp đồng thông minh Dữ liệu hệ thống phần lớn lưu Hyperledger Fabric Cấu trúc liệu thể qua struct thể hợp đồng thông minh ngôn ngữ Go 4.2.1 Struct Course thể thơng tin khóa học - CourseID (string): Giá trị uidv4 cho khóa học 63 - CourseCode (string): Mã khóa học - CourseName (string): Tên khóa học - ShortDescription (string): Mơ tả ngắn khóa học - Description (string): Mơ tả chi tiết khóa học - Subjects ([] string): Danh sách id môn học thuộc khóa học - Students([] string): Danh sách học viên đăng ký khóa hoc - Status (string): Trạng thái khóa học 64 4.2.2 Struct Subject thể thông tin môn học - SubjectID (string): Giá trị uidv4 cho môn học - SubjectCode (string): Mã môn học - SubjectName (string): Tên môn học - ShortDescription (string): Mô tả ngắn môn học - Description (string): Mô tả chi tiết môn học - Classes ([] string): Danh sách id lớp học thuộc môn học 4.2.3 Struct Class thể thông tin lớp học - ClassID (string): Giá trị uidv4 cho lớp học - ClassCode (string): Mã lớp học - SubjectID (string): Id môn học mà lớp học trực thuộc - Room (string): Tên phòng học - Time (string): Giờ học - StartDate (string): Ngày bắt đầu lớp học - EndDate (string): Ngày kết thúc khóa học - Repeat (string): Tần suất lớp học - Students([] string): Danh sách học viên đăng ký lớp hoc - Capacity (unit64): Số lượng học viên tối đa lớp - TeacherUsername (string): Giáo viên đứng lớp - Status (string): Trạng thái lớp học 4.2.4 Struct Teacher thể thông tin giáo viên - Username (string): Tên tài khoản giáo viên - Fullname (string): Tên đầy đủ giáo viên - Info (Information): Các thông tin cá nhân giáo viên - Classes ([] string): Danh sách lớp học giáo viên 4.2.5 Struct Student thể thông tin học viên - Username (string): Tên tài khoản học viên 65 - Fullname (string): Tên đầy đủ học viên - Info (Information): Các thông tin cá nhân học viên - Courses ([] string): Danh sách khóa học học viên - Classes ([] string): Danh sách lớp học học viên - Certificates ([] string): Danh sách chứng học viên 4.2.6 Struct Information chứa thông tin người dùng - PhoneNumber (string): Số điện thoại - Email (string): Thư điện tử - Address (string): Địa - Sex (string): Giới tính - Birthday (string): Ngày sinh - Avatar (string): Đường link ảnh đại diện - Country (string): Quốc tịch 4.2.7 Struct Score thể thông tin điểm số - SubjectID (string): Id môn học - StudentUsername (string): Tên học viên - ScoreValue (float64): Điểm số 4.2.8 Struct Certificate thể thông tin chứng - CertificateID (string): Id chứng - CourseID (string): id khóa học chứng - StudentUsername (string): Tên người dùng học viên đạt chứng - IssueDate (string): Ngày học viên đạt chứng 66 4.3 Thiết kế sở liệu MongoDB Do phần lớn liệu lưu vào mạng Hyperledger Fabric nên cở sở liệu MongoDB có chức lưu tên người dùng, mật quyền hệ thống để người dùng đăng nhập, đăng ký với hệ thống 4.3.1 Document người dùng Cấu trúc document người dùng đơn giản, gồm có ba trường thơng tin sau: - Username (string): Tên người dùng - Password (string): Mật mã dạng băm người dùng - Role (number): Quyền người dùng hệ thống (1 giáo vụ, giáo viên, học viên) Hình 4.1: Ví dụ mơ tả ghi document lưu trữ thông tin người dùng 67 Chương Cài đặt triển khai ứng dụng Chương mô tả bước từ đầu đến cuối việc cài đặt triển khai ứng dụng chạy máy chủ, cấu hình tên miền Sau trình ứng dụng truy cập qua trình duyệt website thông thường Môi trường cài đặt triển khai ứng dụng: - Hệ điều hành Ubuntu 18.04 64-bit - Máy chủ web Nginx 1.14 - Ngôn ngữ Go phiên 1.13 - Node.js phiên 10.19.0 - Git - MongoDB 3.6.3 - PostgreSQL 10.10 - Docker 19.03.5 - Docker-compose 1.21.2 - PM2 4.1.4 5.1 Cấu hình máy chủ web Nginx với tên miền studychain.academy Sau trỏ tên miền đến địa IP máy chủ, tiến hành cầu hình máy chủ web Nginx để ứng dụng truy cập thơng qua tên miền studychain.academy từ trình duyệt Bước 1: Tại thư mục gốc, di chuyển đến thư muc /etc/nginx/sitesavailable Bước 2: Tạo file studychain.academy với quyền root 68 Bước 3: Chỉnh sửa nội dung file studychain.academy sau: upstream backend { server 127.0.0.1:3000; } upstream frontend { server 127.0.0.1:8080; } server { listen 80; server_name studychain.academy; root /home/deploy/study-chain/client/dist; index index.html; location / { try_files $uri /index.html =404; } location /api/ { proxy_set_header Host $http_host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_redirect proxy_pass off; http://backend/; } } Bước 4: Thực lệnh tạo symbolic-link sites-available sites-enabled ln -s /etc/nginx/sites-available/studychain.academy /etc/nginx/sitesenables/studychain.academy Bước 5: Khởi động lại nginx câu lênh sudo systemctl restart nginx, server truy cập đâu trình duyệt 69 Hình 5.1: Giao diện trang chủ truy cập với địa studychain.academy 5.2 Cấu hình máy chủ web Nginx với tên miền verify.studychain.academy Tên miền studychain.academy dùng cho người dùng truy cập vào giao diện ứng dụng lập trình Vue.js tên miền verify.studychain.academt dùng để người dùng truy cập vào giao diện Hyperledger Explorer viết React.js Bước 1: Tại thư mục gốc, di chuyển đến thư mục /etc/nginx/sitesavailable Bước 2: Tạo file hyperledger-explorer với quyền root Bước 3: Chỉnh sửa nội dung file hyperledger-explorer sau: upstream backend2 { server 127.0.0.1:9000; } upstream frontend2 { server 127.0.0.1:9000; } server { listen 80; server_name verify.studychain.academy; root /home/deploy/study-chain/blockchain-explorer/client/build; index index.html; location / { try_files $uri /index.html =404; } 70 location /api/ { proxy_set_header Host proxy_set_header Upgrade $http_host; $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-NginX-Proxy true; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_redirect proxy_pass off; http://backend2/; } } Bước 4: Thực lệnh tạo symbolic-link sites-available sites-enabled ln -s /etc/nginx/sites-available/hyperledger-explorer /etc/nginx/sitesenables/hyperledger-explorer Bước 5: Khởi động lại nginx câu lênh sudo systemctl restart nginx, server truy cập đâu trình duyệt 71 Hình 5.2: Giao diện Hyperledger Explorer người dùng truy cập vào verify.studychain.academy 5.3 Cài đặt triển khai mã nguồn Mã nguồn ứng dụng lưu trữ Github địa chỉ: - https://github.com/conglt10/study-chain Tiến hành tải mã nguồn từ kho lưu trữ Github máy chủ với lệnh - git clone https://github.com/conglt10/study-chain 5.3.1 Cài đặt phần mã nguồn frontend Bước 1: Di chuyển đến thư mục study-chain/client Bước 2: Cài đặt package cần thiết với câu lệnh npm install Bước 3: Cấu hình biến mơi trường để gọi đến server Node.js cách tạo file env thêm dòng sau vào file: VUE_APP_API_BACKEND=https://studychain.academy/api VUE_APP_API_EXPLORER=https://verify.studychain.academy Bước 4: Chạy câu lệnh npm run build 5.3.2 Cài đặt phần mã nguồn server Node.js Bước 1: Di chuyển đến thư mục study-chain/server Bước 2: Cài đặt package cần thiết với câu lệnh npm install Bước 3: Khởi động sở liệu MongoDB câu lệnh sudo service mongod start Bước 4: Tạo file env thêm biến môi trường cần thiết vào file Bước 5: Chạy câu lệnh pm2 start /bin/www để khởi động server 5.3.3 Cài đặt phần mã nguồn mạng Hyperledger Fabric Phần mã nguồn cấu hình mạng Hyperledger Fabric phần mã nguồn có độ phức tạp cao lại phần chạy, cài đặt đơn giản Bước 1: Di chuyển đến thư mục study-chain/network Bước 2: Chạy file start.sh với câu lệnh /start.sh Quá trình chạy tốn thời gian tương đối lâu (khoảng phút) để cài đặt mạng 5.3.4 Cài đặt phần mã nguồn Hyperledger Explorer 72 Bước 1: Di chuyển đến thư mục study-chain/blockchainexplorer/app/persistence/fabric/postgreSQL (Hyperledger Explorer dùng sở liệu postgreSQL) Bước 2: Chạy lệnh chmod -R 777 db/ Bước 3: Di chuyển đến thư mục db câu lệnh cd db/ Bước 4: Chạy file createdb.sh với câu lệnh /createdb.sh Bước 5: Di chuyển đến thư mục study-chain/blockchain-explorer Bước 6: Xóa file nhật ký file wallet cũ với hai lệnh - rm -r wallet/study-chain/ - rm -f logs/console/console.log Bước 7: Cài package cần thiết với lệnh npm install Bước 8: Khởi động Hyperledger Explorer lệnh /start.sh Bước 9: Di chuyển đến thư mục study-chain/blockchain-explorer/client Bước 10: Cài package cần thiết cho phần frontend Hyperledger Explorer với câu lệnh npm install Bước 11: Chạy phần frontend Hyperledger Explorer với lệnh npm run build 73 Kết luận Những đóng góp khóa luận Cơng nghệ blockchain chung tảng Hyperledger Fabric nói riêng cịn so với cơng nghệ khác, cịn nhiều tiềm để khai phá tương lai Khóa luận đề cập đến tồn quy trình xây dựng hồn chỉnh ứng dụng phân tán tảng blockchain Hyperledger Fabric, từ việc phân tích, thiết triển khai Từ chứng minh việc chuyển đổi hệ thống cũ theo kiến trúc tập trung sang hệ thống phi tập trung hoàn toàn khả thi Định hướng mở rộng tương lai Trong phạm vi khóa luận tốt nghiệp hạn chế kỹ lập trình thân, ứng dụng thiết nghĩ nhiều hạn chế cần cải thiện nhiều mặt Trong tương lai, tơi có số đề xuất nhằm nâng cao, cải thiện chất lượng ứng dụng sau: - Sử dụng Kubernetes để triển khai Docker container chạy mạng Hyperledger Fabirc giúp việc quản lý Docker container dễ dàng hơn, nâng cao khả mở rộng, chịu tải ứng dụng - Viết Unit test cho phần Hyperledger Fabric SDK gọi đến mạng Fabirc để đảm bảm chất lượng mã nguồn, tránh lỗi phát sinh - Cấu trúc lại liệu hợp đồng thông minh Với cấu trúc tại, mối quan hệ khóa học, mơn học lớp học rối rắm, phức tạp dẫn đến việc truy vấn liệu nhiều thời gian thông thường - Nâng cấp giao diện người dùng để tăng trải nghiệm người dùng Giao diện người dùng gồm nhiều trang nối tiếp trang kia, gây thời gian khó khăn cho người sử dụng - Nâng cấp tính ứng dụng Thêm phần kiểm tra tự chấm điểm để đạt chứng cho học viên 74 75 Tài liệu tham khảo Tiếng Anh [1] “Introduction” [Online] https://hyperledger-fabric.readthedocs.io/en/release2.0/whatis.html [Accessed May 2020] [2] “Node.js” [Online] https://en.wikipedia.org/wiki/Node.js [Accessed May 2020] [3] “Go (programming language)” [Online] https://en.wikipedia.org/wiki/Go_(programming_language) [Accessed May 2020] [4] “What is a Container?” [Online] https://www.docker.com/resources/whatcontainer [Accessed May 2020] [5] “What is a Container? - Comparing Containers and Virtual Machines” [Online] https://www.docker.com/resources/what-container [Accessed May 2020] [6] “Hyperledger Explorer” [Online] https://www.hyperledger.org/use/explorer [Accessed May 2020] [7] “What is Vue.js?” [Online] https://vuejs.org/v2/guide/ [Accessed May 2020] [8] “MongoDB” [Online] https://en.wikipedia.org/wiki/MongoDB [Accessed May 2020] 76 ... 3.18 Ca sử dụng đăng ký khóa học 3.19 Ca sử dụng đăng ký lớp học 3.20 Ca sử dụng hủy đăng ký lớp học 3.21 Ca sử dụng lấy chứng 3.22 Ca sử dụng xem chứng 3.23 Ca sử dụng xác thực chứng blockchain. ..ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ỨNG DỤNG CUNG CẤP CHỨNG CHỈ TRÊN NỀN TẢNG BLOCKCHAIN KHĨA LUẬN TỐT NGHIỆP HỆ ĐẠI HỌC CHÍNH QUY Ngành: Hệ Thống Thông... Hyperledger Fabric LỜI CAM ĐOAN Tơi xin cam đoạn tồn khóa luận việc xây dựng ứng dụng cung cấp chứng tảng blockchain, giao diện ứng dụng phần mềm hệ thống thực hướng dẫn PGS.TS Nguyễn Trí Thành Tất tài

Ngày đăng: 04/08/2020, 00:17

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w