使用 @solana/web3.js 为 Solana Token 添加元数据

11

我正在尝试使用web3.js和spl-token.js创建NFT。

然而,我需要添加元数据(例如代币名称或其他属性),否则它在我的钱包中将仅显示为“未知代币”。

这是我正在铸造代币的相关代码部分:

let mint = await splToken.Token.createMint(
    connection,
    fromWallet,
    fromWallet.publicKey,
    null,
    0,
    splToken.TOKEN_PROGRAM_ID
);
否则,代码与此问题的答案相似:我想在Solana上铸造新代币。如何使用solana-web3.js做到这一点? 除了元数据结构(我在这里找到了: https://docs.phantom.app/integrating/tokens/on-chain-metadata),似乎没有任何文档。
如果有人能给出一个示例或文档指导我方向就真的非常感激了。谢谢!

1
嗨@Ood,你找到解决方法了吗?我也在尝试弄清楚同样的事情,可我在互联网上找不到任何信息。如果你能让我知道你是如何解决的,那就太棒了!非常感谢,谢谢 :) - John Lim
1
很遗憾,不是这样的。我们因此将我们的项目转移到了以太坊。 - Ood
我有点明白了,但仍然不理解为什么在元数据中看不到创建者。 令牌:[https://solscan.io/token/EsEeQE2wet3bgX6Wi6q7dwNExbYNkHV2j9ZT9wiV5r5U?cluster=devnet#metadata] - Ankit Wadhwana
1
我在Solana Stack Exchange上提问了:https://solana.stackexchange.com/questions/5524/how-do-i-mint-an-spl-token-with-custom-metadata-using-solana-web3-js-and-solan - mikemaccana
2个回答

5
为了向NFT添加元数据,您需要调用该程序。你可以在这里找到文档
PS:上面的示例是用Rust编写的。使用JavaScript执行操作如下:
import { Metaplex, keypairIdentity } from "@metaplex-foundation/js";
const metaplex = new Metaplex(connection);
metaplex.use(keypairIdentity(keypair));
const mintNFTResponse = await metaplex.nfts().create({
  uri: "https://ffaaqinzhkt4ukhbohixfliubnvpjgyedi3f2iccrq4efh3s.arweave.net/KUAIIbk6p8oo4XHRcq0U__C2r0mwQaNl0gQow4Qp9yk",
  maxSupply: 1,
});

就像这里描述的那样,这是另一个例子


2
相当新的Solana。 有JS如何做的示例吗? - Jareth
我投了赞成票,但在点击链接后意识到它实际上并没有回答问题 - 它是用 Rust 而不是 JS 写的。 - mikemaccana
@olllejik,你的例子使用了Metaplex,但问题是关于如何使用web3.js和spl-token.js。 - mikemaccana
@mikemaccana 如果没有Metaplex,你就无法在JavaScript上完成它。为此,您需要在Rust上编写自己的合约或使用除Metaplex之外的其他现有合约。 - olllejik
@mikemaccana,你发给我的链接正好解释了我所说的。在JS中,他们使用metaplex库向NFT添加元数据。而spl-token库仅用于铸造。 - olllejik
显示剩余2条评论

0
创建Solana中NFT代币的元数据相当复杂。这是因为在Solana中,SPL-token账户不会携带元数据。相反,您必须创建另一个账户来携带此类数据。因此,我建议您使用Metaplex的Candy Machine来制作自己带有元数据的NFT。您可以从他们的Github获取更多信息: https://github.com/metaplex-foundation/metaplex/

谢谢你的回答。我知道糖果机,但对于这个项目来说不够,因为我们想要能够更新元数据。 - Ood
如果您想分享更多信息,我会尽力提供帮助。您的意思是在NFT铸造后更新元数据吗? - CK Chan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接