跳至内容
0%

如何在 Solana 上创建 memecoin:分步指南

作者:Uttam Singh

最后更新:2025年12月19日4 分钟阅读
Solana memecoin指南中以猫为主题的memecoin插图

如果你刚接触 Solana,memecoin 是一种低风险的入门方式。这个领域嘈杂又混乱,但这种活跃度会迫使你去接触真实的构建模块,比如 token mint、元数据、钱包和 RPC。而且在这个过程中,你能立刻看到结果。构建一个 memecoin 是理解 Solana 应用在实际环境中如何运作的一条简单路径。

在本教程中,我们将展示在 Solana 上构建 memecoin 的两条实用路径:

  1. 无代码 launchpad(最快的发布方式)
  2. DIY 铸造,使用 Solana 的 SPL 工具链(适合想要完全掌控的开发者)

Solana 上的 memecoin 是什么?

在 Solana 上,memecoin 通常就是一个带有名称、符号、图片和发布计划的标准 SPL 同质化 token。它在技术上没有什么特别之处——钱包、DeFi 应用以及正经的消费级项目都使用同样的 SPL token 机制。

真正让 memecoin 与众不同的是它们被使用的方式。Solana 的低手续费和快速交易让铸造 token、频繁交易以及尝试各种发布方式变得容易,这也是为什么在活跃期,memecoin 在网络上的 token 创建和交易活动中占据很大比重。

对开发者来说,这种活跃度正是重点所在。memecoin 是一种简单、低风险的方式,可以让你学习 Solana 的核心基础组件(SPL token、元数据、钱包和发布流程),而无需先构建一个完整的应用。

你在 Solana 上实际创建的是什么

一个 Solana token 有一个 mint 账户(该 token 的标识符),用户则通过 token 账户(通常是 "Associated Token Account",或 ATA)持有余额。

你需要在以下二者之间做出选择:

  • SPL Token program
  • Token-2022 / Token Extensions,如果你想要内置功能(例如元数据扩展、转账手续费、其他控制项)。

对大多数 memecoin 而言:传统 SPL token 仍然是保证最大钱包/交易所兼容性的最安全默认选择。

方案 A:通过 memecoin launchpad 发布(无代码)

如果你的目标是"尽快让 token 上线并可交易",第三方 launchpad 会为你完成铸造和初始交易体验。在这个方案下,你可以选择多个 launchpad。

Pump.fun

Pump代币创建页面的截图

Pump.fun 的卖点基本上是"无需注入流动性即可即时发布可交易的 token"。一个典型的 Pump.fun 流程大致如下:

  • 为你的 token 选择名称、代码和图片
  • 支付创建费用
  • token 根据平台的机制开始交易

Raydium LaunchLab

Raydium代币页面的截图

Raydium LaunchLab 包含类似的创建 token 流程(你只需添加名称、代码、图片和社交媒体信息)。它们提供两种不同的模式来创建和发布新 token:简化版的 JustSendIt 模式和完全可自定义的 Advanced Mode。Advanced Mode 对 token 参数提供完全的控制,更适合需要特定代币经济模型或更复杂配置的项目。

Bonk.fun

BONK官网的截图

BONK.fun 是另一个在 2025 年获得大量关注的 Solana memecoin launchpad。该平台凭借社区驱动的激励机制和透明度获得了显著的市场份额。

方案 B:使用 SPL 工具链自己创建 token

如果你想绕过这些 launchpad,也可以完全自己创建 memecoin。要做到这一点,你需要经过以下步骤。

创建一个 Solana SPL token

如果你曾经铸造过 SPL token,然后好奇为什么它在钱包中显示为"Unknown token"(或没有图标),原因就在这里:单纯的 SPL mint 本身并不携带丰富的元数据。

在 Solana 上,同质化 token 是通过 SPL Token program 创建的,而那些"好看"的字段(比如名称、符号、图片、JSON URI)通常是通过 Metaplex Token Metadata program 附加上去的。

