Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ chuỗi khối (Blockchain) phát triển mạnh mẽ, NFT (Non-fungible token - mã thông báo không thể thay thế) đã trở thành một loại tài sản số quan trọng của nền kinh tế tiền mã hóa. Khác với các đồng tiền mã hóa thông thường có thể thay thế lẫn nhau (fungible), NFT đại diện cho các tài sản số có tính độc bản, có mã định danh duy nhất và siêu dữ liệu (metadata) không thể trùng lặp, thường gắn liền với bằng chứng quyền sở hữu các sản phẩm số trong thế giới thực như tác phẩm nghệ thuật, âm nhạc, vật phẩm trò chơi (gaming), metaverse và đồ sưu tầm (collectibles). Sự bùng nổ của tài sản số này đặt ra nhu cầu cấp thiết về việc xây dựng các nền tảng trung gian phi tập trung—gọi là NFT Marketplace—nhằm hỗ trợ người dùng tạo lập (minting), niêm yết, trao đổi và quản lý quyền sở hữu các NFT một cách minh bạch, an toàn và tối ưu chi phí.

Đề tài "Xây dựng Marketplace NFT" được thực hiện dưới dạng báo cáo đồ án cuối kỳ của học phần Các công nghệ nền (mã lớp: IE102.M21 - Nhóm 4), thuộc Khoa Khoa học và Kỹ thuật Thông tin, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh (hoàn thành vào tháng 05/2022). Đề tài do nhóm sinh viên gồm 7 thành viên thực hiện: Bùi Quang Huy (MSSV: 18520063), Nguyễn Ngọc Thúy Vy (MSSV: 18521682), Nguyễn Phước Duy (MSSV: 18521692), Phan Đặng Tiến Dũng (MSSV: 19521403), Nguyễn Thị Huệ (MSSV: 19521558), Võ Thị Như Lài (MSSV: 19521733), và Nguyễn Trúc Lân (MSSV: 19521746), dưới sự hướng dẫn chuyên môn của ThS. Võ Tấn Khoa.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Nắm vững các kiến thức cơ bản về hợp đồng thông minh (Smart Contract), quy trình lập trình, biên dịch và triển khai (deploy) hợp đồng thông minh trên nền tảng chuỗi khối.
  2. Xây dựng một sàn giao dịch NFT phi tập trung (DApp) hoàn chỉnh với các chức năng cốt lõi: cửa sổ hiển thị và mua sắm NFT, tích hợp ví điện tử, cơ chế xác thực tài khoản qua ví, thanh tìm kiếm sản phẩm và các trang quản lý tài sản số cá nhân.

Phạm vi và đối tượng nghiên cứu của đồ án được xác định rõ:

  • Đối tượng nghiên cứu: Quy trình phát triển ứng dụng phi tập trung (DApp), chuẩn mã thông báo ERC-721, giải pháp mở rộng Layer 2 Polygon (MATIC), hệ thống lưu trữ phân tán IPFS và các thư viện giao tiếp Web3 phía client.
  • Phạm vi người dùng: Phân chia thành hai nhóm đối tượng:
    • Khách viếng thăm (Guest): Người dùng chưa kết nối ví, có thể xem danh sách sản phẩm, xem chi tiết NFT, xem tin tức và thực hiện đăng ký/liên kết với ví MetaMask.
    • Người dùng đã xác thực (User): Người dùng đã kết nối ví MetaMask thành công, có quyền tạo (mint) NFT mới, đăng bán, đặt mua các NFT có trên sàn và quản lý danh mục sản phẩm do mình sở hữu hoặc đã niêm yết.

Cơ sở lý thuyết và phương pháp

Đồ án áp dụng phương pháp thiết kế và phát triển hệ thống phần mềm hướng ứng dụng phi tập trung (Decentralized Application - DApp), kết hợp giữa kiến trúc on-chain (hợp đồng thông minh trên chuỗi khối) và kiến trúc off-chain (lưu trữ phân tán và giao diện người dùng Web3). Nguồn dữ liệu của hệ thống được quản lý thông qua hợp đồng thông minh Solidity và hệ thống tệp phân tán IPFS.

