如何在 Solana 上设置 Gasless cNFT Minting

  • Shyft_to
  • 发布于 2023-10-28 22:14
  • 阅读 7

本文介绍了如何使用 Shyft API 在 Solana 上设置 Gasless cNFT minting。通过创建和资助 Relayer 钱包,设置 Merkle 树,并配置 gasless minting,用户可以在无需支付 gas 费的情况下 mint NFT。文章提供了详细的代码示例和步骤,并分享了相关的资源链接。

在本文中,我们将探讨如何使用 Shyft API 在 Solana 上设置 gasless cNFT 铸造。

在 solana 上设置 gasless cNFT 铸造 — 封面

Gasless NFT 铸造是指创建非同质化代币 (NFT) 的过程,而铸造者无需支付任何 gas 费用。Gas 是指在 Solana 等区块链上处理交易需要支付的费用

通常,当个人购买(铸造)NFT 时,购买者还负责支付与该活动相关的 gas 或交易费用。但是,当去中心化应用程序 (dApp) 配置为提供 gasless 铸造时,购买者无需支付 gas 费用。这使得大量新用户可以通过消除创建 NFT 的支付障碍进入 NFT 领域成为可能。

在今天的 #Solana Brainfood 系列中,我们将探讨如何利用 Shyft 的 API 来设置 gasless 压缩 NFT (cNFT) 铸造。你兴奋吗?让我们开始吧!

开始之前

要开始,我们需要准备一些东西。

注册你的 Shyft 帐户并获取你自己的 Shyft API 密钥。

x-api-key 是一个身份验证参数,可让你访问 Shyft API你可以从 Shyft 网站获取你自己的 API密钥。 只需在此处使用你的电子邮件 ID 注册即可免费获得。如果你已经有 Shyft API 密钥,请跳过此步骤。

我们的教程将分为三个步骤

  • 创建并资助 Relayer 钱包。
  • 设置 Merkle 树。
  • 配置 cNFT 的 gasless 铸造。

你可以从此 repo 克隆本文的完整源代码。

创建并资助 Relayer 钱包。

Shyft 允许你通过 Transaction Relayer 无缝地为你的用户启用 gas-less 交易。它最初创建一个与你的 Shyft API 密钥相关联的托管钱包。创建后,它会提供与你的 SHYFT API 密钥关联的钱包地址。在构建交易时,你必须使用此钱包地址作为 fee_payer。之后,你可以将需要签名的交易发送到 relayer 的签名端点。Relayer 将访问连接到你的 API 密钥的凭据,对交易进行签名,并将其提交到区块链。

要创建 relayer 钱包,你可以调用 Shyft 的 API 并提供所需的数据。有关回调 API 的更多详细信息,你可以参考此 link 上的信息。

const result = await fetch("https://api.shyft.to/sol/v1/txn_relayer/create", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": process.env.SHYFT_API_KEY,
  },
});

const response = await result.json();

结果将如下所示:

{
    "success": true,
    "message": "A wallet bound with your API Key",
    "result": {
        "wallet": "ADCDZvxXpB3zv88pg84QM4SbL6f45KkN61hgmxKJcP8H"
    }
}

创建 relayer 钱包后,我们将使用它作为铸造和其他交易的费用支付者,因此需要用一些 SOL 来资助它。在 Devnet 中,你可以使用此 site 将 SOL 添加到你的钱包,或者你可以将 SHYFT 的 send SOL API endpoint 用于主网。

设置 Merkle 树。

要开始铸造 NFT,第一步是设置 Merkle 树。使用 Shyft API 可以使此过程变得简单。你可以选择手动调用 Shyft API 或通过提供所需的数据来使用 Shyft JS SDK。在我们的教程中,我们将选择 Shyft JS SDK 以增加便利性。有关 Merkle 树设置的更多信息,请参阅此 link

需要提到的一点是,你需要将 relayer 钱包指定为 Merkle 树的费用支付者和权限。从 Shyft API 获取编码后的交易后,你必须将其发送到 /sign 端点,以允许 Relayer 处理你的交易。