在本教程中,你将使用以下工具铸造一个 SPL 同质化 token:

  • Umi(Metaplex 的现代客户端框架)用于构建/签名/发送交易
  • mpl-token-metadata 辅助函数,在一个流程中创建 mint 和元数据
  • Alchemy Solana RPC 作为你的网络连接
  • 你现有的 Phantom 钱包 私钥(无需生成新的密钥对)

你在链上实际做了什么

当你运行铸造脚本时,你不只是在"创建一个 token"——你是在创建一小组相互配合的链上账户,让钱包和浏览器知道该如何解读它。

  1. Mint 账户(SPL Token mint):这是定义你的 token 的核心链上账户。当人们谈论 Solana 上的"token 地址"时,他们通常指的就是这个 mint 账户。这是你要粘贴到 Solana Explorer 中的地址。这个账户存储以下内容:

  2. Decimals(精度):token 的可分割程度(例如,8 位小数意味着 1.0 个 token = 100,000,000 个基本单位)。

  3. Mint authority(铸造权限):允许铸造更多供应量的密钥。

  4. Freeze authority(冻结权限,可选):可以冻结 token 账户的密钥。

  5. 元数据账户(Metaplex Token Metadata PDA):SPL Token program 本身不存储名称、符号或图片。这些信息存在于一个由 Metaplex Token Metadata program 创建的独立元数据账户中。这个账户是一个 Program Derived Address(PDA),从你的 mint 地址确定性地派生而来。这意味着钱包不需要注册表或数据库——它们可以从 mint 地址推导出元数据地址,检查它是否存在,如果存在就读取它。这就是 Phantom 之类的钱包能够自动发现并显示 token 元数据的原理。

  6. 链下元数据(URI → JSON):元数据账户并不直接存储所有细节。相反,它存储一个指向链下托管的 JSON 文件的 URI(通常托管在 IPFS 上)。该 JSON 遵循标准模式(name、symbol、description、image),浏览器和钱包知道如何获取并渲染它。这样既能让链上数据保持精简,又能提供丰富的 token 信息。

有了这些背景,下面的代码应该更容易理解:你在创建 mint,为其附加一个元数据账户,并让该元数据指向一个钱包可以读取的 JSON 文件。

现在让我们来构建这个 memecoin。

步骤 1:项目配置(TypeScript + 依赖项)

首先,我们将创建一个新的项目目录并初始化一个 Node.js 项目。这为我们提供了一个干净的工作区和一个用于管理依赖项的 package.json 文件。

bash
Copied
mkdir CATY cd CATY npm init -y npm i -D typescript ts-node @types/node npx tsc --init
  • npm init -y 使用默认设置创建一个基础的 Node 项目。
  • typescript 让我们可以编写带类型的 JavaScript,这在使用 Solana 和 Metaplex SDK 时会很有帮助。
  • ts-node 让我们可以直接运行 TypeScript 文件,无需单独的构建步骤。
  • npx tsc --init 生成一个 tsconfig.json,用于控制 TypeScript 的编译方式。

接下来,更新 tsconfig.json 以启用我们稍后会用到的几个选项:

json
Copied
{ "compilerOptions": { "esModuleInterop": true, "resolveJsonModule": true } }
  • esModuleInterop 让我们可以使用现代导入语法来引用常见的 Node 包。- resolveJsonModule 让我们可以直接导入 .json 文件,在处理 配置和元数据时很有用。

现在我们将安装与 Solana 和 Metaplex 交互所需的库:

bash
Copied
npm i @solana/web3.js@1 \\ @metaplex-foundation/umi \\ @metaplex-foundation/umi-bundle-defaults \\ @metaplex-foundation/mpl-token-metadata \\ bs58 dotenv

