本文讨论了如何在Solana区块链上创建和监控代币,介绍了Solana程序库(SPL)的标准和Token Metadata Program。通过设置Webhook,用户可以实时获取新铸造代币的信息,以及如何使用API检索代币的元数据。
6 分钟阅读
2024年4月2日
最近,Solana 的 memecoins 引起了关注,$WIF 超过 35 亿美元,而 Boden 达到 3 亿美元。Popcat 和 Wen 最近也超过了 3.5 亿美元的标志。Slerf 在其首日交易量方面也超过了所有基于以太坊的交易所。在 BONK 的暴涨 之后,Solana 看到创造新代币的数量空前增加。根据 Solscan 数据,过去三个月,通过 Solana Program Library (SPL) 标准铸造的新代币数量增加了两倍。
本文探讨了如何在 Solana 上创建代币,什么是 SPL 代币,以及如何使用 Helius 监视新代币并检索其元数据。
Solana 支持本地 SOL 和其他代币。Solana Program Library (SPL) 定义了在 Solana 上的可替代代币和非可替代代币(NFT)的通用标准。与以太坊不同,以太坊针对各种类型的非可替代( ERC-721)和可替代代币( ERC-20)制定了不同的标准,而 Solana Program Library 对不同代币类型没有单独指定的标准。
在 Solana 上,可替代和非可替代代币(NFT)的标准实现是 Token Program。它提供创建新代币类型和账户、转移和销毁代币等功能,更多功能。Token 程序是 完整的,没有计划增加新功能。可能会有变更来修复重要/关键的错误。
然而,Token 程序是有限的——开发者必须进行分叉以添加新功能,这使得交易更加复杂和风险。为了解决这个问题,Solana 介绍了 Token-2022,提供了一套额外功能和增强,包括:
要了解有关 Token-2022 的更多信息,请参考这篇 文章。
Solana 的 Token 程序允许我们创建铸造账户和代币账户。铸造账户包含有关代币的全局信息,而代币账户存储钱包与铸造账户之间的关系。你可以使用以下 代码或 spl-token-cli 创建代币。例如,在命令行中运行此命令以创建可替代代币,前提是已安装 spl-token-cli:
代码
spl-token create-token
铸造账户包含某些数据属性,例如当前代币供应量。但是,它们缺乏标准化的数据,例如名称和符号。为了解决这个问题,Metaplex 引入了 Token Metadata Program。该程序允许使用从铸造地址派生的 PDAs (Program Derived Addresses) 将其他数据附加到可替代和非可替代代币。
Token Metadata program 最初旨在简化在 Solana 上创建 NFT 的过程。然而,它也适用于 SFTs,即半可替代代币。SFTs 结合了可替代和非可替代代币的特性。它们最初表现得像可替代代币,这意味着它们可以与相同的代币进行交换,而不会对任何一方造成价值损失。使用后,它们失去了交换价值,获得了可收藏的非可替代代币的属性。SFTs 作为一个独特的账户类型进行操作,该类型附加了元数据以表示游戏或元宇宙环境中的特征。由于其效率、成本效益、灵活性和改进的交易安全性,SFTs 在某些上下文中优于 NFT。
代币元数据程序还支持 可编程 NFT (pNFTs)。该新资产标准允许创作者在特定操作上定义自定义规则,并更细致地委托给第三方机构。pNFT 的代币账户在 SPL 代币程序上始终被冻结,无论 pNFT 是否被委托。这确保没有人可以通过直接与 SPL Token 程序交互来绕过代币元数据程序。
为了监视新铸造的代币,我们将设置一个 webhook。Webhook 允许你监听链上事件,并在这些事件发生时触发特定操作。我们将配置我们的 webhook 以监听来自 Token Metadata Program 的 TOKEN_MINT
交易类型。目前支持该交易类型的来源有 (其他来源将标记为 “ UNKNOWN
”):
代码
"TOKEN_MINT": [ "CANDY_MACHINE_V1", "ATADIA", "SOLANA_PROGRAM_LIBRARY" ]
Webhook 可以通过 Helius Dashboard 创建,或使用 API 参考 编码创建。要通过 Dashboard 创建一个,请转到左侧面板中的 Webhooks 部分并点击 New Webhook。然后,通过提供详细信息来配置 webhook,例如:
TOKEN_MINT
以监听新铸造的代币。你可以在 这里 找到计算机程序支持的其他交易类型。metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s
。对于其他情况,如果需要,可以添加多个账户地址。如果你希望听到交易中特定用户的消息,可以包含他们的地址。确认后,你的 webhook 就可以使用了,你可以根据你的 Webhook URL 构建适当的前端。在这里,我们选择 Discord 作为 Webhook 类型并提供了 Discord 机器人的 Webhook URL,因此我们不需要编写 Discord 机器人代码。我们将收到如下通知:
你可以使用代币 ID(代币的铸造地址)来获取特定代币的元数据。解析通过 增强 webhook 发送的 JSON 通知(当 webhook 类型设置为增强时)。铸造地址可以在 transferTokens 数组的第一个对象中的 "mint" 字段中找到。一旦你有了代币 ID,就可以使用 getAsset 方法,该方法由 DAS API 提供,以检索有关代币的更多信息。
例如,你可以使用 getAsset 方法获取 Jito Staked SOL (JitoSOL) 的信息:
代码
const url = `https://mainnet.helius-rpc.com/?api-key=<api_key>`
const getAsset = async () => {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 'my-id',
method: 'getAsset',
params: {
id: 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn',
displayOptions: {
showFungible: true //返回有关可替代代币的详细信息
}
},
}),
});
const { result } = await response.json();
console.log("资产:", result);
};
getAsset();
你可以在我们的 文档 中找到更多示例以及该方法的请求和响应的完整架构。
在本文中,我们了解了如何在 Solana 上创建代币,什么是 SPL 代币,以及如何通过设置 webhook 和通过 Helius 获取它们的元数据来监控新代币。如果你需要任何帮助或支持,请随时通过 Discord 与我们联系!
请确保在下方输入你的电子邮箱地址,以便你不错过有关 Solana 新动态的更新。准备深入了解吗?今天就探索 Helius 博客 上的最新文章,继续你的 Solana 之旅。
- 原文链接: helius.dev/blog/how-to-f...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!