Hệ thống cơ sở lý thuyết và các công nghệ nền tảng được đồ án sử dụng bao gồm:

  • Ngôn ngữ lập trình Solidity: Ngôn ngữ hướng hợp đồng (contract-oriented) chạy trên Ethereum Virtual Machine (EVM), được sử dụng để viết logic tạo token, quy định mức phí niêm yết và xử lý các giao dịch chuyển nhượng tài sản số.
  • Nền tảng chuỗi khối Polygon (MATIC): Giải pháp mở rộng Layer 2 dạng sidechain tương thích hoàn toàn với EVM. Polygon giải quyết hạn chế về tốc độ và phí giao dịch cao của Ethereum Layer 1, cung cấp thông lượng xử lý lên tới 10.000 giao dịch mỗi giây (TPS) trên mỗi sidechain trên môi trường thử nghiệm. Về mặt lý thuyết, kiến trúc của Polygon bao gồm 4 lớp liên kết:
    1. Execution layer: Thực thi các giao dịch thông qua máy ảo và logic chuyển đổi trạng thái.
    2. Polygon networks layer: Mạng lưới các chuỗi khối có chủ quyền quản lý đồng thuận nội bộ và tạo khối.
    3. Security layer: Lớp quản lý trình xác thực và kiểm tra định kỳ tính hợp lệ của chuỗi Polygon.
    4. Ethereum layer: Tập hợp các smart contract trên Ethereum đóng vai trò chốt chặn điểm kiểm tra (checkpoints), staking và giải quyết tranh chấp.
  • Tiêu chuẩn mã thông báo ERC-721: Chuẩn kỹ thuật quy định các hàm và sự kiện chuẩn mực cho mã thông báo không thể thay thế trên EVM. Đồ án sử dụng thư viện hợp đồng mẫu của OpenZeppelin (ERC721URIStorage) để lưu trữ tokenURI tương ứng với từng NFT.
  • Hệ thống lưu trữ phân tán IPFS (InterPlanetary File System): Hệ thống tệp phân tán ngang hàng (P2P) hoạt động theo cơ chế định danh tệp bằng mã băm nội dung (content hash). Việc sử dụng IPFS giúp giảm thiểu chi phí và giải phóng tải lưu trữ dung lượng lớn (hình ảnh và metadata JSON) khỏi chuỗi khối.
  • Môi trường phát triển Hardhat: Môi trường tích hợp phục vụ việc biên dịch, chạy mạng giả lập local (local network với chainId 1337), debug thông qua console.log trực tiếp trong Solidity, và triển khai hợp đồng thông minh sang mạng thử nghiệm Mumbai Testnet.
  • Thư viện Web3 Client (Ethers.js, Web3Modal, useDApp): Ethers.js đóng vai trò tương tác giữa ứng dụng giao diện và mạng chuỗi khối thông qua các provider (JSON-RPC) và signer. Web3Modal và useDApp quản lý luồng kết nối ví người dùng (MetaMask).
  • Framework giao diện Next.js và Tailwind CSS: Next.js hỗ trợ kết hợp giữa Server-Side Rendering (SSR) và Static Site Generation (SSG), giúp tối ưu hóa tốc độ tải trang thông qua cơ chế phân tách mã tự động (code splitting). Tailwind CSS được dùng để thiết kế giao diện dạng utility-first.
Tiêu chí so sánh Server-Side Rendering (SSR) Client-Side Rendering (CSR)
Cơ chế trả lời Server trả về mã HTML hoàn chỉnh kèm theo liên kết tới tệp JS Server trả về tệp HTML gần như rỗng và tệp JS
Hiển thị nội dung Nội dung hiển thị ngay lập tức khi trình duyệt tải xong mã HTML Phải chờ trình duyệt tải JS, dựng Virtual DOM và gắn sự kiện
Hiệu quả SEO Tối ưu tốt cho việc lập chỉ mục tìm kiếm Khó khăn hơn trong việc thu thập dữ liệu tự động
Đặc điểm Môi trường Hardhat Môi trường Truffle
Tài liệu & Cấu trúc Rõ ràng, cấu trúc logic, dễ tiếp cận cho người mới Đầy đủ, nhiều nguồn cộng đồng lâu năm
Khả năng Debug Hỗ trợ in nhật ký trực tiếp qua console.log trong Solidity Debug khó khăn hơn, không hỗ trợ log trực tiếp
Hệ sinh thái Plugin Hệ thống plugin phong phú, hỗ trợ mở rộng tùy biến cao Sử dụng hệ thống Truffle Boxes, cấu hình phức tạp hơn
Khả năng tương tác Tương tác linh hoạt trực tiếp với smart contract khi kiểm thử Thử nghiệm có phần hạn chế khi tương tác trực tiếp

