Skip to content

插入项目

作者 崔棉大师 X:@MasterCui Youtube: 崔棉大师

知识点

到目前为止,我们已经学会了如何创建和配置糖果机,但我们还没有看到如何在其中插入可以铸造成 NFT 的物品。因此,让我们在这个页面上解决这个问题。

重要的是要记住,插入物品仅适用于使用配置行设置configLineSettings的糖果机。这是因为使用隐藏设置hiddenSettings从糖果机铸造的 NFT 都将共享相同的隐藏名称和 URI。

课程

1.上传 JSON 元数据

要将物品放入糖果机,您需要为每个物品提供以下两个参数:

  • name:此 NFT Item 的名称。如果在配置行设置中提供了名称前缀,则您只能提供该前缀后面的名称部分。
  • URI:此 NFT Item 的 JSON 元数据的 URI。这里也排除了配置行设置中可能提供的 URI 前缀。

如果您还没有准备好 NFT 的 URI,则首先需要逐个上传其 JSON 元数据。这可以使用链下解决方案(例如 AWS 或您自己的服务器)或链上解决方案(例如 Arweave 或 IPFS)。

幸运的是,我们的 SDK 可以帮助您实现这一点。它们允许您上传 JSON 对象并检索其 URI。

完整代码

js
import { createGenericFile } from "@metaplex-foundation/umi";
import { irysUploader } from "@metaplex-foundation/umi-uploader-irys";

// 加载irysUploader
umi.use(irysUploader());
// 读取图像文件
const fileBuffer = fs.readFileSync(path.join("docs/public", "Whaler_logo.gif"));
const file = createGenericFile(fileBuffer, "Whaler_logo.gif", {
  contentType: "image/gif",
});
// 获取图像价格
const uploadPrice = await umi.uploader.getUploadPrice([file]);
// 上传图像
const [imageUri] = await umi.uploader.upload([file]);
// 上传json
const uri = await umi.uploader.uploadJson({
  name: "My NFT #1",
  description: "My description",
  image: imageUri,
});

2.插入项目

现在我们有了所有物品的名称和 URI,我们需要做的就是将它们插入我们的 Candy Machine 帐户。

这是流程中的重要部分,当使用配置行设置configLineSettings时,只有在插入所有项目后才允许铸造。

请注意,每个插入项目的名称和 URI 分别受配置行设置的名称长度和 URI 长度属性的约束。

完整代码

js
// 插入项目
await addConfigLines(umi, {
  candyMachine: candyMachine.publicKey,
  index: candyMachine.itemsLoaded,
  configLines: [
    { name: "My NFT #1", uri: "https://example.com/nft1.json" },
    { name: "My NFT #2", uri: "https://example.com/nft2.json" },
  ],
}).sendAndConfirm(umi);