Tải bản đầy đủ (.pdf) (59 trang)

đồ án 2 tìm hiểu solidity và xây dựng ứng dụng lottery

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.53 MB, 59 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>BÁO CÁO MÔN HỌC </b>

<b>Giảng viên hướng dẫn: Ths. Trần Anh Dũng </b>

Sinh viên thực hiện:

<b>TP. HỒ CHÍ MINH, 2023 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM </b>

<b>BÁO CÁO MÔN HỌC </b>

<b>Giảng viên hướng dẫn: Ths. Trần Anh Dũng </b>

Sinh viên thực hiện:

<b>TP. HỒ CHÍ MINH, 2023 </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

Em đã 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 hồn thành đồ án mơn học này.

Trong q 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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

1.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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

1.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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

3.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

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

4.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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Hì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: Tồn bộ các kiểm thử Unit Tests thành công... 53

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

10

<b>DANH MỤC BẢNG </b>

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

11

<b>TÓM TẮT ĐỒ ÁN </b>

Đồ á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 q 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.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

13

<b>ĐỀ CƯƠNG CHI TIẾT </b>

<b>Tên đồ án: </b>

Tìm hiểu Solidity và xây dựng ứng dụng Lottery

<b>Thông tin người thực hiện và hướng dẫn: </b>

Họ và tên sinh viên 1: Đặng Anh Khoa Ngành: Kỹ thuật phần mềm

MSSV:15520367

Email: Giảng viên hướng dẫn: THS. Trần Anh Dũng Email:

<b>Tổng quan đề tài: </b>

<b>1. Lý do chọn đề tài: </b>

Ứ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ị

<b>trong việc phát triển ứng dụng. </b>

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

<b>tài chính phi tập trung. </b>

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. Ngồ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

<b>công cụ phát triển như Hardhat. </b>

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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

14

đỏ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

<b>Solidity cho đến việc sử dụng các dịch vụ của Chainlink như VRF và Keeper. </b>

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ề

<b>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. </b>

<b>2. Đối tượng nghiên cứu Sinh Viên và Học Viên: </b>

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.

<b>Giảng Viên và Người Hướng Dẫn: </b>

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.

<b>Nhà Phát Triển và Quản Trị Website: </b>

Đố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ọ.

<b>Người Dùng Kết Quả (End Users): </b>

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ả.

<b>3. Phạm vi nghiên cứu Phạm vi chức năng: </b>

<b>Chức năng cơ bản: </b>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

15

<b>Tham gia xổ số: người dùng có thể tham gia xổ số bằng cách trả phí tham gia </b>

<b>(ETH) qua giao diện người dùng </b>

<b>Tự động chọn người chiến thắng: Sử dụng Chainlink VRF (Verifiable </b>

Random Function) để chọn ngẫu nhiên người chiến thắng một cách công bằng và

<b>minh bạch. </b>

<b>Thanh toán và ghi nhận người chiến thắng: Tự động chuyển toàn bộ số tiền </b>

<b>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: </b>

<b>Giao diện đáp ứng Real-time: Phát triển giao diện đáp ứng real-time, cho </b>

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

<b>chọn. </b>

<b>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 </b>

<b>an tồn cho các giao dịch và quản lý ví người dùng </b>

<b>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 </b>

<b>minh, đảm bảo hiệu suát cao và chi phí giao dịch thấp. </b>

<b>Hỗ trợ nhiều mạng Blockchain: mở rộng ứng dụng để hỗ trợ nhiều mạng </b>

<b>blockchain khác nhau, tăng tính linh hoạt và tiếp cận rộng rãi hơn. </b>

<b>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ữ </b>

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

<b>ưu hóa trải nghiệp người dùng. </b>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

16

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

<b>cao như quản lý trạng thái, xử lý sự kiện, và tích hợp bảo mật. </b>

Tối ưu hóa và kiểm sốt Gas: Tối ưu hóa chi phí gas trong các giao dịch, đặc

<b>biệt trong việc xử lý các hàm và giao dịch trong hợp đồng thông minh. </b>

<b>Front-end và tương tác người dùng </b>

