Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 62 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
62
Dung lượng
2,5 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN CUỐI KỲ Môn học: Đồ án – SE122.M21 ĐỀ TÀI: NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG ĐẤU GIÁ VẬT PHẨM ERC-721 VÀ ERC-1155 TRÊN NỀN TẢNG ETHEREUM Giảng viên hướng dẫn: ThS Nguyễn Tấn Toàn Sinh viên thực hiện: Nguyễn Đức Hướng 19521592 Ngô Dương Kha 19520117 TP HCM, 06/2022 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN CUỐI KỲ Môn học: Đồ án – SE122.M21 ĐỀ TÀI: NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG ĐẤU GIÁ VẬT PHẨM ERC-721 VÀ ERC-1155 TRÊN NỀN TẢNG ETHEREUM Giảng viên hướng dẫn: ThS Nguyễn Tấn Toàn Sinh viên thực hiện: Nguyễn Đức Hướng 19521592 Ngô Dương Kha 19520117 TP HCM, 06/2022 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ……………, ngày ……tháng …… năm 2022 Người nhận xét (Ký tên ghi rõ họ tên) LỜI MỞ ĐẦU NFT viết tắt cụm từ Non-fungible token, tạm dịch tài chứng đổi ngang, loại tài chứng dựa công nghệ blockchain thường đại diện cho tác phẩm, sản phẩm dễ bị chép hình ảnh, video, âm tệp kỹ thuật số Khơng giống với vật thể số tái sản xuất vơ hạn khác, NFT có chữ kí số riêng biệt, đánh dấu tính độc Chúng thường giao dịch mạng blockchain đồng tiền mã hoá đồng USD Mặc dù xem tài sản NFT, người tạo người mua có quyền sở hữu thức Nhờ tính chất độc đáo mà NFT ứng dụng đa dạng vào nhiều lĩnh vực, bật tác phẩm nghệ thuật (âm nhạc, hội họa, phim ảnh), trò chơi diện tử (vật phẩm game), thể thao (pack vật phẩm)… NFT giao dịch từ khoảng năm 2017 Nó bắt đầu thu hút ý từ đầu năm 2021 trước bùng nổ vào khoảng tháng 8/2021 Theo số liệu thống kê, khối lượng giao dịch thị trường NFT đạt 44,2 tỷ USD năm 2021, số năm 2020 khoảng 106,5 triệu USD 15,2 triệu USD năm 2019 Bên cạnh đó, Việt Nam lọt vào top nước có lượng người dùng NFT nhiều giới số 2,19 triệu người năm 2021 Cùng với phát triển thị trường giao dịch NFT, nhu cầu sử dụng sàn giao dịch chuyên dụng dành cho NFT quan tâm, nhiều sàn giao dịch lớn đời để phục vụ nhu cầu mua bán tài sản kỹ thuật số Nắm bắt nhu cầu này, em định tìm hiểu công nghệ blockchain để xây dựng hệ thống đấu giá vật phẩm NFT nên tảng Ethereum LỜI CẢM ƠN Đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến tập thể quý Thầy Cô Trường Đại học Công nghệ thông tin – Đại học Quốc gia TP.HCM quý Thầy Cô khoa Công nghệ phần mềm giúp cho em có kiến thức làm tảng để thực đề tài Đặc biệt, em xin gửi lời cảm ơn lòng biết ơn sâu sắc tới thầy Nguyễn Tấn Toàn Thầy trực tiếp hướng dẫn tận tình, sửa chữa đóng góp nhiều ý kiến q báu giúp em hồn thành tốt báo cáo mơn học Trong thời gian học đề tài, em vận dụng kiến thức tảng tích lũy đồng thời kết hợp với việc học hỏi nghiên cứu kiến thức Từ đó, em vận dụng tối đa thu thập để hồn thành báo cáo đồ án tốt Tuy nhiên, q trình thực hiện, em khơng tránh khỏi thiếu sót Chính vậy, em mong nhận góp ý từ phía Thầy nhằm hồn thiện kiến thức mà em học tập hành trang kiến thức giúp em phát triển tương lai Sau cùng, nhóm xin kính chúc Thầy thật dồi sức khỏe, niềm tin để tiếp tục thực sứ mệnh cao đẹp truyền đạt kiến thức cho hệ mai sau Xin chân thành cảm ơn q Thầy Cơ! Nhóm sinh viên thực MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN Chương Tổng quan 10 1.1 Tên đề tài 10 1.2 Giới thiệu đề tài 10 1.3 Khảo sát trạng 10 1.3.1 OpenSea 10 1.3.2 Rarible 12 1.3.3 NBA Top Shot 13 1.4 Mục tiêu hướng đến 14 Chương Cơ sở lý thuyết 15 2.1 Blockchain 15 2.1.1 Giới thiệu 15 2.1.2 Tính chất blockchain 16 2.1.3 Ứng dụng blockchain 17 2.2 Smart Contract 19 2.2.1 Giới thiệu 19 2.2.2 Cơ chế hoạt động Smart Contract 19 2.2.3 Tính chất Smart Contract 20 2.3 Nền tảng Ethereum 21 2.3.1 Giới thiệu 21 2.3.2 Các thành phần Ethereum 21 2.4 NFT – Non-Fungible Token 23 2.4.1 NFT gì? 23 2.4.2 Tính chất NFT 24 2.5 IPFS 24 2.5.1 Giới thiệu 24 2.5.2 Đặc điểm bật 25 2.6 Next.js 25 2.7 Solidity 26 Chương Mơ hình Use-case 27 3.1 Sơ đồ Use-case 27 3.2 Danh sách Actor 27 3.3 Danh sách Use-case 27 3.4 Đặc tả Use-case 28 3.4.1 Đặc tả Use-case “Đăng nhập ví” 28 3.4.2 Đặc tả Use-case “Quản lý tài khoản” 28 3.4.3 Đặc tả Use-case “Tìm kiếm, lọc NFT” 29 3.4.4 Đặc tả Use-case “Mua, bán, đấu giá NFT” 30 3.4.5 Đặc tả Use-case “Xem NFT” 31 3.4.6 Đặc tả Use-case “Xem sưu tập NFT” 31 3.4.7 Đặc tả Use-case “Tạo NFT” 32 3.4.8 Đặc tả Use-case “Tạo sưu tập NFT” 32 Chương Thiết kế liệu 34 4.1 Hệ thống Smart Contract 34 4.1.1 Struct “Bid” thuộc NFTMarketplace 34 4.1.2 Struct “AuctionInfo” thuộc NFTMarketplace 34 4.1.3 Struct “MarketItem” thuộc NFTMarketplace 35 4.1.4 Struct “NFTToken” thuộc UITToken721 35 4.2 Bảng liệu MongoDB 35 4.2.1 Schema “Bid” 35 4.2.2 Schema “AuctionInfo” 36 4.2.3 Schema “Nft” 36 4.2.4 Schema “User” 37 4.2.5 Schema “Collection” 37 Chương Thiết kế kiến trúc 39 5.1 Kiến trúc hệ thống 39 5.2 Kiến trúc Smart Contract 41 5.3 Công nghệ sử dụng 43 Chương Thiết kế giao diện 44 6.1 Sơ đồ liên kết hình 44 6.2 Danh sách hình 44 6.3 Mô tả chi tiết hình 45 6.3.1 Màn hình “Login” 45 6.3.2 Màn hình “Home” 46 6.3.3 Màn hình “Create NFT” 47 6.3.4 Màn hình “Create/Edit Collection” 47 6.3.5 Màn hình “Collections” 48 6.3.6 Màn hình “Collection Info” 49 6.3.7 Màn hình “NFT Info” 50 6.3.8 Màn hình “Sell/Create Auction NFT” 51 6.3.9 Màn hình “Buy NFT” 52 6.3.10 Màn hình “Update User” 53 6.3.11 Màn hình “My Collection” 54 6.3.12 Màn hình “All NFTs” 55 Chương Kết luận 57 7.1 Kết đạt 57 7.2 Đánh giá 57 7.2.1 Thuận lợi 57 7.2.2 Khó khăn 57 7.3 Hướng phát triển 58 Tài liệu tham khảo 59 DANH MỤC BẢNG Bảng 3-1 Bảng danh sách Actor 27 Bảng 3-2 Bảng danh sách Use-case 28 Bảng 3-3 Bảng đặc tả Use-case “Đăng nhập ví” 28 Bảng 3-4 Bảng đặc tả Use-case “Quản lý tài khoản” 29 Bảng 3-5 Bảng đặc tả Use-case “Tìm kiếm, lọc NFT” 30 Bảng 3-6 Bảng đặc tả Use-case “Mua, bán, đấu giá NFT” 30 Bảng 3-7 Bảng đặc tả Use-case “Xem NFT” 31 Bảng 3-8 Bảng đặc tả Use-case “Xem sưu tập NFT” 31 Bảng 3-9 Bảng đặc tả Use-case “Tạo NFT” 32 Bảng 3-10 Bảng đặc tả Use-case “Tạo sưu tập NFT” 33 Bảng 4-1 Bảng hệ thống Smart Contract 34 Bảng 4-2 Bảng liệu Struct “Bid” 34 Bảng 4-3 Bảng liệu Struct “AuctionInfo” 34 Bảng 4-4 Bảng liệu Struct “MarketItem” 35 Bảng 4-5 Bảng liệu Struct “NFTToken” 35 Bảng 4-6 Bảng Schema “Bid” 36 Bảng 4-7 Bảng Schema “AuctionInfo” 36 Bảng 4-8 Bảng Schema “Nft” 37 Bảng 4-9 Bảng Schema “User” 37 Bảng 4-10 Bảng Schema “Collection” 38 Bảng 5-1 Thành phần kiến trúc hệ thống 40 Bảng 5-2 Bảng liệt kê công nghệ sủ dụng 43 Bảng 6-1 Bảng danh sách hình 45 Bảng 6-2 Bảng thành phần hình “Login” 46 Edit Collection Màn hình hiển thị, chỉnh sửa Chỉnh sửa thơng tin sưu tập NFT Collections Màn hình hiển thị Xem danh sách sưu tập NFT NFTs Màn hình hiển thị Xem danh sách NFT Profile Màn hình hiển thị Xem thơng tin người dùng Edit Profile Màn hình hiển thị, chỉnh sửa Chình sửa thơng tin người dùng 10 NFT Info Màn hình hiển thị Xem chi tiết thơng tin NFT 11 Sell/Auction NFT Màn hình hiển thị, nhập liệu Đăng bán tạo đấu giá NFT 12 Buy NFT Màn hình hiển thị, nhập liệu Mua đấu giá NFT Bảng 6-1 Bảng danh sách hình 6.3 Mơ tả chi tiết hình 6.3.1 Màn hình “Login” (1) (2) (3) Ảnh 6-2 Màn hình “Login” 45 STT Tên Ý nghĩa Kiểu metamaskBtn Button Đăng nhập thông qua ví Metamask coinbaseBtn Button Đăng nhập thơng qua ví Coinbase walletConnectBtn Button Đăng nhập thơng qua ví Wallet Connect Bảng 6-2 Bảng thành phần hình “Login” 6.3.2 Màn hình “Home” (1) (4) (2) (3) Ảnh 6-3 Màn hình “Home” STT Tên Ý nghĩa Kiểu logoImg Image Hình ảnh logo trang web exploreBtn Button Chuyển đến trang xem nft collection createBtn Button Chuyển đến hình tạo nft exploreNav Button Tương tự (2) createNav Button Tương tự (3) avatarBtn Button Chuyển đến hình thơng tin user walletBtn Button Mở drawer hiển thị thơng tin ví Bảng 6-3 Bảng thành phần hình “Home” 46 (5) (6) (7) 6.3.3 Màn hình “Create NFT” (1) (2) (3) (4) (5) Ảnh 6-4 Màn hình “Create NFT” STT Tên Ý nghĩa Kiểu nftImg Image Hình ảnh NFT nameText Textfield Tên gọi NFT descText Textfield Mô tả NFT collectionCb ComboBox Lựa chọn sưu tập NFT createBtn Button Hoàn tất tạo NFT Bảng 6-4 Bảng thành phần hình “Create NFT” 6.3.4 Màn hình “Create/Edit Collection” 47 (1) (2) (3) (4) (5) Ảnh 6-5 Màn hình “Create Collection” STT Tên Ý nghĩa Kiểu cltImg Image Hình ảnh sưu tập bannerImg Image Ảnh bìa sưu tập nameText Textfield Tên sưu tập descText Textfield Mô tả sưu tập typeCb ComboBox Lựa chọn loại token cho sưu tập createBtn Button Hoàn tất tạo sưu tập Bảng 6-5 Bảng thành phần hình “Create/Edit Collection” 6.3.5 Màn hình “Collections” 48 (1) Ảnh 6-6 Màn hình “Collections” STT Tên cltCtn Ý nghĩa Kiểu Container Hiển thị thông tin sưu tập, ấn vào chuyển sang trang chi tiết sưu tập Bảng 6-6 Bảng thành phần hình “Collections” 6.3.6 Màn hình “Collection Info” 49 (1) (2) (3) (4) Ảnh 6-7 Màn hình “Collection Info” STT Tên Ý nghĩa Kiểu cltImg Image Hình ảnh sưu tập bannerImg Image Ảnh bìa sưu tập nameText Textfield Tên sưu tập nftCtn Container Hiển thị thông tin nft, ấn vào chuyển sang trang chi tiết nft Bảng 6-7 Bảng thành phần hình “Collection Info” 6.3.7 Màn hình “NFT Info” 50 (5) (1) (2) (3) (4) Ảnh 6-8 Màn hình “NFT Info” STT Tên Ý nghĩa Kiểu descLb Label Hiển thị mô tả NFT idLb Label Hiển thị id NFT typeLb Label Hiển thị chuẩn token NFT networkLb Label Hiển thị mạng blockchain chứa NFT sellBtn Button Chuyển sang trang mua, đấu giá NFT Bảng 6-8 Bảng thành phần hình “NFT Info” 6.3.8 Màn hình “Sell/Create Auction NFT” 51 (1) (2) (3) (4) (5) (6) (7) Ảnh 6-9 Màn hình “Sell/Create Auction NFT” STT Tên Ý nghĩa Kiểu sellBtn Button Chuyển bán NFT auctionBtn Button Chuyển sang đấu giá NFT typeCb Combobox Chọn hình thức đấu gí priceText TextField Nhập giá khởi điểm timeDp Datepicker Chọn ngày bắt đầu kết thúc listingPriceLb Label Giá đăng đấu giá NFT completeBtn Hoàn thành đấu giá NFT Button Bảng 6-9 Bảng thành phần hình “Sell/Create Auction NFT” 6.3.9 Màn hình “Buy NFT” 52 (1) (2) Ảnh 6-10 Màn hình “Buy NFT” STT Tên Ý nghĩa Kiểu priceLb Label Hiển thị giá NFT buyBtn Button Xác nhận mua NFT Bảng 6-10 Bảng thành phần hình “Buy NFT” 6.3.10 Màn hình “Update User” 53 (1) ( ( (5) (2) ( (3) ( ( (6) (4) ( (7) Ảnh 6-11 Màn hình “Update User” STT Tên Ý nghĩa Kiểu nameText TextField Nhập tên user bioText TextField Nhập bio user emailText TextField Nhập địa email User walletText TextField Hiển thị địa User profileImage FileInput Thêm hình ảnh cho user bannerImage FileInput Thêm hình banner cho trang user saveButton Button Nút lưu thông tin cập nhật User Bảng 6-11 Bảng thành phần hình “Update User” 6.3.11 Màn hình “My Collection” 54 (1) ( (2) Ảnh 6-12 Màn hình “My Collection” STT Tên Ý nghĩa Kiểu createBtn Button Tạo collection collectionList List Danh sách collection User Bảng 6-12 Bảng thành phần hình “My Collection” 6.3.12 Màn hình “All NFTs” 55 (1) ( ( ( (5) (2) (6) ( ( (7) (3) ( (4) Ảnh 6-13 Màn hình “All NFTs” STT Ý nghĩa Tên Kiểu searchText TextField Search NFT showBtn Button Ẩn / Filter buyFilterBtn Button Filter NFT bán auctionFilterBtn Button Filter NFT đấu giá SortCb ComboBox Hiển thị list thuộc tính để sort GridBtn Button Hiển thị lưới nhỏ / to danh sách NFT NFTList List Danh sách NFTs Bảng 6-13 Bảng thành phần hình “All NFTs” 56 Chương KẾT LUẬN 7.1 Kết đạt Nhóm nghiên cứu áp dụng thành công công nghệ Blockchain để xây dựng thành công sàn giao dịch NFT vật phẩm ERC-721 ERC-1155 theo hai phương thức mua trực tiếp lẫn đấu giá Nghiên cứu xây dựng Smart Conrtact Hardhat thư viện OpenZeppelin kết hợp sử dụng Next.js, Ether.js xây dựng giao diện người dùng Triển khai thành công API tương tác với sở liệu MongoDB đồng với liệu smart contract giúp việc truy xuất nhanh linh hoạt Kết hợp với thuật toán lưu trữ IPFS (thuật toán lưu trữ phân tán) giúp liệu lưu trữ vĩnh viễn cách công khai, minh bạch 7.2 Đánh giá 7.2.1 Thuận lợi Giảng viên hướng dẫn tận tình hỗ trợ, đưa định hướng giúp nhóm thực đề tài Có sẵn tảng kiến thức để xây dựng ứng dụng sở hạ tầng website Do blockchain nói chung sàn giao dịch NFT nói riêng xu hướng toàn cầu nên tài liệu công nghệ chia sẻ rộng rãi Vận dụng kiến thức, quy trình phát triển học giúp việc xây dựng phần mềm trở nên có hệ thống chặt chẽ 7.2.2 Khó khăn Khoảng thời gian đầu tiếp cận blockchain kiến thức mơ hồ khó hiểu Tốn nhiều thời gian học ngôn ngữ Solidity để viết Smart Contract cách thức deploy Smart Contract lên mạng Rinkeby Tìm hiểu cách thức hoạt động sàn giao dịch NFT, đặc biệt cơng nghệ blockchain NFT cịn giới nên nhiều thời gian để tìm hiểu xây dựng hệ thống 57 7.3 Hướng phát triển Hồn thiện đầy đủ tính tại, nâng cấp giao diện thân thiện đại hơn, giảm bớt thao tác không cần thiết để tăng trải nghiệm người dùng Bổ sung thêm hình thức đấu giá khác, liên kết thêm nhiều ví, liên kết đến mạng xã hội, quản lý blogs người dùng… Tái cấu trúc nâng cao tính bảo mật Smart Contract, hỗ trợ phát hành thêm chuẩn token khác 58 TÀI LIỆU THAM KHẢO [1] Ethereum Development Documentation Available: https://ethereum.org/en/developers/docs/ [2] Ethers.js Documentation Available: https://docs.ethers.io/v5/ [3] Solidity Documentation Available: https://docs.soliditylang.org/en/v0.8.15/ [4] Hardhat – Ethereum development environment Available: https://hardhat.org/getting-started [5] OpenZeppelin Documentation Available: https://docs.openzeppelin.com/contracts/4.x/ [6] NextAuth.js Documentation Available: https://next-auth.js.org/getting-started/example [7] Mongoose.js Documentation Available: https://mongoosejs.com/docs/api.html 59 ... CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN CUỐI KỲ Môn học: Đồ án – SE122.M21 ĐỀ TÀI: NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG ĐẤU GIÁ VẬT PHẨM ERC- 721 VÀ ERC- 1155 TRÊN NỀN TẢNG ETHEREUM. .. 1.1 Tên đề tài ? ?Nghiên cứu xây dựng hệ thống đấu giá vật phẩm ERC- 721 ERC- 1155 nảng Ethereum? ?? 1.2 Giới thiệu đề tài Thị trường NFT ngày trở nên hấp dẫn với phát triển công nghệ phổ biến khái... “Mua, bán, đấu giá NFT” Tên chức Tóm tắt Mua, bán, đấu giá NFT Người dùng bán tạo đấu giá NFT thuộc quyền sở hữu Người dùng mua đấu giá NFT đăng sàn Người dùng điền giá bán, giá bắt đầu đấu giá