You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2022年如何注册Solana Fungible Token?求现有代币注册示例

如何注册Solana Fungible Token(FT)

自2022年6月20日起,Solana代币列表规则已更新,要让代币被正确识别为可 Fungible Token(而非NFT),需完成创建合规SPL Token+绑定标准元数据两个核心步骤,以下是具体方案及修正后的代码示例:

问题排查

你遇到的问题原因如下:

  1. 第三方工具创建的代币被识别为NFT:这类工具默认创建的是供应量为1的SPL Token(即NFT),FT需要设置大于1的供应量及正确的小数位数(decimals)。
  2. Metaplex代码错误:
    • uri字段需为元数据JSON文件的URL字符串,而非直接嵌入JSON对象
    • metadata参数应为元数据账户的PDA地址(需通过findMetadataPda生成),而非URL

正确注册流程

  1. 创建符合SPL Token标准的FT(设置合理的供应量与小数位数)
  2. 上传标准格式的元数据JSON到Arweave/IPFS
  3. 使用Metaplex的mpl-token-metadata创建元数据账户
  4. (可选)提交至Solana官方代币列表

完整代码示例

依赖安装

npm install @solana/web3.js @metaplex-foundation/mpl-token-metadata @solana/spl-token

实现代码

import { Connection, Keypair, Transaction, sendAndConfirmTransaction } from '@solana/web3.js';
import { createCreateMetadataAccountV2Instruction, findMetadataPda } from '@metaplex-foundation/mpl-token-metadata';
import { createMint, mintTo, getOrCreateAssociatedTokenAccount } from '@solana/spl-token';

// 初始化连接(测试网替换为https://api.devnet.solana.com)
const connection = new Connection('https://api.mainnet-beta.solana.com', 'confirmed');
// 替换为你的钱包密钥
const payer = Keypair.fromSecretKey(Uint8Array.from([/* 你的私钥数组 */]));

// 1. 创建FT的Mint账户
const mintKeypair = Keypair.generate();
const decimals = 9; // 推荐与SOL保持一致,可按需调整
const mint = await createMint(
  connection,
  payer,
  payer.publicKey, // Mint权限账户
  null, // 冻结权限(可选)
  decimals
);

// 2. 铸造代币到关联账户(测试用,可跳过)
const associatedTokenAccount = await getOrCreateAssociatedTokenAccount(
  connection,
  payer,
  mint,
  payer.publicKey
);
// 铸造10亿枚代币(对应decimals=9,实际为10亿 * 10^9最小单位)
await mintTo(
  connection,
  payer,
  mint,
  associatedTokenAccount.address,
  payer,
  1_000_000_000 * Math.pow(10, decimals)
);

// 3. 准备元数据JSON并上传(示例JSON如下,上传到Arweave/IPFS后获取URL)
/*
上传的元数据JSON示例:
{
  "name": "EUR demo-stablecoin",
  "symbol": "EURX",
  "description": "Fully for testing purposes only",
  "image": "https://raw.githubusercontent.com/.../logo.png",
  "attributes": [],
  "properties": {
    "files": [{"uri": "https://raw.githubusercontent.com/.../logo.png", "type": "image/png"}],
    "category": "currency"
  }
}
*/
const metadataUri = "https://arweave.net/xxx..."; // 替换为你上传后的URL

// 4. 创建元数据账户
const metadataPda = findMetadataPda(mint);
const tokenMetadata = {
  name: 'EUR demo-stablecoin',
  symbol: 'EURX',
  uri: metadataUri,
  sellerFeeBasisPoints: 0,
  creators: null,
  collection: null,
  uses: null,
};

const transaction = new Transaction().add(
  createCreateMetadataAccountV2Instruction(
    {
      metadata: metadataPda,
      mint: mint,
      mintAuthority: payer.publicKey,
      payer: payer.publicKey,
      updateAuthority: payer.publicKey,
    },
    {
      createMetadataAccountArgsV2: {
        data: tokenMetadata,
        isMutable: true,
      },
    }
  )
);

// 发送并确认交易
const signature = await sendAndConfirmTransaction(
  connection,
  transaction,
  [payer, mintKeypair]
);
console.log("元数据账户创建完成,交易签名:", signature);

额外说明

  • 元数据JSON的properties.category需设为currency或token,确保钱包与区块浏览器正确识别为FT
  • 完成上述步骤后,Solscan会自动抓取元数据,若未立即显示,可等待1-2小时或检查元数据URL是否可访问
  • 若要进入Solana官方代币列表,需在对应GitHub仓库提交PR,符合仓库的审核规范

内容的提问来源于stack exchange,提问作者Alexandr Kazakov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:27:13