GTokenTool全网最好的代币发行工具平台
当前位置:首页 >> solana教程 >> 什么是 Solana SPL 代币扩展以及如何开始?

什么是 Solana SPL 代币扩展以及如何开始?

admin solana教程 129

介绍

什么是 Solana SPL 代币扩展以及如何开始?

Solana Labs 发布了原生 SPL 代币程序的扩展 Token-2022。Token 2022 是一项新标准,它扩展了 SPL 代币程序并通过代币扩展添加了其他功能。Token-2022 程序旨在成为一种更灵活、更可扩展的代币标准,允许开发人员实现更复杂的代币经济学和控制。

Mint 扩展目前包括:

特征描述
转让费与转移代币相关的费用(或税金)。
闭幕式允许终止空的铸币账户。
有利息的代币随着时间的推移会累积利息的代币。
不可转让的代币代币一旦发行就无法转让(又名灵魂绑定代币)。
常驻代表该机构对该铸币厂的任何账户拥有无限的委托权限,这意味着它可以销毁或转移任意数量的代币。
转运钩与令牌指令交互所需的程序(例如,特许权使用费执行)
元数据指针指向包含铸币厂信息的元数据帐户的指针。
元数据存储有关铸币厂的信息,例如名称、符号和徽标(或其他自定义字段)。
(尚未上线)机密传输允许传输加密金额的代币。

帐户扩展目前包括:

特征描述
转账时需要备注所有转入的资金都必须附有票据(类似于银行账户)。
不可变所有权一旦设置锁定帐户所有权则无法更改。
默认帐户状态适用于该帐户的预设条件。
CPI 卫士禁止跨程序调用中的某些操作

需要注意的是,关联 Token 程序保持不变,这意味着它可以与原始 Token 程序和 Token-2022 程序一起使用。但是,使用现有的方法、程序和说明将需要您将Token-2022程序 ID 作为programId参数传递。例如,让我们看看getAssociatedTokenAddressSync来自@solana/spl-token库的内容:

/**
* Get the address of the associated token account for a given mint and owner
*
* @param mint                     Token mint account
* @param owner                    Owner of the new account
* @param allowOwnerOffCurve       Allow the owner account to be a PDA (Program Derived Address)
* @param programId                SPL Token program account
* @param associatedTokenProgramId SPL Associated Token program account
*
* @return Address of the associated token account
*/
export function getAssociatedTokenAddressSync(
   mint: PublicKey,
   owner: PublicKey,
   allowOwnerOffCurve = false,
   programId = TOKEN_PROGRAM_ID,
   associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID
): PublicKey {
   if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();

   const [address] = PublicKey.findProgramAddressSync(
       [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],
       associatedTokenProgramId
   );

   return address;
}
用于简化调试的日志

您现在可以访问 RPC 端点的日志,从而帮助您更有效地解决问题。如果您在 RPC 调用中遇到问题,只需检查 QuickNode 仪表板中的日志即可快速识别和解决问题。

如上所示,该getAssociatedTokenAddressSync函数接受一个programId默认为原始 Token 程序 ID 的参数(对于许多 SPL 令牌方法来说,这很常见)。要使用 Token-2022 程序,您必须传入 Token-2022 程序 ID 作为programId参数。下面的示例显示了原始 Token 程序和 Token-2022 程序的 ata 地址的派生:

import { TOKEN_2022_PROGRAM_ID, getAssociatedTokenAddressSync } from "@solana/spl-token";
// ...
const mint: PublicKey = new PublicKey(SOME_TOKEN_MINT); // a mint of a token created with the original standard
const mint2022: PublicKey = new PublicKey(SOME_TOKEN_MINT_2022); // a mint of a token created with the Token-2022 standard
const ataOld = getAssociatedTokenAddressSync(mint, owner, false);
const ata2022 = getAssociatedTokenAddressSync(mint2022, owner, false, TOKEN_2022_PROGRAM_ID); // 👈 pass in the Token-2022 program ID

请注意,对于mint2022,我们必须传递TOKEN_2022_PROGRAM_ID(TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb)作为programId参数。

如有不明白或者不清楚的地方,请加入官方电报群:https://t.me/gtokentool
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