在 BTFS 上托管 NFT 元数据

将 NFT 图片和元数据 JSON 上传到 BTFS,并将生成的 URI 用作 tokenURI。

📘

前置阅读

BitTorrent File System(BTFS)是基于 TRON 网络与 BitTorrent 生态构建的去中心化文件存储协议。在 NFT 场景中,定义每个 Token 名称、图像及属性的元数据 JSON 文件通常托管在链下,并通过智能合约中的 tokenURI 函数引用。BTFS 可用于托管这类元数据,降低对单一 Web 服务器的依赖。

本指南将引导你将图片和元数据 JSON 上传到 BTFS,生成可用于 TRC-721 合约的 URI。

元数据托管选择:BTFS 与其他方案

选项费用持久性去中心化程度
BTFS按 MB 每月支付 BTT只要 BTT 付费即可持续在 BTFS 网络上去中心化
IPFS + 固定服务(如 Pinata)订阅或按固定付费只要固定即可持续在 IPFS 网络上去中心化
Arweave一次性付费永久存储永久去中心化
自托管 CDN托管费用只要你维护主机即可持续中心化

BTFS 是 TRON 生态中常用的 NFT 元数据托管方案之一。

步骤 1——安装并初始化 BTFS

安装步骤请参见 BTFS 安装说明

执行 btfs init 初始化本地节点时,系统会自动创建并绑定一个与该节点关联的 TRON 钱包账户。初始化完成后,可通过运行 btfs id 命令查看该钱包账户对应的 TRON 地址。

步骤 2——为 BTFS 节点充值 BTT

向 BTFS 上传文件以 BTT 作为支付 Token。当前存储价格请以 BTFS 文档为准。首先将 BTT 存入节点的 TRON 账户,然后将其转入 BTFS 网络的记账系统。

设置钱包密码

为节点钱包设置密码:

btfs wallet password <YOUR_PASSWORD>

将 BTT 存入 BTFS 记账系统

以下命令将 BTT 从本地 BTFS 节点账户转入 BTFS 网络的记账系统。最小转入金额为 10 BTT,单位为 μBTT(1 BTT = 1,000,000 μBTT):

btfs wallet deposit -p <YOUR_PASSWORD> 10000000

步骤 3——上传图片

步骤 3.1——将图片添加到本地节点

准备一个图片文件(本指南使用 coral.jpeg)。使用 reed-Solomon 分块将其添加到本地 BTFS 节点:

btfs add --chunker=reed-solomon coral.jpeg
BTFS add 输出,显示生成的哈希值

输出包含类似 QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw 的哈希值——复制此哈希值以用于下一步。

步骤 3.2——上传到 BTFS 网络

通过哈希上传文件:

btfs storage upload QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw

btfs daemon 窗口显示 File storage successful 时,上传成功。

BTFS daemon 日志,显示文件存储成功

步骤 3.3——验证文件可下载

在浏览器中打开 BTFS 网关 URL:

https://gateway.btfs.io/btfs/QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw

若图片正常显示,则上传完成且可下载。

步骤 4——构建元数据 JSON

创建一个 JSON 文件(本指南使用 coral.json),遵循 TRC-721 元数据结构。将 image 字段设置为刚上传的图片的 BTFS URL:

{
  "name": "Coral #1",
  "description": "A unique TRC-721 collectible.",
  "image": "https://gateway.btfs.io/btfs/QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw",
  "attributes": [
    { "trait_type": "Color", "value": "Pink" },
    { "trait_type": "Rarity", "value": "Rare" }
  ]
}

步骤 5——上传元数据 JSON

以与图片相同的方式将 JSON 上传到 BTFS——btfs add 然后 btfs storage upload——获取元数据文件的哈希值:

上传元数据 JSON 文件到 BTFS

在浏览器中打开元数据 URI 进行确认:

https://gateway.btfs.io/btfs/QmWq4cp588QD8tzrSxvPs2bGikDdKyA35BT3iysBcP1jFD

浏览器应渲染出 JSON 内容。

步骤 6——铸造时将 URI 用作 tokenURI

在已部署的 TRC-721 合约上调用 mintWithTokenURI 时,将步骤 5 中的元数据 URL 作为 tokenURI 参数。完整的铸造流程请参见发行 TRC-721 Token


相关资源