{
"name": "string",
"description": "string",
"external_url": "string",
"attributes": [
{
"trait_type": "string",
"value": "string"
}
],
"isImage": true, // custom field
"file": "string" // cid của ảnh hoặc video
}
- 🧩 Frontend: React + vite
- 🧩 Smart Contract: Solidity + Hardhat
- 🧩 Backend: Typescript + Express
- 🧩 IPFS/ storage: Pinata (pining service)
- 🧩 Test: Slither
Hướng dẫn này giúp bạn chạy thử dự án demo một cách nhanh chóng.
Đảm bảo bạn đã cài đặt các phần mềm sau:
- Node.js (LTS mới nhất): Môi trường chạy JavaScript. Tải tại nodejs.org.
- Kiểm tra cài đặt bằng Terminal:
node -v npm -v
- Kiểm tra cài đặt bằng Terminal:
- MetaMask Extension: Ví điện tử cho trình duyệt để tương tác với DApp. Cài đặt tại metamask.io.
Thực hiện theo các bước sau để chạy demo:
- Cài đặt thư viện dự án:
- Mở Terminal, di chuyển đến thư mục gốc của dự án.
- Chạy lệnh:
npm install
- Biên dịch Smart Contract:
- Tại thư mục gốc, chạy:
npx hardhat compile
- Tại thư mục gốc, chạy:
- Tạo mã typescript từ ABI của smart contract:
-
npm run typechain
-
- Khởi động Local Node:
- Tại thư mục gốc, chạy:
npx hardhat node
- Terminal này sẽ hiển thị các tài khoản thử nghiệm và khóa riêng tư (Private Key). Giữ Terminal này luôn mở.
- Tại thư mục gốc, chạy:
- Kết nối MetaMask với Local Node:
- Mở MetaMask.
- Thêm mạng Hardhat Localhost:
- Chọn "Add network".
- Chọn "Add a network manually" (nếu có).
- Nhập thông tin sau:
- Network Name:
Hardhat Localhost - New RPC URL:
http://127.0.0.1:8545 - Chain ID:
31337 - Currency Symbol:
ETH(tùy chọn)
- Network Name:
- Nhấn "Save".
- Import tài khoản thử nghiệm:
- Đảm bảo bạn đang ở mạng "Hardhat Localhost".
- Nhấp vào biểu tượng tài khoản, chọn "Import account".
- Copy một Private Key từ Terminal đang chạy
npx hardhat nodevà dán vào MetaMask. Nhấn "Import". - Lưu ý: Không dùng các khóa này cho tài sản thật.
- Triển khai Smart Contract:
- Mở một Terminal mới.
- Di chuyển đến thư mục gốc.
- Chạy lệnh:
npx hardhat ignition deploy ./ignition/modules/Whisky.ts --network localhost
- Cài đặt thư viện server:
- Mở Terminal, di chuyển đến thư mục
express-pinata-server. - Chạy lệnh:
npm install
- Mở Terminal, di chuyển đến thư mục
- Đăng ký dịch vụ Pinata tại Pinata.
- Tạo file
.envtrong thư mụcexpress-pinata-servervới nội dung:ThayPINATA_JWT=YOUR_PINATA_JWT GATEWAY_URL=YOUR_PINATA_GATEWAY_URLYOUR_PINATA_JWTvàYOUR_PINATA_GATEWAY_URLbằng API Key và Gateway URL từ Pinata. - Chạy server:
npm run dev
- Cài đặt thư viện Frontend:
- Mở Terminal, di chuyển đến thư mục
dapp. - Chạy lệnh:
npm install
- Mở Terminal, di chuyển đến thư mục
- Tạo file
.env.localtrong thư mụcdappvới nội dung:ThayVITE_SERVER_URL=YOUR_EXPRESS_SERVER_URL VITE_GATEWAY_URL=YOUR_PINATA_GATEWAY_URLYOUR_EXPRESS_SERVER_URLbằng URL của server Express Pinata (ví dụ:http://localhost:8787) vàYOUR_PINATA_GATEWAY_URLbằng Gateway URL của Pinata. - Khởi chạy ứng dụng Frontend:
- Trong Terminal tại thư mục
dapp, chạy:npm run dev
- Mở trình duyệt tại địa chỉ hiển thị trong Terminal (ví dụ:
http://localhost:3000hoặchttp://localhost:5173). - Kết nối MetaMask và chọn tài khoản đã import để tương tác với ứng dụng.
- Trong Terminal tại thư mục
Ở thư mục gốc chạy các lệnh sau để cài đặt
python3 -m venv .venv
source ./.venv/bin/activate
pip3 install -r requirements.txtKiểm tra
slither .
