在 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
输出包含类似 QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw 的哈希值——复制此哈希值以用于下一步。
步骤 3.2——上传到 BTFS 网络
通过哈希上传文件:
btfs storage upload QmUK9nwtLEiHBJ48HAZHNmSQ53U6ADbRhATxs2tomadwKw当 btfs daemon 窗口显示 File storage successful 时,上传成功。
步骤 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——获取元数据文件的哈希值:
在浏览器中打开元数据 URI 进行确认:
https://gateway.btfs.io/btfs/QmWq4cp588QD8tzrSxvPs2bGikDdKyA35BT3iysBcP1jFD
浏览器应渲染出 JSON 内容。
步骤 6——铸造时将 URI 用作 tokenURI
tokenURI在已部署的 TRC-721 合约上调用 mintWithTokenURI 时,将步骤 5 中的元数据 URL 作为 tokenURI 参数。完整的铸造流程请参见发行 TRC-721 Token。
相关资源
- TRC-721 —— 标准概览
- TRC-721 协议接口 —— TRC-721 函数与事件参考
- 发行 TRC-721 Token —— 部署和铸造演练
Updated 26 days ago