Đang tải... (xem toàn văn)
Đồ án tập trung vào việc xây dựng một ứng dụng xổ số phi tập trung, sử dụng Ethereum Smart Contracts, và được hỗ trợ bởi công nghệ Chainlink VRF Verifiable Random Function để đảm bảo tín
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO MÔN HỌC
Giảng viên hướng dẫn: Ths Trần Anh Dũng
Sinh viên thực hiện:
TP HỒ CHÍ MINH, 2023
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO MÔN HỌC
Giảng viên hướng dẫn: Ths Trần Anh Dũng
Sinh viên thực hiện:
TP HỒ CHÍ MINH, 2023
Trang 3Em đã và đang học tập và rèn luyện tại Trường Đại học Công Nghệ Thông Tin, chuyên ngành Software Engineering
Em xin cám ơn trường đã tạo điều kiện cho chúng em có thể giao lưu học tập và rèn luyện cùng nhau
Và em xin cám ơn thầy Trần Anh Dũng đã góp ý và hướng dẫn chúng em hoàn thành đồ án môn học này
Trong quá trình làm Đồ Án 2 Em đã có một số sai sót mong thầy giảng viên hướng dẫn bỏ qua Nhờ đó giúp Em không ngừng nỗ lực phát triển, hoàn thiện bản thân để chuẩn bị cho những bước tiếp theo trong tương lai
Một lần nữa, Em xin chân thành cám ơn thầy Trần Anh Dũng
Trang 41.2.3 Định hình tương lai của blockchain 22
1.3 Đối tượng nghiên cứu 22
1.3.1 Sinh Viên và Học Viên: 22
1.3.2 Giảng Viên và Người Hướng Dẫn: 23
1.3.3 Nhà Phát Triển và Quản Trị Website: 23
1.3.4 Người Dùng Kết Quả (End Users): 23
Trang 51.4.2.2 Chức năng nâng cao: 24
1.4.3 Phạm vi kỹ thuật 25
1.4.3.1 Phát triển hợp đồng thông minh: 25
1.4.3.2 Front-end và tương tác người dùng 25
Trang 63.2.2 Lưu trữ và quản lý ABI và địa chỉ hợp đồng 44
3.2.3 Tích hợp, tương tác với UI và tối ưu hóa hiệu suất 44
Trang 74.2 Mô tả chi tiết các màn hình 47
5.2.1 Kiểm thử hợp đồng thông minh 52
5.2.1.1 Công cụ và thư viện 52
5.2.1.2 Kiểm thử đơn vị (Unit testing) 52
Trang 9Hình 3.1: Sơ đồ kiến trúc tổng quan 41
Hình 4.1: Màn hình Home (chưa kết nối ví điện tử) 47
Hình 4.2: Màn hình Home sau khi nhấn nút Connect Wallet 48
Hình 4.3: Màn hình sau khi kết nối ví thành công 49
Hình 5.1: Toàn bộ các kiểm thử Unit Tests thành công 53
Trang 1010
DANH MỤC BẢNG
Bảng 4.1: Danh sách các màn hình 47
Bảng 4.2: Mô tả đối tượng trên màn hình Home 48
Bảng 4.3: Biến cố và xử lý trên màn hình Home 49
Bảng 4.4: Mô tả đối tượng sau khi kết nối ví thành công 50
Bảng 4.5: Biến cố xử lý sau khi kết nối ví thành công 50
Bảng 5.1: Các trường hợp kiểm thử của Unit Testing 53
Bảng 5.2: Các trường hợp kiểm thử của staging test 54
Trang 1111
TÓM TẮT ĐỒ ÁN
Đồ án với đề tài “Tìm hiểu Solidity và xây dựng ứng dụng Lottery” tập trung vào việc khám phá và áp dụng ngôn ngữ lập trình Solidity để xây dựng ứng dụng và là một đồ án đầy thách thức và sáng tạo, kết hợp sự phức tạp của Blockchain và sự linh hoạt của phát triển web Full Stack Đồ án tập trung vào việc xây dựng một ứng dụng xổ số phi tập trung, sử dụng Ethereum Smart Contracts, và được hỗ trợ bởi công nghệ Chainlink VRF (Verifiable Random Function) để đảm bảo tính minh bạch và ngẫu nhiên trong việc chọn ra người chiến thắng
Đề tài được khởi đọng bằng việc phân tích và lựa chọn công nghệ phù hợp Nền tảng phát triển được chọn là Solidity cho phần back-end, cung cấp một môi trường mạnh mẽ để viết và triển khai các hợp đồng thông minh, trong khi phần front-end được xây dựng bằng React và Next.js, cung cấp một giao diện người dùng đẹp mắt và dễ sử dụng Sự kết hợp giữa hai phần này tạo nên một ứng dụng đa năng và hiệu quả
Đồ án được thiết kế để hoạt động trên mạng thử nghiệm Ethereum Sepolia, cho phép thử nghiệm các tính năng mà không cần lo lắng về chi phí và rủi ro liên quan đến mạng chính của Ethereum Sử dụng công cụ phát triển Hardhat và thư viện Ethers.js, dự án cung cấp một trải nghiệm phát triển mạnh mẽ và linh hoạt, từ viết mã đến triển khai và kiểm thử
Một trong những đặc điểm nổi bật của "Smart Contract Lottery" là việc tích hợp Chainlink Keepers để tự động hóa quá trình chọn người chiến thắng Điều này không chỉ đảm bảo tính công bằng và minh bạch mà còn giảm thiểu sự can thiệp của con người, làm cho quá trình xổ số trở nên tự động và hiệu quả hơn
Trong quá trình phát triển, đồ án đã trải qua các giai đoạn từ thiết kế, triển khai trên môi trường Local và testnet Sepolia, đến việc kiểm thử unit test và staging test một cách thành công
Cấu trúc của đồ án phân chia rõ rang và được thiết kế tổ chức một cách khoa học để bảo đảm tính login và dễ dàng trong việc quản lý code
Trang 1313
ĐỀ CƯƠNG CHI TIẾT
Tên đồ án: Tìm hiểu Solidity và xây dựng ứng dụng Lottery
Thông tin người thực hiện và hướng dẫn:
Họ và tên sinh viên 1: Đặng Anh Khoa Ngành: Kỹ thuật phần mềm
MSSV:15520367
Email: 15520367@gm.uit.edu.vn Giảng viên hướng dẫn: THS Trần Anh Dũng Email: dungta@uit.edu.vn
Tổng quan đề tài:
1 Lý do chọn đề tài:
Ứng dụng thực tế và thú vị: Xây dựng ứng dụng Lottery tự động trên nền tảng Blockchain, một lĩnh vực công nghệ đang ngày càng phổ biến cách mạng hóa nhiều ngành công nghiệp Việc này không chỉ giúp hiểu rõ hơn về cách thức hoạt động của các hợp đồng thông minh mà còn mang đến một trải nghiệm mới mẻ và thú vị
trong việc phát triển ứng dụng
Học hỏi về Blockchain, Ethereum và Solidity: Đồ án này giúp hiểu rõ hơn về blockchain, nền tảng Ethereum và ngôn ngữ lập trình chính cho việc xây dựng hợp đồng thông minh Một lĩnh vực công nghệ mới đang phát triển mạnh mẽ, nó cung cấp cơ hội nắm bắt và áp dụng kiến thức về một công nghệ mới và tiên tiến, mở rộng hiểu biết của mình về lĩnh vực tiền mã hóa và cách hoạt động của mạng lưới
tài chính phi tập trung
Phát triển kỹ năng kỹ thuật: Đồ án này giúp tôi cải thiện kỹ năng lập trình, đặc biệt là trong việc viết và tối ưu hóa hợp đồng thông minh Ngoài ra, tôi cũng phát triển kỹ năng về quản lý dự án, kiểm thử phần mềm, và hiểu biết sâu hơn về các
công cụ phát triển như Hardhat
Thể hiện khả năng tự học và nghiên cứu: Xây dựng một ứng dụng từ đầu và mới mẻ đòi hỏi năng lực tự học và khả năng nghiên cứu của bản thân Đề tài này
Trang 1414
đỏi hỏi tôi phải tự học và nghiên cứu nhiều khía cạnh mới mẻ, từ ngôn ngữ lập trình
Solidity cho đến việc sử dụng các dịch vụ của Chainlink như VRF và Keeper
Nghiên cứu tương lai: Đề tài này là bước đầu tiên trong hướng nghiên cứu về
Blockchain và phát triển các ứng dụng dựa trên nền tảng này trong tương lai
2 Đối tượng nghiên cứu Sinh Viên và Học Viên:
Học Sinh Trung Học và Sinh Viên Đại Học: có thể sử dụng đồ án làm tài liệu tham khảo hoặc đồ án mẫu để tìm hiểu về phát triển ứng dụng trên blockchain
Giảng Viên và Người Hướng Dẫn:
Giảng viên và người hướng dẫn có thể sử dụng đề tài này như một tài liệu giảng dạy về blockchain, solidity, và phát triển ứng dụng trên Ethereum Họ có thể đánh giá và hỗ trợ sinh viên trong quá trình thực hiện đề tài này
Nhà Phát Triển và Quản Trị Website:
Đối với nhà phát triển và quản trị website, dự án này có thể cung cấp kiến thức về cách tích hợp blockchain vào các ứng dụng web
Họ có thể xem xét việc sử dụng công nghệ blockchain để bảo vệ thông tin và tích hợp chức năng vào các trang web của họ
Người Dùng Kết Quả (End Users):
Người dùng kết quả của ứng dụng Lottery sẽ là những người tham gia vào các lần chơi Họ sẽ trải nghiệm cách ứng dụng hoạt động và có thể sử dụng nó để tham gia vào các lần chơi Lottery hoặc theo dõi kết quả
3 Phạm vi nghiên cứu Phạm vi chức năng:
Chức năng cơ bản:
Trang 1515
Tham gia xổ số: người dùng có thể tham gia xổ số bằng cách trả phí tham gia
(ETH) qua giao diện người dùng
Tự động chọn người chiến thắng: Sử dụng Chainlink VRF (Verifiable
Random Function) để chọn ngẫu nhiên người chiến thắng một cách công bằng và
minh bạch
Thanh toán và ghi nhận người chiến thắng: Tự động chuyển toàn bộ số tiền
trong hợp đồng cho người chiến thắng và ghi nhận trong hệ thống Chức năng nâng cao:
Giao diện đáp ứng Real-time: Phát triển giao diện đáp ứng real-time, cho
phép người dùng xem kết quả xổ số ngay lập tức khi có người chiến thắng được
chọn
Bảo mật và quản lý giao dịch: Tích hợp các biện pháp bảo mật để đảm bảo
an toàn cho các giao dịch và quản lý ví người dùng
Tối ưu hóa gas và hiệu suát: Thực hiện tối ưu hóa gas cho hợp đồng thông
minh, đảm bảo hiệu suát cao và chi phí giao dịch thấp
Hỗ trợ nhiều mạng Blockchain: mở rộng ứng dụng để hỗ trợ nhiều mạng
blockchain khác nhau, tăng tính linh hoạt và tiếp cận rộng rãi hơn
Tích hợp AI và phân tích dữ liệu: Sử dụng trí tuệ nhân tạo và phân tích dữ
liệu để cung cấp insights về xu hướng chơi và hành vi người dùng, cũng như để tối
ưu hóa trải nghiệp người dùng
Trang 1616
Sử dụng ngôn ngữ lập trình chính là Solidity: đào sâu vào các khía cạnh nâng
cao như quản lý trạng thái, xử lý sự kiện, và tích hợp bảo mật
Tối ưu hóa và kiểm soát Gas: Tối ưu hóa chi phí gas trong các giao dịch, đặc
biệt trong việc xử lý các hàm và giao dịch trong hợp đồng thông minh
Front-end và tương tác người dùng
React và Next.js: Tận dụng sức mạnh của Reach và Next.js để xây dựng giao
diện người dùng động, tương tác và dễ sử dụng
Web3 Integration: Tích hợp Web3 để kết nối giao diện người dùng với hợp
đồng thông minh, cho phép tương tác trực tiếp với blockchain
Tích hợp công nghệ Chainlink:
Chainlink VRF: Sử dụng Chainlink Verifiable Random Function để đảm bảo
tính ngẫu nhiên và công bằng trong việc chọn người chiến thắng
Chainlink Keepers: Tích hợp Chainlink Keepers để tự động hóa việc kiểm tra
điều kiện và thực hiện các chức năng của hợp đồng thông minh
Kiểm thử và tối ưu hóa:
Kiểm thử tự động: sử dụng thư viện Chai Matcher, để thực hiện các bài unit
tests và staging test
Phân tích và đánh giá hiệu suất: Liên tục phân tích và đánh giá hiệu suất của hệ thống, bao gồm cả front-end và hợp đồng thông minh, để tìm ra và giải quyết các
vấn đề tiềm ẩn
Phạm vi đánh giá và phản hồi
Đánh giá hiệu suất hợp đồng thông minh: Kiểm tra và đánh giá hiệu suất,
tính minh bạch, và độ an toàn của hợp đồng thông minh
Phản hồi người dùng: Thu thập và phân tích phản hồi từ người dùng về giao
diện và trải nghiệm sử dụng tổng thể
Trang 1717
Kiểm thử: Thực hiện Unit Test và Staging Test để đảm bảo tính ổn định và
chính xác của ứng dụng
4 Phương pháp nghiên cứu:
Nghiên cứu tài liệu trực tuyến: Được sử dụng thông qua các công cụ tìm kiếm trực tuyến và các diễn đàn công nghệ Cũng như là các trang web chính chủ về công
5 Mục tiêu đề tài
Xây dựng hợp đồng thông minh: Mục tiêu chính là phát triển một hợp đồng thông minh (Smart Contract) sử dụng Solidity, đóng vai trò là nền tảng cho một ứng dụng xổ số tự động, công bằng và minh bạch trên blockchain
Tích hợp Chainlink VRF và Keepers: Tích hợp Chainlink Verifiable Random Function (VRF) để đảm bảo tính ngẫu nhiên và công bằng trong việc chọn người chiến thắng, cùng với Chainlink Keepers để tự động hóa quy trình chọn người chiến thắng và xác định thời điểm thực hiện
Phát Triển Giao Diện Người Dùng Thân Thiện: Tạo ra một giao diện người dùng trực quan và dễ sử dụng, được xây dựng với React và Next.js, cho phép người dùng dễ dàng tham gia và theo dõi xổ số
Đảm Bảo Bảo Mật và Hiệu Suất: Tập trung vào việc bảo đảm an ninh và tối ưu hóa hiệu suất của hợp đồng thông minh, bao gồm việc quản lý chi phí gas và bảo vệ khỏi các nguy cơ tấn công
Trang 1818
Kiểm Thử và Đánh Giá: Thực hiện các bài kiểm thử đơn vị và tích hợp sâu, sử dụng các công cụ như Chai Matchers, để đánh giá và đảm bảo tính chính xác, hiệu suất, và độ tin cậy của hợp đồng thông minh
Nghiên Cứu và Phát Triển Công Nghệ Blockchain: Mục tiêu rộng lớn hơn là tăng cường hiểu biết và kỹ năng về blockchain và các ứng dụng của nó, mở đường cho các nghiên cứu và phát triển tương lai trong lĩnh vực này
Nội dung thực hiện:
1 Xác định mục tiêu và phạm vi của đồ án:
Tìm hiểu về công nghệ và đưa ra mục tiêu rõ ràng
2 Nghiên cứu công nghệ và chuẩn bị học tập:
Nắm vững kiến thức về blockchain, Ethereum, Solidity, và các công nghệ liên
3 Phân tích và thiết kế hệ thống:
Phác thảo cấu trúc và chức năng của hợp đồng thông minh, bao gồm cơ chế
tham gia, chọn người chiến thắng và xử lý thanh toán
Dự trù và xử lý các trường hợp ngoại lệ nếu có lỗi hoặc xử lý Event khi thành
Trang 194 Phát triển giao diện người dùng:
Thiết kế UI/UX giao diện người dùng thân thiện và dễ sử dụng
Phát triển giao diện người dùng với React và Next.js, tích hợp với Web3 để
tương tác với hợp đồng thông minh
5 Tích hợp hệ thống:
Kết nối Front-end và Back-end: Tích hợp giao diện người dùng với hợp đồng
thông minh, đảm bảo tương tác mượt mà
6 Kiểm thử và sửa lỗi:
Thực hiện các kiểm thử chất lượng để đảm bảo rằng ứng dụng hoạt động đúng và không có lỗi
Sửa các lỗi và cải thiện hiệu suất dựa trên phản hồi từ các phiên kiểm thử
7 Tối ưu hóa và bảo mật:
Tối ưu hóa chi phí Gas và cải thiện hiệu suất của hợp đồng thông minh Áp dụng các biện pháp bảo mật để bảo vệ hệ thống khỏi các rủi ro và tấn công
8 Triển khai và đánh giá:
Triển khai hợp đồng thông minh lên môi trường testnet và sau đó là mainnet Hosting front-end trên Vercel hoặc IPFS để người dùng có thể sử dụng và tương tác với hợp đồng thông minh
Thu thập và phân tích phản hồi từ người dùng để cải thiện và điểu chỉnh ứng dụng
Trang 2020
9 Quản lý, duy trì và bảo trì:
Tiếp tục quản lý và duy trì ứng dụng và hợp đồng thông minh sau khi chúng đã được triển khai
Cập nhật và bảo mật theo thời gian
10 Chia sẽ và kết luận:
Chia sẻ dự án với cộng đồng lập trình và người dùng để thu hút sự quan tâm và sử dụng
Kết luận dự án và tổng kết các kết quả và học hỏi
11 Chuẩn bị tài liệu và báo cáo:
Chuẩn bị tài liệu kỹ thuật chi tiết về cách thức phát triển và hoạt động của hệ thống
Tổng hợp toàn bộ quá trình nghiên cứu, phát triển và kết quả đạt được vào báo cáo đồ án cuối kỳ
Kế hoạch thực hiện:
Thời gian Nội dung thực hiện
Từ 01/10/2023 đến 04/10/2023 (4 ngày) Nghiên cứu sơ bộ, lập kế hoạch chi tiết
Từ 5/10/2023 đến 19/10/2023 (2 tuần) Phát triển hợp đồng thông minh Từ 19/10/2023 đến 4/11/2023 (2 tuần) Phát triển giao diện người dùng Từ 4/11/2023 đến 14/11/2023 (10 ngày) Kiểm tra và tích hợp
Từ 14/11/2023 đến 19/11/2023 (5 ngày) Triển khai và kiểm tra trên mạng Local
Từ 19/11/2023 đến 24/11/2023 (5 ngày) Triển khai trên mạng thử nghiệm Từ 24/11/2023 đến 26/11/2023 (3 ngày) Triển khai và duy trì giám sát Từ 26/11/2023 – 30/11/2023 (4 ngày) Hướng dẫn sử dụng, thu thập phản
hồi và hoàn thiện báo cáo đồ án
Thời gian dự kiến theo kế hoạch là như trên, thời gian phát sinh kéo dài thêm 1 tháng
Trang 21
21
NỘI DUNG ĐỒ ÁN
Chương 1: MỞ ĐẦU 1.1 Lý do chọn đề tài
Với sự phát triển nhanh chóng của công nghệ, đề tài này phản ánh sự hứng thú và mong muốn khám phá công nghệ mới, đồng thời cũng là cơ hội để phát triển kỹ năng và kiến thức về một lĩnh vực có nhiều tiềm năng như là blockchain
Ứng dụng thực tế và thú vị: Xây dựng ứng dụng Lottery tự động trên nền tảng Blockchain, một lĩnh vực công nghệ đang ngày càng phổ biến cách mạng hóa nhiều ngành công nghiệp Việc này không chỉ giúp hiểu rõ hơn về cách thức hoạt động của các hợp đồng thông minh mà còn mang đến một trải nghiệm mới mẻ và
thú vị trong việc phát triển ứng dụng
Học hỏi về Blockchain, Ethereum và Solidity: Đồ án này giúp hiểu rõ hơn về blockchain, nền tảng Ethereum và ngôn ngữ lập trình chính cho việc xây dựng hợp đồng thông minh Một lĩnh vực công nghệ mới đang phát triển mạnh mẽ, nó cung cấp cơ hội nắm bắt và áp dụng kiến thức về một công nghệ mới và tiên tiến, mở rộng hiểu biết của mình về lĩnh vực tiền mã hóa và cách hoạt động của mạng lưới
tài chính phi tập trung
Phát triển kỹ năng kỹ thuật: Đồ án này giúp tôi cải thiện kỹ năng lập trình, đặc biệt là trong việc viết và tối ưu hóa hợp đồng thông minh Ngoài ra, tôi cũng phát triển kỹ năng về quản lý dự án, kiểm thử phần mềm, và hiểu biết sâu hơn về
các công cụ phát triển như Hardhat
Thể hiện khả năng tự học và nghiên cứu: Xây dựng một ứng dụng từ đầu và mới mẻ đòi hỏi năng lực tự học và khả năng nghiên cứu của bản thân Đề tài này đỏi hỏi tôi phải tự học và nghiên cứu nhiều khía cạnh mới mẻ, từ ngôn ngữ lập trình
Solidity cho đến việc sử dụng các dịch vụ của Chainlink như VRF và Keeper
Nghiên cứu tương lai: Đề tài này là bước đầu tiên trong hướng nghiên cứu về Blockchain và phát triển các ứng dụng dựa trên nền tảng này trong tương lai
Trang 2222
1.2 Mục đích nghiên cứu
Mục đích chính của đề tài này không chỉ nhằm tạo ra một sản phẩm ứng dụng thực tế mà còn mở ra cánh cửa cho việc hiểu sâu hơn về công nghệ blockchain, khám phá tiềm năng của nó và áp dụng keién thức này vào việc giải quyết các vấn đề trong thực tế
1.2.2 Một ứng dụng hệ thống xổ số độc đáo:
- Xây dựng một hệ thống xổ số trên blockchain, không chỉ minh bạch và công bằng mà còn mang tính cách mạng trong cách chơi xổ số truyền thống
1.2.3 Định hình tương lai của blockchain
- Tiên phong trong ứng dụng, xác định và phát triển các ứng dụng mới của blockchain, mở rộng hiểu biết và khám phá những khả năng không giới hạn - Tạo dựng lộ trình nghiên cứu, định hình tương lai của công nghệ blockchain
và ảnh hưởng của nó tới xã hội
1.3 Đối tượng nghiên cứu 1.3.1 Sinh Viên và Học Viên:
Học Sinh Trung Học và Sinh Viên Đại Học: có thể sử dụng đồ án làm tài liệu tham khảo hoặc đồ án mẫu để tìm hiểu về phát triển ứng dụng trên blockchain
Trang 2323
1.3.2 Giảng Viên và Người Hướng Dẫn:
Giảng viên và người hướng dẫn có thể sử dụng đề tài này như một tài liệu giảng dạy về blockchain, solidity, và phát triển ứng dụng trên Ethereum Họ có thể đánh giá và hỗ trợ sinh viên trong quá trình thực hiện đề tài này
1.3.3 Nhà Phát Triển và Quản Trị Website:
Đối với nhà phát triển và quản trị website, dự án này có thể cung cấp kiến thức về cách tích hợp blockchain vào các ứng dụng web
Họ có thể xem xét việc sử dụng công nghệ blockchain để bảo vệ thông tin và tích hợp chức năng vào các trang web của họ
1.3.4 Người Dùng Kết Quả (End Users):
Người dùng kết quả của ứng dụng Lottery sẽ là những người tham gia vào các lần chơi Họ sẽ trải nghiệm cách ứng dụng hoạt động và có thể sử dụng nó để tham gia vào các lần chơi Lottery hoặc theo dõi kết quả
1.4 Phạm vi nghiên cứu 1.4.1 Công nghệ nghiên cứu
1.4.1.1 Back-end:
o Solidity: ngôn ngữ lập trình hợp đồng thông minh
o Hardhat: môi trường phát triển Ethereum cho việc triển khai, chạy và kiểm thử hợp đồng thông minh
o Chainlink: Dịch vụ để sử dụng VRF và Keepers o Chai: Thư viện kiểm thử cho Javascript
o Ethers.js: Thư viện tương tác với Ethereum blockchain và hệ thống EVM
o Hardhat gas reporter: Công cụ để báo cáo gas sử dụng trong các giao dịch và kiểm thử hợp đồng
o Solidity-coverage: Công cụ để đo lường mức độ kiểm thử của hợp đồng thông minh
Trang 2424
1.4.1.2 Front-end:
o Reach: Thư viện javascript để xây dựng giao diện người dùng o Next.js: Framework React cho phép phá triển ứng dụng web với
server-side rendering và tạo ra các trang tính
o Web3uikit: Bộ công cụ UI dành cho các ứng dụng web3, hỗ trợ tạo giao diện người dùng tương tác với blockchain
o Moralis: Thư viện giúp tích hợp back-end block chain một cách nhanh chóng và dễ dàng
o Tailwind CSS: Framewỏk CSS để xây dựng giao diện người dùng một cách nhanh chóng
o WalletConnect: Thư viện giúp kết nối với ví Ethereum từ các ứng dụng web
1.4.2 Phạm vi chức năng: 1.4.2.1 Chức năng cơ bản:
Tham gia xổ số: người dùng có thể tham gia xổ số bằng cách trả phí
tham gia (ETH) qua giao diện người dùng
Tự động chọn người chiến thắng: Sử dụng Chainlink VRF (Verifiable
Random Function) để chọn ngẫu nhiên người chiến thắng một cách công
bằng và minh bạch
Thanh toán và ghi nhận người chiến thắng: Tự động chuyển toàn bộ
số tiền trong hợp đồng cho người chiến thắng và ghi nhận trong hệ thống
1.4.2.2 Chức năng nâng cao:
Giao diện đáp ứng Real-time: Phát triển giao diện đáp ứng real-time,
cho phép người dùng xem kết quả xổ số ngay lập tức khi có người chiến
thắng được chọn
Tối ưu hóa gas và hiệu suát: Thực hiện tối ưu hóa gas cho hợp đồng
thông minh, đảm bảo hiệu suát cao và chi phí giao dịch thấp
Trang 2525
1.4.3 Phạm vi kỹ thuật
1.4.3.1 Phát triển hợp đồng thông minh:
Sử dụng ngôn ngữ lập trình chính là Solidity: đào sâu vào các khía cạnh
nâng cao như quản lý trạng thái, xử lý sự kiện, và tích hợp bảo mật
Tối ưu hóa và kiểm soát Gas: Tối ưu hóa chi phí gas trong các giao dịch, đặc biệt trong việc xử lý các hàm và giao dịch trong hợp đồng thông
minh
1.4.3.2 Front-end và tương tác người dùng
React và Next.js: Tận dụng sức mạnh của Reach và Next.js để xây
dựng giao diện người dùng động, tương tác và dễ sử dụng
Web3 Integration: Tích hợp Web3 để kết nối giao diện người dùng với
hợp đồng thông minh, cho phép tương tác trực tiếp với blockchain
1.4.3.3 Tích hợp công nghệ Chainlink:
Chainlink VRF: Sử dụng Chainlink Verifiable Random Function để
đảm bảo tính ngẫu nhiên và công bằng trong việc chọn người chiến thắng
Chainlink Keepers: Tích hợp Chainlink Keepers để tự động hóa việc
kiểm tra điều kiện và thực hiện các chức năng của hợp đồng thông minh
1.4.3.4 Kiểm thử và tối ưu hóa:
Kiểm thử tự động: sử dụng thư viện Chai Matcher, để thực hiện các bài
unit tests và staging test
Phân tích và đánh giá hiệu suất: Liên tục phân tích và đánh giá hiệu suất của hệ thống, bao gồm cả front-end và hợp đồng thông minh, để tìm ra
và giải quyết các vấn đề tiềm ẩn
1.4.3.5 Phạm vi đánh giá và phản hồi
Đánh giá hiệu suất hợp đồng thông minh: Kiểm tra và đánh giá hiệu
suất, tính minh bạch, và độ an toàn của hợp đồng thông minh
Trang 2626
Phản hồi người dùng: Thu thập và phân tích phản hồi từ người dùng
về giao diện và trải nghiệm sử dụng tổng thể
Kiểm thử: Thực hiện Unit Test và Staging Test để đảm bảo tính ổn
định và chính xác của ứng dụng
1.5 Mục tiêu đề tài
Xây dựng hợp đồng thông minh: Mục tiêu chính là phát triển một hợp đồng thông minh (Smart Contract) sử dụng Solidity, đóng vai trò là nền tảng cho một ứng dụng xổ số tự động, công bằng và minh bạch trên blockchain
Tích hợp Chainlink VRF và Keepers: Tích hợp Chainlink Verifiable Random Function (VRF) để đảm bảo tính ngẫu nhiên và công bằng trong việc chọn người chiến thắng, cùng với Chainlink Keepers để tự động hóa quy trình chọn người chiến thắng và xác định thời điểm thực hiện
Phát Triển Giao Diện Người Dùng Thân Thiện: Tạo ra một giao diện người dùng trực quan và dễ sử dụng, được xây dựng với React và Next.js, cho phép người dùng dễ dàng tham gia và theo dõi xổ số
Đảm Bảo Bảo Mật và Hiệu Suất: Tập trung vào việc bảo đảm an ninh và tối ưu hóa hiệu suất của hợp đồng thông minh, bao gồm việc quản lý chi phí gas và bảo vệ khỏi các nguy cơ tấn công
Kiểm Thử và Đánh Giá: Thực hiện các bài kiểm thử đơn vị và tích hợp sâu, sử dụng các công cụ như Chai Matchers, để đánh giá và đảm bảo tính chính xác, hiệu suất, và độ tin cậy của hợp đồng thông minh
Nghiên Cứu và Phát Triển Công Nghệ Blockchain: Mục tiêu rộng lớn hơn là tăng cường hiểu biết và kỹ năng về blockchain và các ứng dụng của nó, mở đường cho các nghiên cứu và phát triển tương lai trong lĩnh vực này
Trang 2727
Chương 2: KIẾN THỨC NỀN TÀNG 2.1 Blockchain [1]
Hình 2.1: Blockchain
Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách an toàn dựa trên hệ thống mã hóa vô cùng phức tạp, tương tự như cuốn sổ cái kế toán của một công ty, nơi mà tiền được giám sát chặt chẽ và ghi nhận mọi giao dịch trên mạng ngang hàng
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch Dữ liệu khi đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được Blockchain được thiết kế để chống lại việc gian lận, thay đổi của dữ liệu.Các khái niệm của blockchain:
Các đặc điểm của blockchain
Trang 2828
o Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ Blockchain biến mất khi không còn Internet trên toàn cầu
o Bất biến: dữ liệu trong Blockchain không thể sửa (có thể sửa nhưng sẽ để lại dấu vết) và sẽ lưu trữ mãi mãi
o Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt đối
o Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ khác và có thể thống kê toàn bộ lịch sử trên địa chỉ đó o Hợp đồng thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn
code if-this-then-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba
2.2 Ethereum [2]
Hình 2.2: Ethereum
Trang 2929
Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên công nghệ chuỗi khối (blockchain) có khả năng thực thi hợp đồng thông minh (smart contract) - tức là điều khoản được ghi trong hợp đồng sẽ được thực thi một cách tự động khi các điều kiện trước đó được thỏa mãn, không ai có thể can thiệp vào
Ethereum là một dự án Blockchain Layer 1 cho phép nhiều lập trình viên xây dựng ứng dụng phi tập trung (DApps) và tổ chức tự trị phi tập trung (DAOs) Trong đó:
Ứng dụng phi tập trung (DApps - Decentralized Application) là phần mềm được triển khai độc lập, không nằm trên một máy chủ duy nhất mà được lưu trữ một cách phân tán trên kho lưu trữ phi tập trung và có thể được viết bằng bất kỳ ngôn ngữ nào
Tổ chức tự trị phi tập trung (DAOs - Decentralized Autonomous
Organizations) là tổ chức được vận hành bởi các thành viên dựa trên một bộ quy tắc được mã hóa bằng code Tất cả thành viên đều có quyền biểu quyết để đưa ra quyết định quan trọng của DAOs
Hợp đồng thông minh (Smart contract):
Hợp đồng thông minh là điểm nổi bật nhất của Ethereum Công nghệ này cho phép người dùng số hóa điều kiện chi phối mối quan hệ, tương tác giữa các bên tham gia giao dịch
Chẳng hạn, người A quyết định vay từ người B 1.000 tether (USDT) chỉ khi B gửi ether trị giá 2.000 đô la làm tài sản thế chấp Bằng cách sử dụng hợp đồng thông minh, A có thể xác định một độc lập các điều kiện xác thực thỏa thuận này, thay vì tin tưởng vào một người trung gian môi giới
Nếu thực hiện đúng, hợp đồng thông minh sẽ tự động giải phóng 1.000 USDT cho B sau khi anh ấy gửi và khóa 2.000 USD làm tài sản thế chấp Ngoài ra, khi A hoàn trả khoản vay, hợp đồng thông minh sẽ giải phóng tài sản thế chấp và gửi lại khoản vay cho B