上传metadata到IPFS
每个代币都需要一个metadata的TOKEN_URI
,可以在IPFS、Arweave等web3存储服务商保存元数据,这里介绍如何使用thirdweb
来将图片和metadata的json文件上传到IPFS。
一般的元数据格式为:
{
"name": "TOKEN_NAME",
"symbol": "TOKEN_SYMBOL",
"image": "IMAGE_URI",
"description": "TOKEN_DESCRIPTION"
}
在metadata.json
文件中,必须要有:name、symbol、image、description,其他的可选。
复杂一些的元数据中还包括了创建者信息,社交信息等,如下:
{
"name": "TOKEN_NAME",
"symbol": "TOKEN_SYMBOL",
"image": "IMAGE_URI",
"description": "TOKEN_DESCRIPTION"
"creator": {
"name": "TOKEN_CREATOR_NAME",
"site": "TOKEN_CREATOR_SITE"
},
"extensions": {
"website": "TOKEN_WEBSITE",
"twitter": "TOKEN_TWITTER",
"telegram": "TOKEN_TELEGRAM",
"discord": "TOKEN_DISCORD"
}
}
元数据不是链上保存的。
上传元数据至IPFS至少要分两个步骤:
- 1- 上传图片,获得
IMAGE_URI
; - 2- 组装成
metadata.json
文件,上传metadata.json
,获得TOKEN_URI
;
可使用thirdweb上传文件到IPFS,使用命令行:
npx thirdweb upload <path file> -k <secret key>
其中secret key
需要在thirdweb上免费生成。
举例:
下载一个图片文件,执行上述命令,上传到IPFS并得到IPFS的cid:ipfs://QmanqoqeqGPrrv5V6VkMgHxEJU2PMEZfjsyKcRgAQMUS13
组装一个metadata.json文件:
{
"name": "Solana test token",
"symbol": "STT",
"image": "https://ipfs.io/ipfs/QmanqoqeqGPrrv5V6VkMgHxEJU2PMEZfjsyKcRgAQMUS13",
"description": "This is a test spl token"
}
将该json文件上传到IPFS,得到cid: QmbYtkDmQdtzKHUV4WYKysGNX3E36xdF8uD3g6fAPQsSgd
注意:
Solana生态中的浏览器和钱包,绝大多数只支持https
,所以不能使用ipfs://
作为开头,而需要加上一个可靠的Gateway,转换成https://
。