我已成功FungibleCommon
在 Hedera Token Service (HTS) 上创建了令牌,并且能够memo
毫无问题地设置字段。但是,当我尝试设置令牌的元数据时,memo
创建令牌时该字段始终显示为空。
我没有看到任何错误输出,因此这似乎是悄无声息地失败了。
是什么原因造成的?
我使用的是最新的 SDK,终端中没有出现任何错误。我目前正在尝试这样做:
const metadata = {
"name": "My token name",
"image": "http://path-to-my-image"
}
async function createFungibleToken() {
let tokenCreateTx = await new TokenCreateTransaction()
.setTokenName("Test")
.setTokenSymbol("TEST")
.setMetadata(metadata) // <--- HERE
.setTokenType(TokenType.FungibleCommon)
.setDecimals(2)
.setInitialSupply(10000)
.freezeWith(client);
let tokenCreateSign = await tokenCreateTx.sign(privKey);
let tokenCreateSubmit = await tokenCreateSign.execute(client);
let tokenCreateRx = await tokenCreateSubmit.getReceipt(client);
let tokenId = tokenCreateRx.tokenId;
console.log(`Created token with ID: ${tokenId}`);
}
是否有特定的方法来构造元数据?我在这个过程中遗漏了什么?
这很可能与您构建元数据的方式有关。如果您要创建可替代代币,请确保您的元数据遵循 HIP-405 中指定的准则。此标准概述了可替代代币元数据的正确结构,以确保它在各个平台上都能被正确识别和显示。
因此你的元数据应该结构如下:
按照此标准,您可以创建一个简单的metadata.json文件,如下所示:
然后使用 Pinata 或 web3.storage 等服务将此文件上传到 IPFS。上传后,您将收到一个 CID(例如 Qm7tgf6t8...)。此 CID 将用于在代币创建交易中引用您的元数据。获得 IPFS CID 后,您可以在代币创建逻辑中使用它,如下所示:
确保将“您的 IPFS CID”替换为从 IPFS 获取的实际 CID。另外请注意,虽然在创建令牌期间可以选择使用元数据密钥,但如果未指定密钥,则元数据将不可变,因此您以后将无法修改或添加它。