FIL.VN — Data Availability & Decentralized Storage
Trang chủ ZRO.VN
🎨 Ứng dụng thực tế · Cluster C1

NFT Storage
Tốt Nhất 2025

Hàng nghìn NFT trị giá hàng triệu đô đã "mất ảnh" vì được lưu sai cách. Hướng dẫn đầy đủ để lưu NFT metadata và asset đúng chuẩn IPFS + Filecoin — và so sánh các giải pháp phổ biến nhất hiện nay.

FIL.VN Knowledge Base Cập nhật: 2025 Thời gian đọc: ~15 phút NFT · Web3 Developer
Tóm tắt — Đọc cái này trước

NFT metadata và asset không lưu trong smart contract — chúng lưu ở một địa chỉ external mà tokenURI trỏ đến. Nếu địa chỉ đó là HTTP URL → NFT có thể mất ảnh khi server tắt. Giải pháp đúng: dùng IPFS CID (bất biến theo nội dung) + đảm bảo file được pin dài hạn bằng Filecoin hoặc pinning service uy tín. Tiêu chuẩn vàng 2025: NFT.Storage hoặc Lighthouse (IPFS + Filecoin tự động).

1Thảm họa NFT đã xảy ra — và bài học quan trọng

Năm 2021–2022, khi NFT boom đạt đỉnh, hàng loạt project ra mắt vội vàng mà không quan tâm đến storage infrastructure. Hậu quả đã rõ ràng:

⚠️ Các trường hợp NFT mất dữ liệu thực tế
🖼️
NFT trỏ đến HTTPS server: Dự án đóng cửa, server tắt → hàng nghìn NFT chỉ còn là token trống. Giá về 0 trong vài ngày.
☁️
NFT trỏ đến AWS S3 bucket: Team quên renew hosting → bucket bị xóa → metadata 404. Token vẫn còn nhưng vô giá trị về mặt visual.
🔄
NFT metadata bị thay đổi: Server vẫn còn nhưng team đổi ảnh mà không thông báo → người mua nhận NFT khác với những gì họ tưởng mua.
📌
IPFS không được pin: Team upload lên IPFS cá nhân node, node tắt → CID không resolve được. Dùng IPFS đúng nhưng quên pinning service.

Bài học cốt lõi: blockchain đảm bảo ownership, không đảm bảo storage. Smart contract chỉ lưu một chuỗi tokenURI — phần còn lại phụ thuộc hoàn toàn vào infrastructure bên ngoài mà team lựa chọn.

2Giải phẫu NFT — Cái gì thực sự lưu ở đâu

Khi bạn mint NFT trên Ethereum, smart contract lưu:

// ERC-721 standard — những gì contract lưu: mapping(uint256 => address) _owners; // token ID → owner address mapping(uint256 => string) _tokenURIs; // token ID → metadata URL // Ví dụ tokenURI — BAD (HTTP URL): "https://api.project.com/metadata/1" // → Server tắt → 404 → NFT mất ảnh // Ví dụ tokenURI — GOOD (IPFS CID): "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi" // → Bất biến, resolve từ bất kỳ IPFS node nào có file // Metadata JSON tại CID trỏ đến: { "name": "My NFT #1", "description": "...", "image": "ipfs://bafybei...", // ← CID của ảnh "attributes": [...] }

NFT metadata là một file JSON nhỏ (vài KB). File này chứa URL của image, video, audio, hoặc 3D asset thực sự. Cả metadata JSON lẫn asset file đều cần được lưu trữ đúng cách.

3Các phương pháp lưu NFT — Từ tệ nhất đến tốt nhất

HTTP URL trỏ đến server tập trung
tokenURI = "https://api.project.com/nft/1". Server tắt → mất tất cả. Metadata có thể bị thay đổi bất kỳ lúc nào mà không ai biết.
⚠️
IPFS không có pinning
Upload lên IPFS cá nhân, dùng CID. Tốt hơn HTTP nhưng file biến mất khi node tắt và garbage collection chạy.
⭐⭐
IPFS + Pinata hoặc pinning service
CID bất biến + file được pin trên infrastructure Pinata. Tốt nhưng Pinata là centralized — nếu họ đóng cửa, file mất.
⭐⭐⭐
🏆
IPFS + Filecoin (NFT.Storage / Lighthouse)
CID bất biến + file được lưu trên Filecoin network với multiple SP và slashing guarantee. Phi tập trung thực sự.
⭐⭐⭐⭐⭐

4So sánh các service lưu NFT phổ biến nhất 2025

