AgriCarbonDex là một ứng dụng phi tập trung (DApp) được xây dựng trên blockchain, cho phép người dùng giao dịch các Tín chỉ Carbon được token hóa dưới dạng NFT (ERC-721). Người dùng có thể sử dụng một loại token tiện ích là Carbon Credit Token (CCT - ERC-20) để mua bán các NFT này.
Dự án này mô phỏng một hệ thống giao dịch tín chỉ carbon minh bạch, nơi mọi giao dịch đều được ghi lại trên blockchain, đảm bảo tính toàn vẹn và không thể thay đổi.
Dự án được chia thành 3 thành phần chính:
AgriDex/
(Frontend): Giao diện người dùng được xây dựng bằng React, sử dụng Vite làm công cụ build. Đây là nơi người dùng tương tác với DApp.AgriDexBack/
(Backend): Một máy chủ Node.js/Express đóng vai trò hỗ trợ. Backend xử lý các tác vụ yêu cầu quyền của người sở hữu (owner), chẳng hạn như list một NFT lên sàn thay cho người dùng sau khi họ đã "approve".ERC721-ERC20/
(Smart Contracts): Chứa mã nguồn các hợp đồng thông minh viết bằng Solidity, bao gồm token CCT (ERC-20), NFT Tín chỉ Carbon (ERC-721) và hợp đồng sàn giao dịch (DEX).
- Frontend: React, Vite, Ethers.js, CSS
- Backend: Node.js, Express.js, Ethers.js, Dotenv
- Blockchain: Solidity, Mạng thử nghiệm Sepolia
- Ví: MetaMask
- Node.js (phiên bản 16 trở lên)
- npm hoặc yarn
- Ví MetaMask đã cài đặt trên trình duyệt
- Các file mã nguồn Solidity nằm trong thư mục
ERC721-ERC20/
. - Sử dụng một công cụ như Remix, Hardhat hoặc Truffle để biên dịch và triển khai các hợp đồng sau lên mạng thử nghiệm Sepolia:
CarbonCreditToken.sol
CarbonOffsetNFT.sol
NFTDEX.sol
(hoặcsimpledex.sol
tùy vào file bạn sử dụng)
- Sau khi triển khai, lưu lại địa chỉ của cả 3 hợp đồng.
- Đi tới thư mục backend:
cd AgriCarbonDex/AgriDexBack
- Cài đặt các dependencies:
npm install
- Tạo một file
.env
trong thư mụcAgriDexBack
và điền các thông tin sau:# Khóa riêng của tài khoản đã triển khai các smart contract (ví owner) PRIVATE_KEY=YOUR_DEPLOYER_PRIVATE_KEY # URL của một node RPC mạng Sepolia (ví dụ từ Infura, Alchemy) RPC_URL=YOUR_SEPOLIA_RPC_URL # Địa chỉ các contract đã triển khai ở Bước 1 NFTDEX_ADDRESS=YOUR_NFTDEX_CONTRACT_ADDRESS CARBON_OFFSET_NFT_ADDRESS=YOUR_CARBON_OFFSET_NFT_ADDRESS CARBON_CREDIT_TOKEN_ADDRESS=YOUR_CARBON_CREDIT_TOKEN_ADDRESS
- Khởi động máy chủ backend:
Máy chủ sẽ chạy tại
npm start
http://localhost:3001
.
- Mở một terminal mới và đi tới thư mục frontend:
cd AgriCarbonDex/AgriDex
- Cài đặt các dependencies:
npm install
- Cập nhật địa chỉ contract trong code frontend (nếu cần). Một số địa chỉ có thể được hardcode trong các file như
src/utils/constants.js
hoặc trực tiếp trong các component. Hãy kiểm tra và đảm bảo chúng khớp với địa chỉ bạn đã triển khai. - Khởi động ứng dụng React:
Ứng dụng sẽ chạy tại
npm run dev
http://localhost:5173
(hoặc một cổng khác do Vite chỉ định).
- Mở trình duyệt và truy cập
http://localhost:5173
. - Kết nối ví MetaMask của bạn với mạng Sepolia.
- Mua Token CCT: Truy cập trang "/buy" để mua token CCT. Chức năng này có thể được quản lý bởi backend (admin mint).
- List NFT:
- Đảm bảo bạn sở hữu một vài Carbon Offset NFT.
- Truy cập trang "/list".
- Với mỗi NFT, bạn cần nhấn "Approve" để cấp quyền cho sàn DEX tương tác với NFT đó.
- Sau khi approve, nhập giá (bằng CCT) và nhấn "List" để đưa NFT lên sàn.
- Giao dịch: Truy cập các trang "/trade" để xem các NFT đang được niêm yết và thực hiện giao dịch.