以下是每个包的用途:

  • @solana/web3.js 是与 Solana 网络交互的核心 JavaScript SDK。
  • umi 是 Metaplex 的客户端框架,用于构建、签名和发送交易。
  • umi-bundle-defaults 提供常见的默认设置(比如 RPC 处理),这样我们就不需要手动配置一切。
  • mpl-token-metadata 包含用于创建和附加 token 元数据的辅助函数。
  • bs58 用于解码 Phantom 以 base58 编码的私钥。
  • dotenv 让我们可以安全地从 .env 文件加载密钥(RPC URL、私钥)。

最后,我们将创建整个教程中会用到的文件:

bash
Copied
touch mint.ts token.json .env .gitignore
  • mint.ts 将包含创建和铸造 token 的脚本。- token.json 将保存 链下元数据(名称、符号、图片)。- .env 存储敏感值,比如你的 RPC URL 和私钥。- .gitignore 确保密钥永远不会被提交到版本控制中。

我们把以下内容添加到 .gitignore 中:

javascript
Copied
node_modules .env

这可以防止你的依赖项和私钥被意外提交到 Git 中。

步骤 2:在 .env 中添加 Alchemy RPC + Phantom 私钥

Alchemy RPC

Alchemy控制台的截图

Alchemy 为 devnet 和 mainnet 提供快速可靠的 Solana RPC 端点。测试时请使用 devnet。要访问我们的端点,你需要一个(免费的!)API key。你只需要前往我们的控制台,在控制台中启动一个新的 Solana 应用。请确保同时开启 Node API 和 Webhooks 服务,并启用 devnet。然后,把你的 API key 或端点 URL 复制粘贴到 .env 文件中。

Phantom 私钥导出

Phantom 官方的帮助文档展示了查看/复制私钥的确切流程:大致来说,你只需要进入 Settings,然后是 "Manage Accounts",然后是 "Show Private Key",然后是 "Choose network",再点击 continue。

到了这一步后,你就可以设置你的 .env:

json
Copied
SOLANA_RPC_URL=https://solana-devnet.g.alchemy.com/v2/YOUR_ALCHEMY_KEY PHANTOM_PRIVATE_KEY_BASE58=PASTE_FROM_PHANTOM TOKEN_METADATA_URI=

关于安全性的说明:这是一种"脚本中的热钱包"模式。对于 devnet 实验来说这没问题,但对于 mainnet,你应该使用一个专用钱包, 避免把私钥粘贴到随意的项目里。

步骤 3:将图片和元数据上传到 IPFS(Pinata)

仅仅在你的电脑上有一个 token.json 文件是不够的。Solana 程序无法读取本地文件系统中的文件,而把大型元数据直接存储在链上的成本会很高。相反,Token Metadata program 存储的是一个指向公开可访问的 JSON 文件的 URI,该文件托管在链下(通常是 IPFS 上)。钱包和浏览器会使用这个 URI 获取该 JSON,从而显示你 token 的名称、符号和图片。

你可以使用任何 IPFS 服务来完成这项工作。在本教程中我使用的是 Pinata。至于它的工作原理:你上传的文件会得到一个 CID(内容标识符),然后你可以通过一个网关 URL 获取它。Pinata 文档介绍了网关和获取方式。

具体来说,你首先要创建 token.json:

json
Copied
{ "name": "Cat with Hat", "symbol": "CATY", "description": "My Cat with Hat", "image": "https://YOUR_GATEWAY/ipfs/YOUR_IMAGE_CID" }

这里的操作顺序大致是:

  • 上传你的图片 → 复制网关 URL。
  • 把这个 URL 粘贴到 token.json.image 中。
  • 上传更新后的 token.json → 复制该 JSON 的网关 URL。
  • 把这个 JSON URL 放到 .env 中:
json
Copied
TOKEN_METADATA_URI=https://gateway.pinata.cloud/ipfs/<YOUR_TOKEN_JSON_CID>

你可以使用自己的图片或元数据,也可以使用下面的示例图片。

戴帽子的猫,memecoin代币元数据的示例图片

步骤 4:为你的钱包充值 Devnet SOL

铸造和创建账户需要花费 SOL(即使是在 devnet 上也是如此)。好消息是 devnet 的 SOL 是免费的。要获取一些,你可以使用 Solana 官方的 devnet faucet 来领取测试用 SOL。