Thiết kế và triển khai

Kiến trúc tổng thể của hệ thống

Hệ thống sàn giao dịch NFT Infinity Marketplace được tổ chức thành các thành phần kiến trúc phối hợp chặt chẽ:

  1. Trang web ứng dụng (Frontend Web App): Ứng dụng xây dựng trên nền tảng Next.js, hiển thị giao diện mua sắm, tạo NFT và quản lý tài sản.
  2. Ví điện tử MetaMask: Đóng vai trò lớp ký quỹ và xác thực danh tính phân tán của người dùng.
  3. Mạng lưu trữ IPFS: Lưu trữ tệp phương tiện (hình ảnh) và siêu dữ liệu (metadata JSON gồm tên, mô tả, đường dẫn hình ảnh).
  4. Hợp đồng thông minh (NFTMarketplace.sol): Đóng vai trò lõi xử lý nghiệp vụ, kế thừa từ ERC721URIStorage của OpenZeppelin, cấp phát ID định danh duy nhất (tokenId), quản lý trạng thái niêm yết và trung gian chuyển đổi quyền sở hữu cùng tiền tệ.
  5. Mạng chuỗi khối (Hardhat Local / Polygon Mumbai Testnet): Cơ sở dữ liệu phân tán lưu trữ bất biến các giao dịch chuyển giao tài sản và số dư tài khoản.

Quy trình nghiệp vụ cốt lõi

Quy trình tạo và đưa một NFT lên sàn được triển khai qua 4 bước:

  1. Người dùng nhập thông tin NFT (tên, mô tả, giá bán) và chọn tệp hình ảnh từ máy tính.
  2. Hình ảnh được tải lên nút IPFS thông qua ipfs-http-client; hệ thống nhận lại mã hash đường dẫn. Sau đó, tệp metadata JSON hoàn chỉnh tiếp tục được gửi lên IPFS để lấy tokenURI.
  3. Hàm createToken trong hợp đồng thông minh được kích hoạt: hệ thống thực hiện đúc (mint) token mới, gán tokenURI tương ứng cho tokenId mới tạo.
  4. Token được chuyển quyền quản lý tạm thời cho địa chỉ của hợp đồng thông minh (address(this)), thông tin niêm yết được lưu vào cấu trúc dữ liệu MarketItem, và sự kiện MarketItemCreated được phát ra trên chuỗi khối. Người bán phải trả một mức phí niêm yết cố định là 0.025 ether.

Cấu hình môi trường và phát triển hợp đồng thông minh

Hệ thống được khởi tạo với cấu trúc dự án Next.js kết hợp các phụ thuộc chính: ethers, hardhat, @nomiclabs/hardhat-waffle, ethereum-waffle, chai, @nomiclabs/hardhat-ethers, web3modal, @openzeppelin/contracts, ipfs-http-client, axios, @chakra-ui/react và @usedapp/core.

Cấu hình Hardhat trong tệp hardhat.config.js được thiết lập với trình biên dịch Solidity phiên bản ^0.8.4 (bật optimizer với 200 lượt chạy), mạng mặc định hardhat (chainId 1337) và sẵn sàng tích hợp mạng kiểm thử Polygon Mumbai.

Cấu trúc dữ liệu chính trong hợp đồng thông minh NFTMarketplace.sol:

struct MarketItem {
    uint256 tokenId;
    address payable seller;
    address payable owner;
    uint256 price;
    bool sold;
}

