> 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

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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
