本文介绍了如何使用 Shyft Callback API 追踪特定 NFT 集合的 bids,通过创建和资助 Relayer 钱包、设置 Merkle 树、配置 cNFT 的 gasless minting,并设置 API 来注册回调和监听来自 Shyft 的回调,最后从数据库中检索数据并在前端呈现。文章还提供了详细的代码示例和资源链接,方便开发者参考。
“Gasless(无 Gas)” NFT 铸造是指创建非同质化代币 (NFT) 而无需铸造者承担任何 gas 费用的过程。“Gas” 是指在区块链(如 Solana)上处理交易而支付的费用。
通常,当个人购买(铸造)NFT 时,购买者也负责支付与该活动相关的 gas 或交易费用。但是,当去中心化应用程序 (DApp) 配置为提供无 gas 铸造时,购买者无需支付 gas 费用。通过消除支付创建 NFT 的障碍,这使得大量新用户有可能进入 NFT 领域。
在今天的 #Solana Brainfood 系列中,我们将探索如何利用 Shyft 的 API 来设置无 gas NFT 铸造。 你兴奋吗? 让我们开始吧!
要开始,我们需要准备一些东西。
x-api-key
是一个身份验证参数,它使你可以访问 Shyft API。 你可以从 Shyft 网站获取 你自己的 API 密钥。 只需在此处使用你的电子邮件 ID 注册即可免费获得。 如果你已经拥有 Shyft API 密钥,请跳过此步骤。
我们的教程将分为三个步骤:
NFT_BID
事件的回调。你可以从此 repo 克隆本文的完整源代码。
Shyft 允许你通过 Transaction Relayer 为你的用户无缝地启用无 gas 交易。 它最初创建一个与你的 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 添加到你的钱包。
要开始铸造 NFT,第一步是设置 Merkle 树。 使用 Shyft API 使此过程变得简单。 你可以选择手动调用 Shyft API 或通过提供所需数据来使用 Shyft JS SDK。 在我们的教程中,我们将选择 Shyft JS SDK 以增加便利性。 有关 Merkle 树设置的更多信息,请参阅此 link。
需要提到的一点重要事项是,你需要将 relayer 钱包指定为 Merkle 树的费用支付者和授权者。 从 Shyft API 获得编码的交易后,你必须将其发送到 /sign
API,以允许 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 的函数。 Shyft 提供了一个用于铸造 cNFT 的 API,你可以手动调用该 API 或使用 Shyft JS SDK。 与创建 Merkle 树的上一步类似,你需要将 relayer 钱包指定为铸造交易的费用支付者,并将编码的交易发送到 /sign
API,以使 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);
}
}
到目前为止,一切进展顺利。 我们已经完成了后台的技术工作。 现在,轮到你决定如何在网站上显示信息了。
在我们的指南中,我们提供了一个输入字段,用户可以在其中输入他们想要跟踪的集合,然后他们可以单击搜索按钮。 为了实现这一点,我们使用 Supabase 客户端搜索 Supabase 数据库,找到与所选集合相关的所有出价。 获得这些数据后,我们会在一个表格中显示出价,类似于下图:
const handleSearch = async () => {
try {
if (!collection) return;
setStatus("processing");
const { data } = await supabase
.from("shyft_magic_eden_bid_events")
.select("*")
.eq("nft_collection", collection)
.order("created_at", { ascending: false });
setBids(data as NFTBid[]);
} catch (error) {
console.error(error);
} finally {
setStatus("finised");
}
};
在今天的 #Solana Brainfood 系列中,我们开始了一段旅程,以充分释放 Magic Eden 的潜力,这是一个在 Solana 区块链上运营的繁华市场。 我们的重点完全放在开发人员身上,为他们配备工具和知识,以便借助 Shyft 的回调 API 有效地跟踪此平台上特定集合的出价。
请随意探索提供的存储库中本文的完整 source code,如果你准备好观看它的实际操作,请查看本指南中链接的演示视频。 这证明了像你这样的开发人员在为 NFT 领域创建创新解决方案方面所具有的潜力。
我们衷心希望你喜欢阅读这篇博文! 如果你有任何疑问或想法,请随时访问我们的 Discord 社区。
非常感谢你抽出时间阅读!
- 原文链接: blogs.shyft.to/track-nft...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!