React và Next.js: Tận dụng sức mạnh của Reach và Next.js để xây dựng giao

<b>diện người dùng động, tương tác và dễ sử dụng. </b>

Web3 Integration: Tích hợp Web3 để kết nối giao diện người dùng với hợp

<b>đồng thông minh, cho phép tương tác trực tiếp với blockchain </b>

<b>Tích hợp cơng nghệ Chainlink: </b>

Chainlink VRF: Sử dụng Chainlink Verifiable Random Function để đảm bảo

<b>tính ngẫu nhiên và cơng bằng trong việc chọn người chiến thắng. </b>

Chainlink Keepers: Tích hợp Chainlink Keepers để tự động hóa việc kiểm tra

<b>điều kiện và thực hiện các chức năng của hợp đồng thông minh. </b>

<b>Kiểm thử và tối ưu hóa: </b>

Kiểm thử tự động: sử dụng thư viện Chai Matcher, để thực hiện các bài unit

<b>tests và staging test. </b>

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

<b>vấn đề tiềm ẩn. </b>

<b>Phạm vi đánh giá và phản hồi </b>

<b>Đánh giá hiệu suất hợp đồng thông minh: Kiểm tra và đánh giá hiệu suất, </b>

<b>tính minh bạch, và độ an tồn của hợp đồng thơng minh. </b>

<b>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 </b>

<b>diện và trải nghiệm sử dụng tổng thể. </b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

17

<b>Kiểm thử: Thực hiện Unit Test và Staging Test để đảm bảo tính ổn định và </b>

<b>chính xác của ứng dụng </b>

<b>4. Phương pháp nghiên cứu: </b>

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

<b>5. Mục tiêu đề tài </b>

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.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

18

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.

<b>Nội dung thực hiện: </b>

<b>1. Xác định mục tiêu và phạm vi của đồ án: </b>

Tìm hiểu về công nghệ và đưa ra mục tiêu rõ ràng.

<b>2. Nghiên cứu công nghệ và chuẩn bị học tập: </b>

Nắm vững kiến thức về blockchain, Ethereum, Solidity, và các cơng nghệ liên

<b>3. Phân tích và thiết kế hệ thống: </b>

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ế

<b>tham gia, chọn người chiến thắng và xử lý thanh toán. </b>

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

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>4. Phát triển giao diện người dùng: </b>

<b>Thiết kế UI/UX giao diện người dùng thân thiện và dễ sử dụng </b>

Phát triển giao diện người dùng với React và Next.js, tích hợp với Web3 để

<b>tương tác với hợp đồng thơng minh. </b>

<b>5. Tích hợp hệ thống: </b>

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

<b>thông minh, đảm bảo tương tác mượt mà. </b>

<b>6. Kiểm thử và sửa lỗi: </b>

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.

<b>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ử. </b>

<b>7. Tối ưu hóa và bảo mật: </b>

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.

<b>8. Triển khai và đánh giá: </b>

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.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

20

<b>9. Quản lý, duy trì và bảo trì: </b>

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.

<b>10. Chia sẽ và kết luận: </b>

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.

<b>11. Chuẩn bị tài liệu và báo cáo: </b>

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ỳ.

<b>Kế hoạch thực hiện: </b>

<b>Thời gian </b>

<b>Nội dung thực hiện </b>

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.

<b>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 </b>

<b> </b>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

21

<b>NỘI DUNG ĐỒ ÁN </b>

<b>Chương 1: MỞ ĐẦU 1.1. Lý do chọn đề tài </b>

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à

<b>thú vị trong việc phát triển ứng dụng. </b>

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

<b>tài chính phi tập trung. </b>

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. Ngồ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ề

<b>các công cụ phát triển như Hardhat. </b>

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

<b>Solidity cho đến việc sử dụng các dịch vụ của Chainlink như VRF và Keeper. </b>

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.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

22

<b>1.2. Mục đích nghiên cứu </b>

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ế.

<b>1.2.2. Một ứng dụng hệ thống xổ số độc đáo: </b>

- 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

<b>1.2.3. Định hình tương lai của blockchain </b>