Solana水龙头的截图

步骤 5:通过 Alchemy RPC 铸造 token(umi + token metadata)

以下是完整的 mint.ts 脚本,其中内置了几个重要细节:

  • 它把 Phantom 的 base58 私钥转换为一个 Solana Keypair(Phantom 导出的私钥可能是 64 字节;有些格式是 32 字节)。
  • 它告诉 Umi 使用你的 Alchemy RPC URL。Umi 的文档提到:你传给 createUmi(...) 的端点就是用于 RPC 调用的端点。
  • 它能正确打印交易签名(base58 格式),这样你的浏览器链接才能正常使用。

把以下内容复制粘贴到你的 mint.ts 中:

typescript
Copied
import "dotenv/config"; import bs58 from "bs58"; import { Keypair } from "@solana/web3.js"; import { mplTokenMetadata, createAndMint, TokenStandard, } from "@metaplex-foundation/mpl-token-metadata"; import { createSignerFromKeypair, generateSigner, percentAmount, signerIdentity, } from "@metaplex-foundation/umi"; import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; const rpcUrl = process.env.SOLANA_RPC_URL!; const pk58 = process.env.PHANTOM_PRIVATE_KEY_BASE58!; if (!rpcUrl) throw new Error("Missing SOLANA_RPC_URL"); if (!pk58) throw new Error("Missing PHANTOM_PRIVATE_KEY_BASE58"); // Umi uses this RPC endpoint for all subsequent RPC calls. [oai_citation:13‡developers.metaplex.com] const umi = createUmi(rpcUrl); // 1) Phantom base58 private key -> Solana Keypair. // Phantom commonly exports a 64-byte secretKey; some tools export 32 bytes. const raw = bs58.decode(pk58); const solanaKeypair = raw.length === 64 ? Keypair.fromSecretKey(raw) : raw.length === 32 ? Keypair.fromSeed(raw) : (() => { throw new Error(`Unexpected key length: ${raw.length}`); })(); // 2) Solana Keypair -> Umi signer + identity. const umiKeypair = umi.eddsa.createKeypairFromSecretKey(solanaKeypair.secretKey); const signer = createSignerFromKeypair(umi, umiKeypair); umi.use(signerIdentity(signer)); // 3) Add Token Metadata program helpers. // Token Metadata attaches data to fungible and non-fungible mints. [oai_citation:14‡GitHub] umi.use(mplTokenMetadata()); // --- token config --- const NAME = "Cat with Hat"; const SYMBOL = "CATY"; const METADATA_URI = process.env.TOKEN_METADATA_URI!; const decimals = 8; const supplyTokens = 1_000_000n; const amountBaseUnits = supplyTokens * 10n ** BigInt(decimals); if (!METADATA_URI) throw new Error("Missing TOKEN_METADATA_URI"); (async () => { // generateSigner creates a new keypair for the mint account. // Your Phantom wallet pays fees and becomes the authority by default. const mint = generateSigner(umi); const res = await createAndMint(umi, { mint, authority: umi.identity, name: NAME, symbol: SYMBOL, uri: METADATA_URI, sellerFeeBasisPoints: percentAmount(0), decimals, amount: amountBaseUnits, tokenOwner: umi.identity.publicKey, tokenStandard: TokenStandard.Fungible, }).sendAndConfirm(umi); // Umi returns signatures as bytes; Explorer expects base58. const sigBase58 = typeof res.signature === "string" ? res.signature : bs58.encode(res.signature); console.log("Mint address:", mint.publicKey.toString()); console.log("Tx:", `https://explorer.solana.com/tx/${sigBase58}?cluster=devnet`); })();

让我们运行这个脚本——脚本成功执行后,memecoin token 就会被铸造出来。输出结果会包含 mint 地址和一个你可以在链上验证的交易链接。

bash
Copied
npx ts-node mint.ts

