Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 153 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
153
Dung lượng
5,96 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM NGUYỄN THÀNH HIẾU TRẦN QUỐC KHÁNH KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG TRUY XUẤT NGUỒN GỐC DỰA TRÊN ETHEREUM SMART CONTRACT Developing a commodities traceability application based on Ethereum Blockchain and Smart Contract KỸ SƯ/ CỬ NHÂN NGÀNH CÔNG NGHỆ PHẦN MỀM TP HỒ CHÍ MINH, 2023 ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM NGUYỄN THÀNH HIẾU – 19521505 TRẦN QUỐC KHÁNH – 19521686 KHÓA LUẬN TỐT NGHIỆP ỨNG DỤNG TRUY XUẤT NGUỒN GỐC DỰA TRÊN ETHEREUM SMART CONTRACT Developing a commodities traceability application based on Ethereum Blockchain and Smart Contract KỸ SƯ/ CỬ NHÂN NGÀNH CÔNG NGHỆ PHẦN MỀM GIẢNG VIÊN HƯỚNG DẪN NGUYỄN TRỊNH ĐÔNG TP HỒ CHÍ MINH, 2023 THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số………………… ngày ………………… Hiệu trưởng Trường Đại học Công nghệ Thông tin … – Chủ tịch – Thư ký – Ủy viên – Ủy v LỜI CẢM ƠN Lời nói đầu, chúng em gửi lời cảm ơn đến quý thầy cô giảng viên Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh đặc biệt Khoa Cơng nghệ Phần mềm hỗ trợ, giảng dạy hai em thời gian học tập trường, từ có kiến thức quan trọng, phù hợp, để xây dựng tảng để phát triển đề tài Điều thứ hai, chúng em muốn gửi lời cảm ơn trực tiếp đến thầy Nguyễn Trịnh Đơng, giảng viên hướng dẫn trực tiếp đến nhóm Những lời tư vấn, góp ý hướng dẫn tận tính thầy điều q báu giúp nhóm chúng em qua giai đoạn không luận án mà trình học tập Sự hỗ trợ dẫn thầy mà chúng em thực hồn thành đề tài khóa luận tốt Trong q trình thực khóa luận, chúng em vận dùng tổng hợp kiến thức tích lũy học tập được, đồng thời kết hợp với kiến thức trình phát triển đề tài Do kinh nghiệm kiến thức thực nhóm cịn nhiều khó khăn hạn chế giai đoạn thực hiện, điều dẫn đến thiếu sót Vì vậy, chúng em mong nhận ý kiến, lời góp ý quý báu từ quý thầy cô để giúp cho báo cáo chúng em thêm hoàn thiện Lời cuối cùng, hai em chân thành gửi lời cảm ơn sâu sắc đến q thầy TP Hồ Chí Minh, Ngày tháng năm 2023 Sinh viên NGUYỄN THÀNH HIẾU TRẦN QUỐC KHÁNH MỤC LỤC LỜI CẢM ƠN .4 MỤC LỤC DANH MỤC HÌNH 12 DANH MỤC BẢNG 17 DANH MỤC TỪ VIẾT TẮT 18 TÓM TẮT KHÓA LUẬN ĐỀ CƯƠNG CHI TIẾT .3 CHƯƠNG 1: MỞ ĐẦU 1.1 Lý chọn đề tài 1.2 Mục đích nghiên cứu 1.2.1 Khách quan 1.2.2 Chủ quan .10 Đối tượng nghiên cứu 10 1.3 1.3.1 Các công nghệ nghiên cứu: 10 1.3.2 Đối tượng sử dụng đề tài hướng đến: 11 Phạm vi nghiên cứu 11 1.4 1.4.1 Phạm vi môi trường: .11 1.4.2 Phạm vi chức năng: .11 CHƯƠNG 2: KIẾN THỨC NỀN TẢNG 13 2.1 ReactJS 13 2.1.1 Giới thiệu .13 2.1.2 Những khái niệm .14 Giới thiệu Ant Design 15 2.1.3 2.2 NodeJS 15 2.2.1 Giới thiệu NodeJS 15 2.2.2 Lý chọn NodeJS .16 2.3 Express JS – Framework Node JS 17 2.3.1 Giới thiệu Express JS 17 2.3.2 Áp dụng vào đề tài 18 2.4 Smart Contract Ethereum 18 2.4.1 Tổng quan Ethereum 18 2.4.2 Tổng quan Smart Contract .20 2.4.3 Lý lựa chọn ứng dụng Blockchain vào đề tài 21 2.5 Firebase 22 2.5.1 Giới thiệu Firebase 22 2.5.2 Áp dụng Firebase Cloud Messaging (FCM) 22 2.6 Go Ethereum 23 2.6.1 Giới thiệu Go Ethereum (Geth) 23 2.6.2 Áp dụng vào đề tài 24 2.7 Truffle 24 2.7.1 Giới thiệu Truffle 24 2.7.2 Áp dụng vào đề tài 24 2.8 Amazon Web Services 25 2.8.1 Giới thiệu Amazon Web Services 25 2.8.2 Áp dụng vào đề tài 26 2.9 Android – Kotlin 26 2.9.1 Giới thiệu Android 26 2.9.2 Giới thiệu Kotlin 27 2.9.3 Áp dụng vào đề tài 27 CHƯƠNG 3: THIẾT KẾ - SỬ DỤNG BLOCKCHAIN TRONG HỆ THỐNG 28 3.1 Tổng quan mạng Ethereum blockchain công khai (Ethereum Public Blockchain Network) 28 3.2 Tổng quan mạng Ethereum Blockchain nội (Ethereum Private Blockchain Network) 28 3.2.1 Giới thiệu PoA Private Blockchain 29 3.2.2 Kiến trúc Nút Ethereum (Ethereum Node Structure) 29 3.3 Thuật toán đồng thuận 32 3.3.1 Khái niệm thuật toán đồng thuận 32 3.3.2 Thuật toán đồng thuận Geth 32 Thuật toán đồng thuận Ethash: 32 Thuật toán đồng thuận Clique: 33 3.4 Kiến trúc Blockchain hệ thống 33 3.4.1 Kiến trúc luồng hoạt động Public Blockchain 33 3.4.2 Kiến trúc luồng hoạt động Private Blockchain 35 3.5 So sánh Public Blockchain Network Private Blockchain Network 36 3.5.1 Khả sử dụng tiếp cận 36 3.5.2 Quản trị 36 3.5.3 Sự minh bạch 37 3.5.4 Bảo mật hiệu suất 37 Tính ứng dụng 37 3.5.5 CHƯƠNG 4: PHÂN TÍCH YÊU CẦU HỆ THỐNG 38 4.1 Phân tích yêu cầu đề tài 38 4.1.1 Mô tả nghiệp vụ hệ thống .38 4.1.2 Yêu cầu chứng nghiệp vụ .40 4.1.3 Yêu cầu phi chức 41 4.2 Phân tích thiết kế Domain Model 43 4.2.1 Sơ đồ mô tả Domain .43 4.2.2 Mô tả miền đối tượng .44 4.3 Mô tả sơ đồ Usecases 46 Authentication Usecase 48 4.3.1 4.3.1.1 Đặc tả Usecase “Đăng nhập” 48 4.3.2 Usecase quản lý tài khoản .51 4.3.3 Usecase quản lý hạt giống .56 4.3.4 Usecase quản lý mảnh đất nông trại .58 4.4.7 Usecase quản lý dự án thu hoạch 69 4.4.8 Usecase quản lý dự án vận chuyển .71 4.4.9 Usecase quản lý dự án nhập/ xuất kho 73 4.4.10 Usecase quản lý dự án sản xuất 75 4.5 Thiết kế sơ đồ hoạt động – Activity Diagram 78 4.5.1 Sơ đồ Activity Đăng nhập .78 4.5.2 Sơ đồ Activity Đăng xuất 79 4.5.3 Sơ đồ Activity Thay đổi mật 79 4.5.4 Sơ đồ Activity Quên mật 80 4.5.5 Sơ đồ Activity Tạo tài khoản 80 4.5.6 Sơ đồ Activity Tạo nông trại 81 4.5.7 Sơ đồ Activity Cập nhật vai trò/ chức tài khoản 81 4.5.8 Sơ đồ Activity Tạo tài khoản nhân viên 82 4.5.9 Sơ đồ Activity Cập nhật phần phòng ban cho nhân viên 82 4.5.10 Sơ đồ Activity Tìm kiếm – sử dụng chung 83 4.5.11 Sơ đồ Activity Tạo hạt giống mảnh đất 83 4.5.12 Sơ đồ Activity Cập nhật thông tin hạt giống mảnh đất 84 4.5.13 Sơ đồ Activity Thay đổi thông tin nông trại 84 4.5.14 Sơ đồ Activity Tạo dự án cho lô hàng 85 4.5.15 Sơ đồ Activity Cập nhật thông tin dự án lô hàng 85 4.5.16 Sơ đồ Activity Xem danh sách dự án – sử dùng chung 86 4.5.17 Sơ đồ Activity Cập nhật trạng thái dự án – sử dụng chung 86 4.5.18 Sơ đồ Activity Cập nhật thông tin giai đoạn dự án – sử dụng chung 87 CHƯƠNG 5: THIẾT KẾ CƠ SỞ DỮ LIỆU 88 5.1 Thiết kế sơ đồ lớp 88 5.2 Danh sách lớp sơ đồ 89 5.3 Mô tả chi tiết lớp 90 5.3.1 Bảng thông tin lớp người dùng .90 5.3.2 Bảng thông tin lớp nông trại 91 5.3.3 Bảng thông tin lớp hạt giống 92 5.3.4 Bảng thông tin lớp mảnh/ mẫu đất 92 5.3.5 Bảng thông tin lớp dự án nông trại .93 5.3.6 Bảng thông tin lớp dự án doanh nghiệp 94 5.3.7 Bảng thông tin lớp dự án thu hoạch 96 5.3.8 Bảng thông tin lớp dự án vận chuyển 97 5.3.9 Bảng thông tin lớp dự án nhập/ xuất kho bãi 98 5.3.10 Bảng thông tin lớp dự án sản xuất 100 5.3.11 Bảng enum thông tin vai trò tài khoản 101 5.3.12 Bảng enum thơng tin phịng ban/ cơng việc nhân viên 102 5.3.13 Bảng enum thông tin trạng thái mảnh/ mẫu đất 102 5.3.14 Bảng enum thông tin trạng thái nông trại 103 5.3.15 Bảng enum thông tin trạng thái chung cho dự án 103 5.3.16 Bảng thông tin sản phẩm 103 CHƯƠNG 6: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 106 6.1 Danh sách hình chung 106 6.1.1 Màn hình Đăng nhập - Login 106 6.1.2 Màn hình Quên mật 106 6.2 Danh sách hình Tech Admin – Quản lý kỹ thuật 107 6.3 Danh sách hình Farmer – Nông dân theo nông trại 110 6.4 Danh sách hình System Admin – Quản lý doanh nghiệp, hệ thống 116 6.5 Danh sách hình Harvestor – Nhân viên kiểm tra thu hoạch 120 6.6 Danh sách hình nhân viên kiểm tra vận chuyển 122 6.7 Danh sách hình nhân viên kiểm tra xuất/ nhập kho 123 6.8 Danh sách hình nhân viên kiểm tra sản xuất sản phẩm 125 CHƯƠNG 7: CÀI ĐẶT VÀ KIỂM THỬ 130 7.1 Cài đặt 130 7.2 Mục đích kiểm thử: 130 7.3 Phương pháp kiểm thử: 130 7.4 Quy trình kiểm thử: 130 7.4.1 Xác định thông tin truy xuất nguồn gốc hàng hoá: 130 6.5.2 Màn hình chi tiết dự án kiểm tra thu hoạch Hình 6.5.2 Hình ảnh hình chi tiết dự án kiểm tra thu hoạch 6.5.3 Màn hình chi tiết cập nhật thơng tin kiểm tra thu hoạch Hình 6.5.3 Hình ảnh hình chi tiết cập nhật thông tin kiểm tra thu hoạch 121 6.6 Danh sách hình nhân viên kiểm tra vận chuyển 6.6.1 Màn hình danh sách dự án nhân viên Hình 6.6.1 Hình ảnh hình danh sách dự án nhân viên kiểm tra vận chuyển 6.6.2 Màn hình chi tiết dự án kiểm tra vận chuyển Hình 6.6.2 Hình ảnh hình chi tiết dự án kiểm tra vận chuyển 122 6.6.3 Màn hình chi tiết cập nhật thơng tin kiểm tra vận chuyển Hình 6.6.3 Hình ảnh hình chi tiết cập nhật thông tin kiểm tra vận chuyển 6.7 Danh sách hình nhân viên kiểm tra xuất/ nhập kho 6.7.1 Màn hình danh sách dự án nhân viên Hình 6.7.1 Hình ảnh hình danh sách dự án nhân viên xuất/ nhập kho 123 6.7.2 Màn hình chi tiết dự án kiểm tra xuất/ nhập kho Hình 6.7.2 Hình ảnh hình chi tiết dự án kiểm tra xuất/ nhập kho 6.7.3 Màn hình chi tiết cập nhật thơng tin kiểm tra xuất/ nhập kho Hình 6.7.3 Hình ảnh hình chi tiết cập nhật thông tin kiểm tra xuất/ nhập kho 124 6.8 Danh sách hình nhân viên kiểm tra sản xuất sản phẩm 6.8.1 Màn hình danh sách dự án nhân viên Hình 6.8.1 Hình ảnh hình danh sách dự án nhân viên kiểm tra sản xuất sản phẩm 6.8.2 Màn hình chi tiết dự án kiểm tra sản xuất Hình 6.8.2 Hình ảnh hình chi tiết dự án kiểm tra sản xuất 125 6.8.3 Màn hình chi tiết cập nhật thơng tin kiểm tra sản xuất sản phẩm Hình 6.8.3 Hình ảnh hình chi tiết cập nhật thông tin kiểm tra sản xuất sản phẩm 6.8.4 Màn hình tạo sản phẩm cho dự án Hình 6.8.4 Hình ảnh hình tạo sản phẩm cho dự án 126 6.9 Giao diện ứng dụng di động 6.9.1 Màn hình giới thiệu Hình ảnh 6.9.1: Màn hình giới thiệu 6.9.2 Màn hình quét mã sản phẩm Hình ảnh 6.9.2: Màn hình quét mã sản phẩm 127 6.9.3 Màn hình đăng nhập Hình ảnh 6.9.3: Màn hình đăng nhập 6.9.4 Màn hình hiển thị thơng tin sản phẩm Hình ảnh 6.9.4: Màn hình hiển thị thơng tin sản phẩm 128 6.9.5 Màn hình Hình ảnh 6.9.5: Màn hình 129 CHƯƠNG 7: CÀI ĐẶT VÀ KIỂM THỬ 7.1 Cài đặt - Link truy cập: https://hk-coffee-goods-traceability.vercel.app - Môi trường: tất web browser hành 7.2 Mục đích kiểm thử: - Xác định tính đắn, minh bạch tin cậy thông tin truy xuất nguồn gốc hàng hoá website - Đảm bảo tính bảo mật liệu truy xuất website - Kiểm tra khả website việc cung cấp thơng tin xác đầy đủ nguồn gốc hàng hoá - Kiểm tra đắn tính website ứng với yêu cầu đặt tài liệu 7.3 Phương pháp kiểm thử: - Sử dụng kỹ thuật kiểm thử hộp trắng để phân tích kiểm tra tính bảo mật hệ thống - Sử dụng kỹ thuật kiểm thử chức để đảm bảo websit đáp ứng tính đầy đủ xác thông tin lô hàng nông nghiệp 7.4 Quy trình kiểm thử: 7.4.1 Xác định thơng tin truy xuất nguồn gốc hàng hố: - Xem xét thơng tin liên quan tên hàng hoá, nơi sản xuất, quy cách đóng gói, nguồn gốc vật liệu, v.v - Phân tích cấu trúc liệu quy định việc truy xuất thông tin 7.4.2 Tạo testcase kiểm thử thủ cơng: - Phân tích đánh giá kịch kiểm thử cần thiết để đảm bảo toàn vẹn xác liệu truy xuất 130 - Thực kiểm thử thủ công website kỹ thuật kiểm thử hộp trắng 7.4.3 Kiểm tra tính bảo mật hệ thống Áp dụng biện pháp bảo mật mã hóa liệu, kiểm tra xác thực, kiểm sốt quyền truy cập 7.4.4 Kiểm tra tính xác đầy đủ thơng tin: • Tạo kiểm thử chức để đảm bảo website cung cấp thơng tin xác đầy đủ nguồn gốc hàng hố • Kiểm tra trường liệu, hệ thống tìm kiếm quy trình xử lý liệu để đảm bảo tính xác đầy đủ 7.5 Thực kiểm thử: • Thời gian: 24/4 – 30/4/2023 - (1 tuần) • Nhân lực: người • Mơi trường: Chrome, Firefox, Safari • Phương pháp kiểm thử: thủ công, hộp trắng 7.6 Kết kiểm thử: • Xác định lỗi, lỗ hổng thực biện pháp khắc phục khắc phục • Tính đầy đủ xác thơng tin hệ thống đảm bảo • Tính bảo mật thơng tin ứng dựng kiểm tra 131 CHƯƠNG 8: TỔNG KẾT 8.1 Kết đạt Về mặt kỹ thuật: • Hiểu sử dụng React JS, tính chất, khái niệm để xây dựng ứng dụng Web • Có kỹ triển khai hệ thống Node JS với hệ quản lý CSDL MongoDB Xây dựng APIs cho chức quản lý truy xuất thơng tin hàng hóa • Tích hợp triển khai sử dụng Blockchain vào lĩnh vực truy xuất thơng tin hàng hóa để tăng độ tinh cậy, tính minh bạch cho hàng hóa nơng sản nói riêng mặt hàng hóa khác nói chung Cung cấp nhiều lựa chọn phía blockchain mạng blockchain công khai mạng blockchain nội nhằm đảm bảo linh hoạt hệ thống, đáp ứng cầu khách hàng • Triển khai hệ thống mạng blockchain cơng khai (public blockchain network) ứng dụng ví Metamask, Alchemy để kết nối với blockchain Polygon Testnet xử lý transaction • Triển khai mạng blockchain nội (private blockchain network) ứng dụng Go-Ethereum, xây dựng giao thức đồng thuận thuật toán Clique (PoA) triển khai lên AWS EC2 • Sử dụng bên thứ hỗ trợ cho việc thực hệ thống EC2 (AWS), Nginx Load Balancer, FCM – Firebase, upload quản lý ảnh Cloudinary… Về mặt kỹ mềm: • Tích lũy thêm kỹ năng phân tích dự án cụ thể lĩnh vực nông nghiệp 132 • Có tư duy, khả làm việc nhóm, sử dụng cơng cụ bổ trợ cho việc thực đồ án • Nâng cao kỹ tìm hiểu, khả research, nghiên cứu tài liệu tham khảo để xây dựng ứng dụng theo yêu cầu đặt • Áp dụng kỹ năng, kiến thức tiếp thu suốt trình nghiên cứu, học tập trường 8.2 Thuận lợi khó khăn 8.2.1 Thuận lợi • Các cơng nghệ thực có cộng đồng hỗ trợ lớn nên dễ dàng tìm hiểu , thực tham khảo, học hỏi thêm kiến thức cho dự án • Được hỗ trợ từ thầy Đông với gợi ý đưa ý kiến cho hệ thống cách thức triển khai phân tích • Cãi thiện giao tiếp làm việc nhóm hiệu • Đóng góp xây dựng để hồn thiện tốt cho khóa luận 8.2.2 Khó khăn Song song với thuận lợi , có khó khăn định đối trình thực Khóa luận • Đây mảng tảng cơng nghệ hồn tồn với thành viên nhóm nên động lực thử thách việc nghiên cứu, tìm tịi triển khai hệ thống • Blockchain lĩnh vực rộng tảng kiến thức, nên gây nhiều khó khăn, nhóm sử dụng kiến thức Blockchain để nắm hiểu ứng dụng Do lĩnh vực cơng nghệ hồn tồn nên có khó khăn việc tìm hiểu nghiên cứu, so sánh phát triển hệ thống dựa tài liệu tìm hiểu 133 • Các tính liên quan đến CRUD, chưa có nhiều tính đột phá tăng tính trải nghiệm người dùng cao Nhìn chung, nhóm cố gắng khắc phục giảm thiểu khó khăn trình thực 8.3 Hướng phát triển • Mở rộng hoàn thiện chức giao diện hệ thống • Cập nhật chức cho ứng dụng Mobile (Android iOS) để tăng tính đa dạng tảng cho hệ thống • Chuyển đổi phân tách service dự án theo hướng Microservices • Tổng qt hóa dự án đa lĩnh vực khơng riêng đối tượng sản phẩm cụ thể (rau, củ, trái cây…) • Cải thiện khả bảo mật, tính minh bạch dễ sử dụng hệ thống • Tìm hiểu hồn thiện mơ hình Private Blockchain, sử dụng lưu hành nội hệ thống Tìm hiểu thuật toán đồng thuận QBFT, IBFT, Rash bên cạnh Clique 134 TÀI LIỆU THAM KHẢO [1] Giới thiệu tổng quát ReactJs: https://viblo.asia/p/gioi-thieu-ve-reactjs-phan-i-cackhai-niem-co-ban-V3m5WzjblO7 [2] Giới thiệu NodeJs: https://nodejs.org/en/docs [3] Tổng quan Ethereum Blockchain: https://ethereum.org/en/developers/docs/ [4] Trang chủ Ant Design: https://ant.design/ [5] Tài liệu từ trang chủ React: https://reactjs.org/ [6] Tài liệu tham khảo sử dụng Redux Toolkit: https://redux-toolkit.js.org/tutorials/quickstart [7] Tham khảo nội dung dự án, nghiệp vụ: https://github.com/rwaltzsoftware-org/coffeesupplychain-ethereum [8] StackOverFlow: https://stackoverflow.com/ [9] Go ethereum: https://geth.ethereum.org/docs [10] Amazon Web Service EC2: https://docs.aws.amazon.com/ec2/index.html [11] Solidity: https://docs.soliditylang.org/en/v0.8.20/ [12] Smart Contract: https://docs.soliditylang.org/en/latest/introduction-to-smartcontracts.html [13] Firebase FCM: https://firebase.google.com/docs/cloud-messaging [14] Truffle: https://trufflesuite.com/docs/truffle/ [15] Private Blockchain Network: https://geth.ethereum.org/docs/fundamentals/private-network [16] Polygon: https://docs.alchemy.com/reference/polygon-api-faq [17] Alchemy: https://docs.alchemy.com/docs/ [18] Ethereum Node Architecture: https://ethereum.org/en/developers/docs/nodesand-clients/node-architecture/ 135