NFT.Storage
IPFS + Filecoin · Free
Storage typeIPFS + Filecoin
Phi tập trungCao
Chi phíMiễn phí
Filecoin dealTự động
API / SDKJS, Python
Phù hợpNFT, dApp
Pinata
IPFS Pinning · Freemium
Storage typeIPFS thuần túy
Phi tập trungTrung bình
Chi phíFree 1 GB, sau $20/tháng
Filecoin dealKhông
CDN GatewayNhanh nhất
Phù hợpDev nhanh, prototype
Lighthouse
IPFS + Filecoin · Encryption
Storage typeIPFS + Filecoin
Phi tập trungCao
Chi phíCó phí theo GB
Mã hóaToken-gated access
APIJS, Python, CLI
Phù hợpPrivate NFT, gated content
web3.storage
IPFS + Filecoin · Developer API
Storage typeIPFS + Filecoin
Phi tập trungCao
Chi phíFree tier rộng
CAR upload
Developer UXTốt nhất
Phù hợpDev, bulk upload

5Hướng dẫn thực tế: Lưu NFT đúng chuẩn với NFT.Storage

1

Chuẩn bị asset — Optimize trước khi upload

Resize ảnh về kích thước phù hợp (thường 1000×1000px hoặc 2000×2000px). Convert sang WebP hoặc PNG. Với video: 1080p tối đa, nén H.264. Metadata JSON tuân theo chuẩn ERC-721/OpenSea.

2

Upload asset file trước, lấy CID

Upload image/video lên NFT.Storage hoặc Lighthouse trước. Nhận CID của asset. CID này sẽ được dùng trong metadata JSON như là giá trị của trường "image".

3

Tạo metadata JSON với CID asset

Metadata JSON format chuẩn OpenSea, trong đó "image" = "ipfs://[CID của asset]". Đảm bảo tất cả link bên trong metadata đều dùng IPFS CID, không phải HTTP URL.

4

Upload metadata JSON, lấy CID metadata

Upload metadata JSON. Nhận CID metadata — đây là giá trị sẽ dùng làm tokenURI trong smart contract. Format: "ipfs://[CID metadata]".

5

Set tokenURI trong smart contract

Khi mint NFT, set tokenURI = "ipfs://[CID metadata]". Với collection lớn, thường set baseURI = "ipfs://[folder CID]/" và tokenURI = baseURI + tokenId.toString().

6

Verify và monitor

Sau mint, verify tokenURI resolve được qua IPFS gateway. Kiểm tra NFT hiển thị đúng trên OpenSea. Nếu dùng Filecoin deal, verify deal ID on-chain.

// Code mẫu — Upload và mint với NFT.Storage + ethers.js import { NFTStorage, File } from 'nft.storage'; import { ethers } from 'ethers'; const client = new NFTStorage({ token: API_KEY }); // 1. Upload image → nhận CID const imageFile = new File([imageBlob], 'image.png', { type: 'image/png' }); // 2. Store metadata + image cùng lúc const metadata = await client.store({ name: 'My NFT #1', description: 'Mô tả NFT', image: imageFile, attributes: [ { trait_type: 'Background', value: 'Blue' } ] }); // 3. Nhận tokenURI — sẵn sàng dùng on-chain console.log(metadata.url); // Output: ipfs://bafyreib52shpjqpkbrqezv3yqzlqnbzxvfyiyqhcroyfohokzabcxyz/metadata.json // 4. Mint NFT với tokenURI này await contract.mint(recipientAddress, metadata.url);

6NFT metadata chuẩn OpenSea — Template đầy đủ

// metadata.json — Chuẩn ERC-721 / OpenSea Metadata Standard { "name": "Collection Name #001", "description": "Mô tả chi tiết về NFT này...", // ✅ LUÔN dùng IPFS CID, không phải HTTP URL "image": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", // Optional: animation (video, audio, 3D) "animation_url": "ipfs://bafybei...", // Optional: external link (dự án website) "external_url": "https://yourproject.com/nft/1", // Attributes — hiển thị trên OpenSea, Blur, etc. "attributes": [ { "trait_type": "Background", "value": "Cosmic Blue" }, { "trait_type": "Eyes", "value": "Laser" }, { "trait_type": "Rarity Score", "value": 95, "display_type": "number" } ] }

7On-chain NFT, Arweave vs IPFS — Khi nào dùng gì

