> For the complete documentation index, see [llms.txt](https://docs.chiliz.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chiliz.com/vi/phat-trien/nang-cao/lam-viec-voi-nft/host-nft-tren-ipfs.md).

# Host NFT trên IPFS

Host các tệp media NFT và metadata JSON trên IPFS để lưu trữ tokenURI vĩnh viễn, phi tập trung bằng Pinata hoặc các nhà cung cấp IPFS khác cho các dự án NFT trên Chiliz Chain.

Nếu bạn chưa biết, sở hữu một NFT không có nghĩa là tệp của NFT đó được tải lên blockchain nguyên vẹn.\
Thay vào đó, một NFT tương ứng với một khối blockchain chứa một token nhất định. Token này lưu trữ một "con trỏ" hoặc liên kết, gọi là `tokenURI`, chứa địa chỉ trực tuyến đến một tệp metadata, và tệp metadata đó lại tham chiếu đến tệp media bằng một URI khác.

Do tính chất ngang hàng của blockchain, bạn không thể chỉ đơn giản host tệp NFT và tệp metadata của mình trên bất kỳ dịch vụ web hosting nào. `tokenURI` của bạn cần phải ổn định (hay "bất biến") và có thể truy cập được trên các ứng dụng và marketplace khác nhau, càng lâu càng tốt, có thể là mãi mãi.

Đây là lúc IPFS xuất hiện.

## **Về IPFS**

[IPFS](https://ipfs.tech/), viết tắt của InterPlanetary File System, là một mạng lưu trữ tệp phi tập trung phục vụ mục đích host và chia sẻ dữ liệu trên các mạng phân tán. Các nền tảng NFT có thể lấy dữ liệu từ IPFS thay vì phụ thuộc vào một máy chủ duy nhất, và giao thức IPFS tạo cảm giác như tất cả các tệp được host đều nằm trên máy cục bộ.

{% hint style="success" %}
**Tôi có cần tìm hiểu về IPFS ngay bây giờ không?**

Điều đó phụ thuộc vào phương pháp bạn chọn để đúc NFT:

* Sử dụng code thuần (như [viem](https://viem.sh/) hoặc [ethers](https://ethers.org/)):\
  **Có**, bạn cần một `tokenURI` hợp lệ (ví dụ: `ipfs://.../metadata.json`) từ trước.
* Thông qua dashboard như [thirdweb](https://thirdweb.com/):\
  **Không**. Tính năng tải lên IPFS đã được tích hợp sẵn. Bạn vẫn có thể dán một `ipfs://...` có sẵn nếu bạn có trong các thông số NFT.
* Sử dụng hầu hết các Web3 SDK (như [Rarible's Multichain SDK](https://docs.rarible.org/reference/getting-started)):\
  **Có**, chúng sẽ yêu cầu một URI. Một số công cụ có thể hỗ trợ việc tải lên, nhưng không phải tất cả.
  {% endhint %}

Trang web IPFS có [một trang chi tiết về các phương pháp tốt nhất khi lưu trữ NFT](https://docs.ipfs.tech/how-to/best-practices-for-nft-data/#types-of-ipfs-links-and-when-to-use-them).

## Chi tiết về việc tải lên NFT

Khi tải lên NFT, bạn cần thực hiện hai lần tải lên với Content Identifier (CID) mà IPFS tạo ra cho bạn:

* Nội dung thực tế, trong đó IPFS trả về một URL IPFS cho tệp được host.
* Tệp metadata, tham chiếu đến CID của tệp media và phải chứa URL IPFS cho tệp đó.

Cả hai đều cần được tải lên IPFS dưới cùng một CID.

Lý tưởng nhất là bộ công cụ của bạn sẽ xử lý việc này để bạn không phải làm thủ công toàn bộ.

Để tham khảo, đây là ví dụ về một tệp `metadata.json` tối giản:

```json
{ 
    "name": "Stadium Pass #25456456", 
    "description": "PSG supporter entry ticket", 
    "image": "ipfs:///filename.png",           // for static images only!
    // "animation_url": "ipfs:///filename.mp4" // for video and audio files.
    "attributes": [
    { 
        "trait_type": "Tier", 
        "value": "Gold" 
    }] 
}
```

Để tìm hiểu thêm về cấu trúc metadata NFT (ví dụ: tại sao bạn nên dùng `image` cho hình ảnh và `animation_url` cho video), chúng tôi khuyên bạn đọc tài liệu này từ OpenSea:

{% embed url="<https://docs.opensea.io/docs/metadata-standards#metadata-structure>" %}

Lưu ý: *Bạn không cần phải tự viết tệp metadata từ đầu!*\
Bộ công cụ của bạn sẽ có khả năng tạo tệp đó cho bạn.

{% hint style="success" %}
Bạn có thể [tự chạy node IPFS của mình](https://docs.ipfs.tech/how-to/command-line-quick-start/), hoặc trả phí cho một dịch vụ host IPFS như [Pinata](https://pinata.cloud/), vốn cung cấp gói miễn phí có thể đáp ứng nhu cầu của bạn.

Hãy làm theo [hướng dẫn bắt đầu nhanh của Pinata](https://docs.pinata.cloud/quickstart) để lấy thông tin xác thực API (gồm API key, API secret và JWT token) cũng như tên miền Dedicated Gateway của bạn (ví dụ: `blue-genetic-quail-122.mypinata.cloud`).
{% endhint %}

Vì tài liệu này không nhằm mục đích mô tả mọi thứ về IPFS, chúng tôi khuyến khích bạn tìm hiểu sâu hơn qua các tìm kiếm trực tuyến. Bạn có thể bắt đầu với bài giải thích của Pinata:

{% embed url="<https://docs.pinata.cloud/ipfs-101/how-does-ipfs-work-with-nfts>" %}

... hoặc bài blog từ thirdweb:

{% embed url="<https://blog.thirdweb.com/guides/securing-pinning-your-nft-with-ipfs/>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.chiliz.com/vi/phat-trien/nang-cao/lam-viec-voi-nft/host-nft-tren-ipfs.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