Hợp đồng định nghĩa các hàm chức năng chính:

  • updateListingPrice(uint _listingPrice): Cho phép chủ sở hữu hợp đồng cập nhật mức phí niêm yết sàn.
  • getListingPrice(): Trả về mức phí niêm yết hiện tại (0.025 ether).
  • createToken(string memory tokenURI, uint256 price): Thực hiện mint NFT và chuyển tới hàm nội bộ createMarketItem.
  • createMarketItem(uint256 tokenId, uint256 price): Chuyển quyền giữ token cho hợp đồng, ghi nhận trạng thái niêm yết và thu phí listingPrice.
  • createMarketSale(uint256 tokenId): Tiếp nhận tiền thanh toán từ người mua, chuyển giá trị mua cho người bán, chuyển phí niêm yết cho chủ sàn, và bàn giao token cho người mua.
  • resellToken(uint256 tokenId, uint256 price): Cho phép chủ sở hữu hiện tại bán lại NFT bằng cách gửi lại token cho hợp đồng kèm theo phí niêm yết.
  • fetchMarketItems(): Trả về danh sách tất cả các NFT đang được niêm yết công khai trên sàn chưa có người mua.
  • fetchMyNFTs(): Trả về danh sách các NFT thuộc quyền sở hữu của địa chỉ ví đang gọi hàm.
  • fetchItemsListed(): Trả về danh sách các NFT do địa chỉ ví đang gọi hàm tự tạo và niêm yết bán.

Xây dựng các trang chức năng giao diện

Ứng dụng Infinity Marketplace bao gồm các màn hình chức năng được phân trang bằng hệ thống tệp định tuyến của Next.js:

  1. Trang chủ (pages/index.js): Khởi tạo JsonRpcProvider để truy vấn danh sách NFT chưa bán qua hàm fetchMarketItems(), sau đó dùng axios lấy metadata từ IPFS để hiển thị danh sách thẻ sản phẩm (ảnh, tên, mô tả, giá tính bằng ETH). Trang cung cấp chức năng tìm kiếm trực tiếp và các nút hành động "Buy" (kết nối ví để thực hiện mua qua createMarketSale) và "Detail" (chuyển sang trang chi tiết).
  2. Trang đăng bán NFT (pages/create-nft.js): Cung cấp biểu mẫu nhập Tên tài sản (Asset Name), Mô tả (Asset Description), Giá bán (Asset Price in Eth) và trường chọn tệp ảnh tải lên IPFS. Sau khi hoàn tất tải siêu dữ liệu lên IPFS, người dùng bấm nút "Create NFT" để thực hiện giao dịch đúc token và niêm yết.
  3. Trang tài sản cá nhân (pages/my-nfts.js): Truy vấn các NFT người dùng đang sở hữu thông qua hàm fetchMyNFTs(). Giao diện hiển thị danh sách tài sản kèm theo thanh tìm kiếm, nút "List" (chuyển sang trang bán lại resell-nft) và nút "Detail".
  4. Trang chi tiết NFT (pages/detail-nft.js): Nhận tham số id, tokenURI và prev từ router để hiển thị đầy đủ thông tin chi tiết của một NFT bao gồm hình ảnh kích thước lớn, Tên, Mô tả, Mã Token ID, Giá bán, Địa chỉ ví chủ sở hữu (Owner), Địa chỉ ví người bán (Seller), cùng nút "Back" để quay lại trang trước đó.
  5. Trang bán lại NFT (pages/resell-nft.js): Cho phép chủ sở hữu NFT nhập giá bán mới tính bằng ETH và nhấn nút niêm yết lại để đưa tài sản vào danh sách bán trên thị trường.
  6. Trang tổng quan người sáng tạo (pages/dashboard.js): Hiển thị danh sách các NFT mà người dùng đã tạo và niêm yết lên sàn thông qua hàm fetchItemsListed().
  7. Thanh điều hướng và thông tin tài khoản (pages/_app.js & ConnectButton.tsx): Thanh Navbar tích hợp tên thương hiệu "Infinity Marketplace", các liên kết điều hướng (Home, Sell NFT, My NFTs, Dashboard) và nút bấm kết nối ví sử dụng thư viện @usedapp/core và Chakra UI. Hệ thống hiển thị địa chỉ ví MetaMask đang đăng nhập cùng số dư tiền mã hóa (lấy định dạng 3 chữ số thập phân).

Nội dung chính theo từng chương

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