async function createMerkleTree() {
  const result = await shyft.nft.compressed.createMerkleTree({
    network: Network.Devnet,
    // 使用 relayer 钱包作为权限
    walletAddress: process.env.NEXT_PUBLIC_RELAYER_WALLET!,
    maxDepthSizePair: {
      maxDepth: 14,
      maxBufferSize: 64,
    },
    canopyDepth: 10,
    // 使用 relayer 钱包作为费用支付者
    feePayer: process.env.NEXT_PUBLIC_RELAYER_WALLET!,
  });

  console.log(result);

  // 将需要在 relayer 的 `sign` 端点上签名的交易发送给它。
  // Relayer 将检索与你的 API 密钥关联的凭据,对交易进行签名并将其发送到区块链。
  const response = await fetch("https://api.shyft.to/sol/v1/txn_relayer/sign", {
    method: "POST",
    body: JSON.stringify({
      network: "devnet",
      encoded_transaction: result.encoded_transaction,
    }),
    headers: {
      "Content-Type": "application/json",
      "x-api-key": process.env.SHYFT_API_KEY!,
    },
  });
  const data = await response.json();
  console.log(data);
}

配置 cNFT 的 gasless 铸造。

到目前为止,一切都在按部就班地进行。现在,我们可以继续编写用于铸造 cNFT 的函数。Shyft 提供了一个用于铸造 cNFT 的 API,你可以手动调用或使用 Shyft JS SDK。与之前创建 Merkle 树的步骤类似,你需要将 relayer 钱包指定为铸造交易的费用支付者,并将编码后的交易发送到 /sign 端点,以使 Relayer 能够处理你的交易。有关 cNFT 铸造 API 的更多信息,请参阅此 link

const shyft = new ShyftSdk({
  apiKey: process.env.SHYFT_API_KEY,
  network: Network.Devnet,
});

function handleMint(receiver: string){
  try {
    const result = await shyft.nft.compressed.mint({
      creatorWallet: process.env.NEXT_PUBLIC_RELAYER_WALLET!,
      metadataUri: process.env.NEXT_PUBLIC_NFT_METADATA!,
      // 上一步中创建的 Merkle 树地址。
      merkleTree: process.env.NEXT_PUBLIC_MERKLE_TREE!,
      receiver,
      // 使用 relayer 钱包作为费用支付者
      feePayer: process.env.NEXT_PUBLIC_RELAYER_WALLET!,
    });

    // 将需要在 relayer 的 `sign` 端点上签名的交易发送给它。
    // Relayer 将检索与你的 API 密钥关联的凭据,对交易进行签名并将其发送到区块链。
    const response = await fetch(
      "https://api.shyft.to/sol/v1/txn_relayer/sign",
      {
        method: "POST",
        body: JSON.stringify({
          network: "devnet",
          encoded_transaction: result.encoded_transaction,
        }),
        headers: {
          "Content-Type": "application/json",
          "x-api-key": process.env.SHYFT_API_KEY!,
        },
      }
    );
    const data = await response.json();
    return data.result.tx;
  } catch (error: any) {
    console.error(error);
  }
}

结论

就这样。我们刚刚完成了使用 Shyft API 在 Solana 上设置 gasless NFT 铸造的过程。只需三个简单的步骤,你就可以创建一个 gasless NFT 铸造 DApp,允许用户在不支付任何 gas 费用的情况下铸造 NFT。

如果你觉得这篇文章有帮助,请随时浏览我们的其他文章,例如 Track NFT Bid of a Collection on MagicEdenHow to track NFT Collection holders on Solana。你还可以在我们的 GitHub 存储库 here 中访问上述项目。

非常感谢你抽出时间阅读本文,我们衷心希望你喜欢使用 SHYFT 进行构建。

资源

  • 原文链接: blogs.shyft.to/how-to-se...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Shyft_to
Shyft_to
在 Solana上更快更智能地构建,使用Shyft的SuperIndexer、gRPC、RPC、API和SDK