---
title: "如何在 Solana 上创建 memecoin：分步指南"
description: "了解如何通过 launchpad 或自行开发在 Solana 上创建 memecoin。"
---

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

<ImageBlock
  src="https://media.alchemy.com/1766155069-memecoins-on-solana.png"
  alt="Solana memecoin指南中以猫为主题的memecoin插图"
  width={3840}
  height={1800}
  priority
/>

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

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

1. **无代码 [launchpad](https://www.alchemy.com/dapps/best/crypto-launchpads)**（最快的发布方式）
1. **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](https://solana.com/docs/tokens/basics)
- [Token-2022](https://www.solana-program.com/docs/token-2022) / Token Extensions，如果你想要内置功能（例如元数据扩展、转账手续费、其他控制项）。

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

## 方案 A：通过 memecoin launchpad 发布（无代码）

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

### Pump.fun

<ImageBlock
  src="https://media.alchemy.com/1766156582-pump.png"
  alt="Pump代币创建页面的截图"
  width={2188}
  height={1658}
/>

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

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

### Raydium LaunchLab

<ImageBlock
  src="https://media.alchemy.com/1766156642-raydium.png"
  alt="Raydium代币页面的截图"
  width={2188}
  height={1540}
/>

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

### Bonk.fun

<ImageBlock
  src="https://media.alchemy.com/1766156657-bonk.png"
  alt="BONK官网的截图"
  width={3406}
  height={1228}
/>

[BONK.fun](https://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](https://developers.metaplex.com/smart-contracts/token-metadata) 附加上去的。

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

- [Umi](https://developers.metaplex.com/dev-tools/umi/metaplex-umi-plugins)（Metaplex 的现代客户端框架）用于构建/签名/发送交易
- mpl-token-metadata 辅助函数，在一个流程中创建 mint 和元数据
- [Alchemy Solana RPC](https://www.alchemy.com/solana) 作为你的网络连接
- 你现有的 [Phantom 钱包](https://www.alchemy.com/dapps/phantom) 私钥（无需生成新的密钥对）

### 你在链上实际做了什么

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

1. **Mint 账户**（SPL Token mint）：这是定义你的 token 的核心链上账户。当人们谈论 Solana 上的"token 地址"时，他们通常指的就是这个 mint 账户。这是你要粘贴到 [Solana Explorer](https://www.alchemy.com/dapps/list-of/block-explorers-on-solana) 中的地址。这个账户存储以下内容：

1. Decimals（精度）：token 的可分割程度（例如，8 位小数意味着 1.0 个 token = 100,000,000 个基本单位）。
1. Mint authority（铸造权限）：允许铸造更多供应量的密钥。
1. Freeze authority（冻结权限，可选）：可以冻结 token 账户的密钥。
1. **元数据账户**（Metaplex Token Metadata PDA）：SPL Token program 本身不存储名称、符号或图片。这些信息存在于一个由 Metaplex Token Metadata program 创建的独立元数据账户中。这个账户是一个 Program Derived Address（PDA），从你的 mint 地址确定性地派生而来。这意味着钱包不需要注册表或数据库——它们可以从 mint 地址推导出元数据地址，检查它是否存在，如果存在就读取它。这就是 Phantom 之类的钱包能够自动发现并显示 token 元数据的原理。
1. **链下元数据**（URI → JSON）：元数据账户并不直接存储所有细节。相反，它存储一个指向链下托管的 JSON 文件的 URI（通常托管在 IPFS 上）。该 JSON 遵循标准模式（name、symbol、description、image），浏览器和钱包知道如何获取并渲染它。这样既能让链上数据保持精简，又能提供丰富的 token 信息。

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

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

## 步骤 1：项目配置（TypeScript + 依赖项）

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

<CodeSnippet language="bash" code={`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` 以启用我们稍后会用到的几个选项：

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

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

<CodeSnippet
  language="bash"
  code={`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、私钥）。

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

<CodeSnippet
  language="bash"
  code={`touch mint.ts token.json .env .gitignore`}
/>
- `mint.ts` 将包含创建和铸造 token 的脚本。- `token.json` 将保存
链下元数据（名称、符号、图片）。- `.env`
存储敏感值，比如你的 RPC URL 和私钥。- `.gitignore`
确保密钥永远不会被提交到版本控制中。

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

<CodeSnippet
  language="javascript"
  code={`node_modules
.env`}
/>
这可以防止你的依赖项和私钥被意外提交到 Git 中。

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

### Alchemy RPC

<ImageBlock
  src="https://media.alchemy.com/1766156725-alchemy_rpc.png"
  alt="Alchemy控制台的截图"
  width={746}
  height={914}
/>

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

### Phantom 私钥导出

Phantom 官方的帮助[文档](https://help.phantom.com/hc/en-us/articles/25334064171795-How-to-view-your-recovery-phrase-or-private-key-in-Phantom)展示了查看/复制私钥的确切流程：大致来说，你只需要进入 Settings，然后是 "Manage Accounts"，然后是 "Show Private Key"，然后是 "Choose network"，再点击 continue。

到了这一步后，你就可以设置你的 .env：

<CodeSnippet
  language="json"
  code={`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](https://pinata.cloud/)。至于它的工作原理：你上传的文件会得到一个 CID（内容标识符），然后你可以通过一个网关 URL 获取它。[Pinata 文档](https://docs.pinata.cloud/quickstart)介绍了网关和获取方式。

具体来说，你首先要创建 token.json：

<CodeSnippet
  language="json"
  code={`{
  "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 中：

<CodeSnippet
  language="json"
  code={`TOKEN_METADATA_URI=https://gateway.pinata.cloud/ipfs/<YOUR_TOKEN_JSON_CID>`}
/>
你可以使用自己的图片或元数据，也可以使用下面的示例图片。

<ImageBlock
  src="https://media.alchemy.com/1766156740-cat.webp"
  alt="戴帽子的猫,memecoin代币元数据的示例图片"
  width={2613}
  height={3000}
/>

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

铸造和创建账户需要花费 SOL（即使是在 devnet 上也是如此）。好消息是 devnet 的 SOL 是免费的。要获取一些，你可以使用 Solana 官方的 [devnet faucet](https://faucet.solana.com/) 来领取测试用 SOL。

<ImageBlock
  src="https://media.alchemy.com/1766156769-solana.png"
  alt="Solana水龙头的截图"
  width={2608}
  height={1456}
/>

## 步骤 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` 中：

<CodeSnippet language="typescript" code={`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 地址和一个你可以在链上验证的交易链接。

<CodeSnippet language="bash" code={`npx ts-node mint.ts`} />
如果一切顺利，搞定——你刚刚在 Solana 上铸造了你的 memecoin token。

<ImageBlock
  src="https://media.alchemy.com/1766156798-mint_success.png"
  alt="铸造成功响应的截图"
  width={1288}
  height={154}
/>

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

复制脚本打印出的 Mint 地址，把它粘贴到 [Solana Explorer](https://explorer.solana.com/?cluster=devnet) 中。请确保你在 devnet 上进行查看。

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

<ImageBlock
  src="https://media.alchemy.com/1766156815-explorer.png"
  alt="显示该memecoin的Solana Explorer截图"
  width={2552}
  height={1364}
/>

## 结语

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

无论哪种方式，你现在都已经具备了随心所欲地创建 memecoin 的能力。如果你想继续深入，可以查看 [Alchemy 的 Solana 文档](https://www.alchemy.com/docs/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](https://www.alchemy.com/dapps/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](https://www.alchemy.com/overviews/solana-devnet) 进行测试。你可以从 Solana 官方的 devnet faucet 免费获取 devnet SOL，以覆盖实验过程中的交易成本。