- 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

<b>1.3. Đối tượng nghiên cứu 1.3.1. Sinh Viên và Học Viên: </b>

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.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

23

<b>1.3.2. Giảng Viên và Người Hướng Dẫn: </b>

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.

<b>1.3.3. Nhà Phát Triển và Quản Trị Website: </b>

Đố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ọ.

<b>1.3.4. Người Dùng Kết Quả (End Users): </b>

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ả.

<b>1.4. Phạm vi nghiên cứu 1.4.1. Công nghệ nghiên cứu </b>

<b>1.4.1.1. Back-end: </b>

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

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

24

<b>1.4.1.2. Front-end: </b>

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.

<b>1.4.2. Phạm vi chức năng: 1.4.2.1. Chức năng cơ bản: </b>

<b>Tham gia xổ số: người dùng có thể tham gia xổ số bằng cách trả phí </b>

<b>tham gia (ETH) qua giao diện người dùng </b>

<b>Tự động chọn người chiến thắng: Sử dụng Chainlink VRF (Verifiable </b>

Random Function) để chọn ngẫu nhiên người chiến thắng một cách công

<b>bằng và minh bạch. </b>

<b>Thanh toán và ghi nhận người chiến thắng: Tự động chuyển toàn bộ </b>

<b>số tiền trong hợp đồng cho người chiến thắng và ghi nhận trong hệ thống. </b>

<b>1.4.2.2. Chức năng nâng cao: </b>

<b>Giao diện đáp ứng Real-time: Phát triển giao diện đáp ứng real-time, </b>

cho phép người dùng xem kết quả xổ số ngay lập tức khi có người chiến

<b>thắng được chọn. </b>

<b>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 </b>

thông minh, đảm bảo hiệu suát cao và chi phí giao dịch thấp.

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

25

<b>1.4.3. Phạm vi kỹ thuật </b>

<b>1.4.3.1. Phát triển hợp đồng thơng minh: </b>

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

<b>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. </b>

Tối ưu hóa và kiểm số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

<b>minh. </b>

<b>1.4.3.2. Front-end và tương tác người dùng </b>

React và Next.js: Tận dụng sức mạnh của Reach và Next.js để xây

<b>dựng giao diện người dùng động, tương tác và dễ sử dụng. </b>

Web3 Integration: Tích hợp Web3 để kết nối giao diện người dùng với

<b>hợp đồng thông minh, cho phép tương tác trực tiếp với blockchain </b>

<b>1.4.3.3. Tích hợp cơng nghệ Chainlink: </b>

Chainlink VRF: Sử dụng Chainlink Verifiable Random Function để

<b>đả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. </b>

Chainlink Keepers: Tích hợp Chainlink Keepers để tự động hóa việc

<b>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. </b>

<b>1.4.3.4. Kiểm thử và tối ưu hóa: </b>

Kiểm thử tự động: sử dụng thư viện Chai Matcher, để thực hiện các bài

<b>unit tests và staging test. </b>

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

<b>và giải quyết các vấn đề tiềm ẩn. </b>

<b>1.4.3.5. Phạm vi đánh giá và phản hồi </b>

<b>Đánh giá hiệu suất hợp đồng thông minh: Kiểm tra và đánh giá hiệu </b>

<b>suất, tính minh bạch, và độ an tồn của hợp đồng thơng minh. </b>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

26

<b>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 </b>

<b>về giao diện và trải nghiệm sử dụng tổng thể. </b>

<b>Kiểm thử: Thực hiện Unit Test và Staging Test để đảm bảo tính ổn </b>

<b>định và chính xác của ứng dụng </b>

<b>1.5. Mục tiêu đề tài </b>

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.

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

27

<b>Chương 2: KIẾN THỨC NỀN TÀNG 2.1. Blockchain [1] </b>

<i><small>Hình 2.1: Blockchain </small></i>

Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách an tồ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ế tố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

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

28

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 tồ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 tồ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ê tồ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.

<b>2.2. Ethereum [2] </b>

<i><b><small>Hình 2.2: Ethereum </small></b></i>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

29

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.

</div>

×