Phương phápBền vữngChi phíImmutabilityPhù hợp
On-chain (SVG/Base64) Vĩnh viễn Gas cực cao Tuyệt đối Generative art nhỏ (Nouns, Autoglyphs)
IPFS + Filecoin Rất cao Thấp CID bất biến Hầu hết NFT Ethereum, Polygon
Arweave Vĩnh viễn Thấp Transaction bất biến NFT Solana (Metaplex), metadata nhỏ
IPFS + Pinata only Trung bình Thấp CID bất biến Short-term, prototype, gaming item
HTTP URL centralized Rủi ro cao Có (hosting) Có thể thay đổi Không khuyến khích cho NFT nghiêm túc
Xu hướng 2025: Các marketplace lớn như OpenSea và Blur đang cảnh báo NFT với HTTP tokenURI. Một số platform thậm chí đánh dấu "Low Metadata Reliability" cho NFT dùng centralized storage. Chuẩn ngành đang rõ ràng hướng về IPFS + Filecoin hoặc Arweave.

Để hiểu sâu hơn về cách IPFS và Filecoin hoạt động cùng nhau, xem bài IPFS Là Gì? và bài Filecoin vs Arweave. Bài tổng quan tại FIL.VN phân tích toàn cảnh hạ tầng lưu trữ phi tập trung.

❓ Câu hỏi thường gặp về NFT Storage
Tại sao NFT có thể mất ảnh dù vẫn còn trên blockchain?
Smart contract NFT chỉ lưu tokenURI — một địa chỉ trỏ đến metadata JSON. Nếu đó là HTTP URL và server đó tắt, NFT mất ảnh dù token vẫn còn on-chain. Đây là lý do cần dùng IPFS CID (bất biến, không phụ thuộc server cụ thể) và đảm bảo file được pin/lưu dài hạn bằng Filecoin hoặc pinning service uy tín.
NFT.Storage và Pinata khác nhau như thế nào?
NFT.Storage lưu file vào cả IPFS lẫn Filecoin network — cung cấp hai lớp bảo vệ và hoàn toàn miễn phí (được Protocol Labs tài trợ). Pinata là IPFS pinning service thuần túy — lưu trên cơ sở hạ tầng tập trung của Pinata, có CDN tốt hơn và UX đơn giản hơn nhưng phụ thuộc vào Pinata còn hoạt động. Nếu cần persistence dài hạn phi tập trung, NFT.Storage hoặc Lighthouse tốt hơn.
Làm thế nào để check NFT của mình đang lưu đúng cách không?
Kiểm tra tokenURI của NFT: nếu bắt đầu bằng "ipfs://" hoặc "ar://" là tốt; nếu là "https://" trỏ đến server cụ thể là rủi ro. Tiếp theo, resolve CID đó trên IPFS gateway và kiểm tra file load được không. Verify CID đó có được pin bởi ít nhất một pinning service hoặc Filecoin deal hay không. Tools như nft.storage checker hoặc IPFS inspect có thể giúp.
NFT lưu trên Arweave hay IPFS + Filecoin tốt hơn?
Cả hai đều tốt với trade-off khác nhau. Arweave phổ biến trên Solana (Metaplex standard), trả một lần vĩnh viễn, retrieval nhanh qua gateway. IPFS + Filecoin phổ biến trên Ethereum, CID bất biến, storage deal có thể verify on-chain. Nhiều dự án dùng cả hai: Arweave cho metadata nhỏ, Filecoin cho asset lớn.
Chi phí lưu NFT metadata trên IPFS + Filecoin là bao nhiêu?
Metadata JSON thường chỉ vài KB — chi phí cực thấp. Với NFT.Storage (miễn phí), Pinata (miễn phí 1 GB), hoặc web3.storage, bạn có thể lưu hàng nghìn NFT metadata miễn phí. Ảnh lớn hơn (1–10 MB/NFT) có thể cần plan trả phí hoặc Filecoin deal trực tiếp — nhưng chi phí vẫn cực thấp so với AWS S3 ($23/TB/tháng).
On-chain NFT là gì và khác gì NFT thông thường?
On-chain NFT lưu toàn bộ metadata và image data trực tiếp trong smart contract — không phụ thuộc bất kỳ external storage nào. Image thường encode dưới dạng SVG hoặc Base64. Ưu điểm: bền vững tuyệt đối bao lâu Ethereum còn tồn tại. Nhược điểm: chi phí gas cực cao, chỉ phù hợp cho artwork nhỏ như Autoglyphs hay Nouns.
🎨

ZRO Research

Phân tích thực tế về NFT storage infrastructure, IPFS pinning và Filecoin storage deal cho NFT. Tham khảo: OpenSea metadata standard, NFT.Storage docs, Protocol Labs documentation.

NFT Infrastructure IPFS · Filecoin Web3 Developer fil.vn