Chương mở đầu phân tích khái niệm NFT và lý do ra đời của sàn giao dịch NFT phi tập trung. Đồ án xác định các yêu cầu kỹ thuật cần đạt được đối với việc nắm bắt công nghệ smart contract và các module chức năng cần xây dựng:

  • Module sản phẩm: Hiển thị đầy đủ thông tin tối ưu hóa (tên, giá, mô tả, chủ sở hữu, phương thức thanh toán).
  • Module đăng nhập: Xác thực thông qua liên kết trực tiếp với ví điện tử MetaMask.
  • Module tìm kiếm sản phẩm: Lọc và tìm kiếm nhanh tài sản tại trang chủ.
  • Module quản lý sản phẩm: Cho phép người dùng theo dõi và cập nhật danh mục NFT đã mua và đã bán.
  • Công cụ quản lý và triển khai: Dự án sử dụng Visual Studio Code (IDE), GitHub (quản lý mã nguồn), Microsoft Excel (quản lý công việc và phân chia tiến độ), cùng Microsoft Teams và Facebook (trao đổi, liên lạc).

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương 2 trình bày chi tiết về ngăn xếp công nghệ (tech stack) được lựa chọn:

  • Ngôn ngữ Solidity và vai trò trong việc viết mã nguồn thực thi logic hợp đồng thông minh.
  • Nền tảng Polygon (MATIC) với cấu trúc 4 lớp (Execution, Polygon networks, Security, Ethereum) và khả năng cung cấp giao dịch nhanh, chi phí thấp với thông lượng 10.000 TPS trên sidechain thử nghiệm.
  • Tiêu chuẩn ERC-721 của OpenZeppelin dùng để quản lý quyền sở hữu tài sản độc bản.
  • Phân tích kỹ thuật lập trình giao diện: So sánh cơ chế SSR và CSR; vai trò của framework Next.js trong việc tối ưu SEO và phân tách mã; vai trò của Tailwind CSS trong thiết kế giao diện.
  • Môi trường phát triển Hardhat và bảng so sánh trực tiếp với Truffle về tài liệu, khả năng debug với console.log, hệ thống plugin và môi trường kiểm thử.
  • Giao thức lưu trữ phân tán IPFS: Nguyên lý băm nội dung, lưu trữ P2P và các bước định danh, truy xuất tệp không qua máy chủ trung tâm.
  • Thư viện Ethers.js: Cơ chế quản lý khóa bảo mật, kết nối provider (Infura, Alchemy, JSON-RPC, MetaMask) và hỗ trợ ABI.

CHƯƠNG 3: THIẾT KẾ HỆ THỐNG

Chương 3 mô tả sơ đồ kiến trúc và mối liên hệ giữa 6 thành phần cốt lõi: Ứng dụng web NFT Marketplace, ví MetaMask, siêu dữ liệu NFT, hệ thống IPFS, hợp đồng thông minh ERC-721 và cơ sở dữ liệu phân tán Blockchain. Chương này cũng chuẩn hóa quy trình nghiệp vụ 4 bước từ khi người dùng tải tệp lên cho đến khi NFT được tạo lập và lưu trữ trên chuỗi khối.

CHƯƠNG 4: CÀI ĐẶT MÔI TRƯỜNG

Chương 4 cung cấp hướng dẫn từng bước thiết lập môi trường phát triển:

  • Khởi tạo ứng dụng Next.js bằng lệnh npx create-next-app nft-marketplace.
  • Cài đặt các gói phụ thuộc cần thiết (ethers, hardhat, web3modal, @openzeppelin/contracts, ipfs-http-client, axios...).
  • Cấu hình Tailwind CSS qua tailwind.config.js và nạp các chỉ thị @tailwind base; @tailwind components; @tailwind utilities; vào styles/global.css.
  • Khởi tạo và cấu hình dự án Hardhat, thiết lập các tham số mạng hardhat (chainId 1337), trình biên dịch Solidity phiên bản 0.8.4 có kích hoạt tối ưu hóa (optimizer runs: 200).

CHƯƠNG 5: PHÂN TÍCH TRANG WEB