如果一切顺利,搞定——你刚刚在 Solana 上铸造了你的 memecoin token。

铸造成功响应的截图

步骤 6:在 Solana 浏览器上验证 mint

复制脚本打印出的 Mint 地址,把它粘贴到 Solana Explorer 中。请确保你在 devnet 上进行查看。

🎉 恭喜——你已经铸造出属于你自己的 token(你的 "CATY"),拥有 1,000,000 的固定初始供应量,并且元数据也已经配置完成。

显示该memecoin的Solana Explorer截图

结语

至此,你已经了解了在 Solana 上发布 memecoin 的两条路径。如果你想要最快的路线,像 pump.fun、Raydium LaunchLab 或 BONK.fun 这样的 launchpad 会为你处理大部分配置工作。如果你想要完全的掌控,铸造自己的 SPL token 能让你更深入地理解 Solana token 底层的实际运作方式。

无论哪种方式,你现在都已经具备了随心所欲地创建 memecoin 的能力。如果你想继续深入,可以查看 Alchemy 的 Solana 文档和开发者指南,进一步了解 Solana RPC、钱包和生产就绪的工具链,并探索关于构建 Solana 应用、使用 SPL token 以及处理真实链上流量的教程。

常见问题

Solana 上的 memecoin 是什么?

Solana 上的 memecoin 是一个带有名称、符号、图片和发布计划的标准 SPL 同质化 token。它在技术上没有什么特别之处,钱包、DeFi 应用以及正经的消费级项目都使用同样的 SPL token 机制。

在 Solana 上创建 memecoin 的两种主要方式是什么?

你可以使用像 Pump.fun、Raydium LaunchLab 或 BONK.fun 这样的无代码 launchpad 实现最快速的发布,也可以使用 Solana 的 SPL 工具链自己铸造 token,从而完全掌控整个过程。

创建 memecoin 需要什么钱包?

你需要一个兼容 Solana 的钱包,比如 Phantom、Backpack 或 Solflare,并在其中存入少量 SOL 以支付交易手续费。

在 Solana 上创建 memecoin 需要多少成本?

在 Solana 上创建 token 的成本极低,在 devnet 或 mainnet 上进行基本的 token 铸造和账户创建,手续费通常不到 1 美元(以 SOL 计价)。

SPL Token 和 Token-2022 有什么区别?

SPL Token 是传统的 token program,也是保证最大钱包和交易所兼容性的最安全默认选择。Token-2022(Token Extensions)提供内置功能,比如元数据扩展和转账手续费,但通用支持度可能较低。

我需要为我的 memecoin 添加元数据吗?

需要。元数据(名称、符号、图片、描述)是通过 Metaplex Token Metadata program 存储的,通常托管在链下的 IPFS 上。这让钱包和浏览器能够显示你的 token 信息,而不是显示为 "Unknown token"。

Umi 是什么?为什么它被用于铸造 token?

Umi 是 Metaplex 的现代客户端框架,用于在 Solana 上构建、签名和发送交易。它简化了在一个流程中创建 token 并附加元数据的过程。

铸造 memecoin 时会创建哪些账户?

你会创建一个 mint 账户(token 的核心标识符,存储精度和权限信息)、一个元数据账户(一个存储名称、符号和 URI 的 PDA),以及链下元数据(一个存储在 IPFS 上、包含详细 token 信息的 JSON 文件)。

我可以在发布到 mainnet 之前先测试 token 创建吗?

可以,你可以使用 Solana devnet 进行测试。你可以从 Solana 官方的 devnet faucet 免费获取 devnet SOL,以覆盖实验过程中的交易成本。

Alchemy 新闻通讯

第一时间获取发布信息

订阅我们的新闻通讯

获取 Alchemy 的最新产品更新和资源

A
O
D
+
超过 80,000 名订阅者

填写您的电子邮箱地址即表示您同意接收我们的营销通讯和产品更新。您确认 Alchemy 按照我们的隐私声明处理我们收到的信息。您可以随时取消订阅。