Chương 5 là nội dung trọng tâm của báo cáo, trình bày chi tiết mã nguồn và giao diện người dùng:

  • Mã nguồn hợp đồng thông minh: Chi tiết tệp NFTMarketplace.sol với các hàm tạo token, tạo giao dịch niêm yết, mua bán, bán lại và truy vấn dữ liệu.
  • Phân tích giao diện và mã nguồn từng trang: Đi kèm bảng mô tả chức năng, hình ảnh minh họa và mã nguồn chi tiết cho Trang chủ (index.js), Trang bán NFT (create-nft.js), Trang tài sản cá nhân (my-nfts.js), Trang chi tiết NFT (detail-nft.js), Trang bán lại (resell-nft.js), Trang tổng quan (dashboard.js), cùng thành phần Navbar và modal kết nối ví (_app.js, ConnectButton.tsx).

CHƯƠNG 6: CÀI ĐẶT VÀ THỬ NGHIỆM - NHẬN XÉT VÀ KẾT LUẬN

Chương cuối cùng tổng kết các kết quả đạt được từ việc thử nghiệm các chức năng của ứng dụng, đồng thời nêu rõ các mặt hạn chế kỹ thuật và định hướng nâng cấp hệ thống trong tương lai.

Kết quả và đóng góp

Đồ án đã xây dựng thành công một hệ thống sàn giao dịch NFT phi tập trung hoàn chỉnh mang tên Infinity Marketplace với các kết quả cụ thể:

  1. Triển khai thành công hợp đồng thông minh chuẩn ERC-721: Xây dựng tệp NFTMarketplace.sol kế thừa ERC721URIStorage với đầy đủ các nghiệp vụ quản trị phí sàn (listingPrice = 0.025 ether), đúc token, mua bán và chuyển nhượng quyền sở hữu tự động không qua trung gian.
  2. Tích hợp mạng lưu trữ phân tán IPFS: Xử lý thành công luồng tải dữ liệu đa phương tiện và siêu dữ liệu JSON lên IPFS qua ipfs-http-client, giúp giảm tải lưu trữ on-chain và đảm bảo tính phi tập trung cho dữ liệu số.
  3. Giao diện người dùng Web3 hiện đại và tối ưu: Xây dựng đầy đủ 6 màn hình chức năng (Home, Sell NFT, My NFTs, Detail NFT, Resell NFT, Dashboard) trên nền tảng Next.js kết hợp Tailwind CSS và Chakra UI; tích hợp luồng xác thực và hiển thị số dư ví MetaMask thông qua useDApp và Ethers.js.
  4. Đóng góp kỹ thuật: Đồ án cung cấp một tài liệu kỹ thuật hoàn chỉnh từ khâu cấu hình công cụ (Hardhat, Next.js, Tailwind), phân tích kiến trúc phân tầng (Polygon 4 lớp), phân tích mã nguồn hợp đồng thông minh đến triển khai giao diện client cho một ứng dụng DApp trong hệ sinh thái Ethereum/Polygon.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung đánh giá tại Chương 6 của báo cáo, các hạn chế và hướng phát triển được xác định như sau:

  • Hạn chế: Hệ thống mới chỉ tập trung vào các chức năng mua bán cơ bản ở mức giá cố định (fixed price); chưa tích hợp các cơ chế giao dịch nâng cao phổ biến trên các sàn NFT lớn; việc thử nghiệm chủ yếu diễn ra trên môi trường mạng nội bộ (Hardhat local network) và cấu hình mạng thử nghiệm (Mumbai Testnet).
  • Hướng phát triển tiếp theo:
    • Nâng cấp và bổ sung các phương thức giao dịch đa dạng như cơ chế đấu giá (NFT Auction) theo thời gian thực.
    • Tích hợp thêm các chuẩn token mở rộng khác (như ERC-1155 hỗ trợ semi-fungible token và giao dịch theo lô).
    • Tối ưu hóa giao diện người dùng, bổ sung biểu đồ biến động giá và lịch sử giao dịch chi tiết cho từng NFT.
    • Mở rộng hỗ trợ đa chuỗi (Multi-chain) và triển khai chính thức trên môi trường mạng chính (Mainnet) của Polygon hoặc Ethereum.

Giá trị tham khảo

Báo cáo đồ án có giá trị tham khảo thực tiễn đối với:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm và Khoa học Máy tính: Là tài liệu tham khảo chi tiết về quy trình xây dựng một ứng dụng DApp từ đầu đến cuối, bao gồm cách cấu hình Hardhat, viết hợp đồng thông minh Solidity và kết nối giao diện Next.js.
  • Người nghiên cứu và lập trình viên Web3 mới bắt đầu: Tham khảo cách tổ chức mã nguồn hợp đồng thông minh theo chuẩn OpenZeppelin ERC-721, kỹ thuật lưu trữ tệp lên IPFS bằng Javascript, và phương pháp sử dụng Ethers.js kết hợp Web3Modal để ký và thực thi giao dịch.

Câu hỏi thường gặp

1. Mức phí niêm yết (listing price) trên sàn Infinity Marketplace được thiết lập là bao nhiêu và ai có quyền cập nhật mức phí này?
Mức phí niêm yết được cố định ban đầu trong hợp đồng thông minh là 0.025 ether. Chỉ có chủ sở hữu hợp đồng (owner, được khởi tạo tại constructor) mới có quyền gọi hàm updateListingPrice để thay đổi mức phí này thông qua điều kiện kiểm tra require(owner == msg.sender).

2. Dữ liệu hình ảnh và siêu dữ liệu (metadata) của NFT được lưu trữ ở đâu và bằng cách nào?
Dữ liệu hình ảnh và siêu dữ liệu không lưu trữ trực tiếp trên chuỗi khối để tránh chi phí lưu trữ cao. Toàn bộ hình ảnh và tệp JSON mô tả (tên, mô tả, đường dẫn ảnh) được tải lên mạng lưu trữ phân tán IPFS thông qua thư viện ipfs-http-client tới endpoint https://ipfs.io:5001/api/v0. Sau khi tải lên, đường dẫn chứa mã hash IPFS (tokenURI) mới được ghi nhận vào hợp đồng thông minh.

3. Tại sao đồ án lại lựa chọn nền tảng Polygon (MATIC) thay vì triển khai trực tiếp trên Ethereum Layer 1?
Polygon là giải pháp mở rộng Layer 2 sidechain tương thích EVM giúp giải quyết các hạn chế của Ethereum về tốc độ và chi phí giao dịch. Polygon cho phép xử lý giao dịch nhanh hơn, chi phí rẻ hơn đáng kể và có khả năng đạt thông lượng lên đến 10.000 TPS trên sidechain ở môi trường thử nghiệm nội bộ, trong khi vẫn tận dụng được tính bảo mật và cộng đồng phát triển sẵn có của Ethereum.

4. Khác biệt kỹ thuật chính giữa môi trường phát triển Hardhat và Truffle được báo cáo chỉ ra là gì?
Báo cáo chỉ ra rằng Hardhat hỗ trợ khả năng debug trực tiếp mã nguồn Solidity bằng lệnh console.log (Solidity nguyên bản không hỗ trợ), có hệ thống plugin mở rộng linh hoạt, tích hợp mạng local tiện lợi và cung cấp môi trường thử nghiệm tương tác trực tiếp với hợp đồng thông minh tốt hơn so với cấu trúc Truffle Boxes phức tạp hơn của Truffle.

5. Người dùng chưa có ví điện tử kết nối (Guest) có thể thực hiện những thao tác gì trên sàn?
Khách viếng thăm (Guest) có thể truy cập trang chủ để duyệt danh sách các sản phẩm đang được rao bán, xem chi tiết thông tin thuộc tính của từng NFT, tìm kiếm sản phẩm và thực hiện liên kết với ví MetaMask để chuyển thành người dùng chính thức có quyền mua hoặc đăng bán tài sản.

Kết luận

Đồ án "Xây dựng Marketplace NFT" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG-HCM đã hoàn thành xuất sắc các mục tiêu thiết kế và phát triển một sàn giao dịch tài sản số phi tập trung. Thông qua việc kết hợp các công nghệ nền tảng tiên tiến như hợp đồng thông minh Solidity, chuẩn ERC-721, giải pháp Layer 2 Polygon, mạng lưu trữ IPFS và framework Next.js, hệ thống đã giải quyết trọn vẹn quy trình tạo lập, niêm yết và giao dịch NFT an toàn, minh bạch với chi phí tối ưu. Đây là một tài liệu tham khảo kỹ thuật hữu ích, có cấu trúc chặt chẽ và tính thực tiễn cao cho sinh viên cũng như các nhà phát triển quan tâm đến lĩnh vực xây dựng ứng dụng phi tập trung Web3.