如何在 Solana 上製作 memecoin:逐步指南
作者:Uttam Singh

如果你剛接觸 Solana,memecoin 是一種低風險的入門方式。這個領域喧鬧又混亂,但這樣的活動會迫使你去接觸真正的基礎構件,像是 token mint、metadata、錢包和 RPC。而在這個過程中,你能立即看到成果。打造 memecoin 是理解 Solana 應用在實際環境中如何運作的簡單途徑。
在本教學中,我們會展示兩種在 Solana 上打造 memecoin 的實務做法:
- 無程式碼啟動平台(最快的發行方式)
- DIY 鑄造,使用 Solana 的 SPL 工具(適合想完全掌控流程的開發者)
什麼是 Solana 上的 memecoin?
在 Solana 上,memecoin 通常只是一個標準的 SPL 同質化代幣(fungible token),具備名稱、代號、圖片和發行計畫。技術上它並沒有什麼特別之處——同樣的 SPL token 機制也被錢包、DeFi 應用和正式的消費型專案所使用。
memecoin 之所以顯得特別,關鍵在於它們的_使用方式_。Solana 低廉的手續費和快速的交易,讓鑄造代幣、頻繁交易和實驗性發行變得容易,這也是為什麼 memecoin 在活躍期間佔了網路上大部分的代幣建立與交易活動。
對開發者來說,這種活動正是重點所在。memecoin 是學習 Solana 核心基礎元件(SPL token、metadata、錢包與發行流程)的簡單、低風險方式,不需要先打造一個完整的應用程式。
你在 Solana 上實際建立的是什麼
一個 Solana token 有一個 mint account(代幣的識別碼),使用者則透過 token account(通常稱為「Associated Token Account」,或 ATA)持有餘額。
你需要在以下兩者間做選擇:
- SPL Token program
- Token-2022 / Token Extensions,如果你想要內建功能(例如 metadata extension、轉帳手續費、其他控制機制)。
對大多數 memecoin 來說:舊版 SPL token 仍然是相容性最高、最安全的預設選項,能確保最大程度的錢包/交易所相容性。
選項一:透過 memecoin 啟動平台發行(無程式碼)
如果你的目標是「盡快讓代幣上線並可交易」,第三方啟動平台會替你處理鑄造和初期交易的使用者體驗。這個選項有多個啟動平台可以選擇。
Pump.fun

Pump.fun 的訴求基本上是「無需準備流動性即可發行可立即交易的代幣」。使用 Pump.fun 的典型流程如下:
- 為你的代幣選擇名稱、代號和圖片
- 支付建立手續費
- 代幣會依照平台的機制開始交易
Raydium LaunchLab

Raydium LaunchLab 提供類似的建立代幣流程(你只需加入名稱、代號、圖片和社群連結)。它們提供兩種建立與發行新代幣的模式:簡化的 JustSendIt 模式,以及可完全自訂的 Advanced Mode。Advanced Mode 讓你對代幣的參數有完整的控制,更適合需要特定代幣經濟學或更複雜設定的專案。
Bonk.fun

BONK.fun 是另一個 Solana memecoin 啟動平台,在 2025 年獲得許多關注。這個平台透過社群驅動的激勵機制與透明度,取得了可觀的市場佔有率。
選項二:使用 SPL 工具自行建立代幣
如果你想繞過這些啟動平台,也可以完全自行建立 memecoin。要做到這點,你需要完成以下步驟。
建立 Solana SPL token
如果你曾經鑄造過 SPL token,然後發現它在錢包中顯示為「Unknown token」(或沒有圖示),原因就在這裡:單靠 SPL mint 本身並不會攜帶完整的 metadata。
在 Solana 上,同質化代幣是透過 SPL Token program 建立的,而那些「美觀」的欄位(例如名稱、代號、圖片、JSON URI)通常是透過 Metaplex Token Metadata program 附加上去的。
在本教學中,你將使用以下工具鑄造一個同質化 SPL token:
- Umi(Metaplex 的現代化 client framework)來建立/簽署/傳送交易
- mpl-token-metadata 輔助工具,在同一流程中建立 mint 和 metadata
- Alchemy Solana RPC 作為你的網路連線
- 你現有的 Phantom 錢包 私鑰(不需要產生新的 keypair)
你在鏈上實際在做什麼
當你執行鑄造腳本時,你並不只是「建立一個代幣」——你其實是在建立一組彼此協同運作的鏈上帳戶,讓錢包和瀏覽器知道該如何解讀它。
-
Mint account(SPL Token mint):這是定義你代幣的核心鏈上帳戶。當人們談論 Solana 上的「token address」時,通常指的就是這個 mint account。這也是你要貼到 Solana Explorer 裡的地址。這個帳戶儲存的內容包括:
-
Decimals:代幣可以細分的程度(例如,8 位小數代表 1.0 個代幣 = 100,000,000 個基本單位)。
-
Mint authority:有權鑄造更多供應量的金鑰。
-
Freeze authority(選用):可以凍結 token account 的金鑰。
-
Metadata account(Metaplex Token Metadata PDA):SPL Token program 本身並不儲存名稱、代號或圖片。這些資訊存放在由 Metaplex Token Metadata program 建立的另一個 metadata account 中。這個帳戶是一個 Program Derived Address(PDA),是從你的 mint 地址以確定性方式推導出來的。這代表錢包不需要一個登記表或資料庫——它們可以從 mint 推導出 metadata 地址,檢查它是否存在,如果存在就讀取它。這就是像 Phantom 這樣的錢包能自動找到並顯示 token metadata 的原理。
-
鏈下 metadata(URI → JSON):metadata account 並不會直接儲存所有細節。相反地,它儲存的是指向一個託管在鏈下(通常在 IPFS 上)的 JSON 檔案的 URI。這個 JSON 遵循一個標準的結構(名稱、代號、描述、圖片),瀏覽器和錢包都知道如何取得並呈現它。這讓鏈上資料維持精簡,同時仍能提供豐富的代幣資訊。
有了這些背景知識,下面的程式碼應該就更容易理解:你在建立 mint、為它附加一個 metadata account,並讓那個 metadata 指向一個錢包可以讀取的 JSON 檔案。
現在,讓我們來打造這個 memecoin。
步驟 1:專案設定(TypeScript + 依賴套件)
首先,我們會建立一個新的專案目錄,並初始化一個 Node.js 專案。這會給我們一個乾淨的工作空間,以及一個用來管理依賴套件的 package.json 檔案。
mkdir CATY
cd CATY
npm init -y
npm i -D typescript ts-node @types/node
npx tsc --initnpm init -y使用預設設定建立一個基本的 Node 專案。- typescript 讓我們可以撰寫具型別的 JavaScript,這在使用 Solana 和 Metaplex SDK 時很有幫助。
ts-node讓我們可以直接執行 TypeScript 檔案,不需要另外的建置步驟。npx tsc --init產生一個 tsconfig.json,用來控制 TypeScript 的編譯方式。
接著,更新 tsconfig.json 來啟用之後會用到的幾個選項:
{
"compilerOptions": {
"esModuleInterop": true,
"resolveJsonModule": true
}
}esModuleInterop讓我們可以使用現代化的 import 語法搭配常見的 Node 套件。-resolveJsonModule讓我們可以直接匯入 .json 檔案,這在處理設定和 metadata 時很實用。
接著我們要安裝與 Solana 和 Metaplex 互動所需的函式庫:
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 用來建立、簽署和傳送交易的 client framework。umi-bundle-defaults提供常見的預設值(例如 RPC 處理),讓我們不需要手動接好一切。mpl-token-metadata包含建立並附加 token metadata 的輔助工具。bs58用來解碼 Phantom 以 base58 編碼的私鑰。dotenv讓我們可以安全地從 .env 檔案載入機密資訊(RPC URL、私鑰)。
最後,我們要建立整個教學中會用到的檔案:
touch mint.ts token.json .env .gitignoremint.ts會包含建立並鑄造代幣的腳本。-token.json會保存鏈下 metadata(名稱、代號、圖片)。-.env儲存機密值,像是你的 RPC URL 和私鑰。-.gitignore確保機密資訊不會被提交到版本控制系統。
讓我們在 .gitignore 加入以下內容:
node_modules
.env這可以避免你的依賴套件和私鑰不小心被提交到 Git。
步驟 2:在 .env 中加入 Alchemy RPC + Phantom 私鑰
Alchemy RPC

Alchemy 提供快速可靠的 Solana RPC 端點,涵蓋 devnet 和 mainnet。測試期間請使用 devnet。要使用我們的端點,你需要一組(免費!)API 金鑰。你只需要前往我們的儀表板,在儀表板上建立一個新的 Solana app。請確認你開啟了 Node API 和 Webhooks 服務,並啟用 devnet。接著,只要把你的 API 金鑰或端點 URL 複製貼上到 .env 檔案中即可。
匯出 Phantom 私鑰
Phantom 官方的說明文件展示了查看/複製私鑰的確切流程:簡單來說,你只需要前往 Settings,然後「Manage Accounts」,接著「Show Private Key」,再「Choose network」,最後點選 continue 即可。
完成後,你可以設定你的 .env:
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:把圖片與 metadata 上傳到 IPFS(Pinata)
只在你的電腦上有一個 token.json 檔案是不夠的。Solana 程式無法讀取你本機檔案系統中的檔案,而直接把大量 metadata 存在鏈上的成本也會很高。因此,Token Metadata program 會儲存一個指向公開可存取的 JSON 檔案的 URI,該檔案通常託管在鏈下(常見於 IPFS)。錢包和瀏覽器會透過這個 URI 取得該 JSON,藉此顯示你代幣的名稱、代號和圖片。
你可以使用任何 IPFS 服務來達成這個目的。在本教學中我使用的是 Pinata。至於運作方式:你上傳的檔案會得到一個 CID(內容識別碼),你可以透過 gateway URL 取得它。Pinata 文件有說明 gateway 和取得檔案的方式。
實際操作上,你首先要建立 token.json:
{
"name": "Cat with Hat",
"symbol": "CATY",
"description": "My Cat with Hat",
"image": "https://YOUR_GATEWAY/ipfs/YOUR_IMAGE_CID"
}這裡的操作順序如下:
- 上傳你的圖片 → 複製 gateway URL。
- 把那個 URL 貼到 token.json.image 中
- 上傳更新後的 token.json → 複製這個 JSON 的 gateway URL。
- 把那個 JSON URL 放進 .env:
TOKEN_METADATA_URI=https://gateway.pinata.cloud/ipfs/<YOUR_TOKEN_JSON_CID>你可以使用自己的圖片或 metadata,或使用下方的範例圖片。

步驟 4:用 Devnet SOL 為錢包儲值
鑄造和建立帳戶需要花費 SOL(即使在 devnet 上也是如此)。好消息是 devnet 的 SOL 是免費的。要取得一些,你可以使用 Solana 官方的 devnet 水龍頭來取得測試用 SOL。

步驟 5:透過 Alchemy RPC 鑄造代幣(umi + token metadata)
以下是完整的 mint.ts 腳本,其中內建了幾個重要細節:
- 它會把 Phantom 的 base58 私鑰轉換成 Solana Keypair(Phantom 匯出的資料可能是 64 位元組;有些格式則是 32 位元組)。
- 它會告訴 Umi 使用你的 Alchemy RPC URL。根據 Umi 的文件說明:你傳給 createUmi(...) 的端點,就是用來執行 RPC 呼叫的端點。
- 它會正確印出交易簽章(base58 格式),讓你的瀏覽器連結能正常運作。
把以下內容複製貼上到你的 mint.ts:
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 地址,以及一個可以在鏈上驗證的交易連結。
npx ts-node mint.ts如果一切順利,恭喜——你剛剛在 Solana 上鑄造出你自己的 memecoin token 了。

步驟 6:在 Solana explorer 上驗證這個 mint
複製腳本印出的 Mint address,貼到 Solana Explorer 中。請確認你使用的是 devnet。
🎉 恭喜——你已經鑄造出屬於自己的代幣(你的「CATY」),初始供應量固定為 1,000,000,並且已接好 metadata。

結論
就是這樣——你現在已經看過在 Solana 上發行 memecoin 的兩種做法。如果你想要最快的方式,像 pump.fun、Raydium LaunchLab 或 BONK.fun 這樣的啟動平台會替你處理大部分的設定工作。如果你想要完全的掌控權,自行鑄造 SPL token 能讓你更深入了解 Solana token 在底層實際上是如何運作的。
無論選哪一種方式,你現在都已經具備能力,可以隨心所欲地建立任意數量的 memecoin。如果你想繼續深入,可以參考 Alchemy 的 Solana 文件和開發者指南,進一步了解 Solana RPC、錢包和可用於正式環境的工具,並探索關於打造 Solana 應用程式、使用 SPL token 以及處理真實鏈上流量的教學。
常見問題
什麼是 Solana 上的 memecoin?
Solana 上的 memecoin 是一個標準的 SPL 同質化代幣,具備名稱、代號、圖片和發行計畫。技術上它並沒有什麼特別之處,同樣的 SPL token 機制也被錢包、DeFi 應用和正式的消費型專案所使用。
在 Solana 上建立 memecoin 有哪兩種主要方式?
你可以使用像 Pump.fun、Raydium LaunchLab 或 BONK.fun 這樣的無程式碼啟動平台,以最快速度發行;或者你也可以使用 Solana 的 SPL 工具自行鑄造代幣,以完全掌控整個流程。
建立 memecoin 需要什麼錢包?
你需要一個支援 Solana 的錢包,像是 Phantom、Backpack 或 Solflare,並存入少量 SOL 來支付交易手續費。
在 Solana 上建立 memecoin 需要多少費用?
在 Solana 上建立代幣的成本極低,基本的代幣鑄造和帳戶建立,無論在 devnet 或 mainnet 上,手續費通常不到 1 美元(以 SOL 計)。
SPL Token 和 Token-2022 有什麼差別?
SPL Token 是舊版的 token program,是相容性最高、最安全的預設選項,能確保最大程度的錢包和交易所相容性。Token-2022(Token Extensions)提供內建功能,像是 metadata extension 和轉帳手續費,但普及度可能不如前者。
我需要為我的 memecoin 加入 metadata 嗎?
需要,metadata(名稱、代號、圖片、描述)是透過 Metaplex Token Metadata program 儲存的,通常會託管在鏈下的 IPFS 上。這讓錢包和瀏覽器能顯示你代幣的資訊,而不是顯示成「Unknown token」。
Umi 是什麼?為什麼用它來鑄造代幣?
Umi 是 Metaplex 用來在 Solana 上建立、簽署和傳送交易的現代化 client framework。它簡化了在同一流程中建立代幣並附加 metadata 的過程。
鑄造 memecoin 時會建立哪些帳戶?
你會建立一個 mint account(代幣的核心識別碼,儲存 decimals 和各種 authority)、一個 metadata account(一個 PDA,儲存名稱、代號和 URI),以及鏈下 metadata(一個存放在 IPFS 上、包含詳細代幣資訊的 JSON 檔案)。
我可以在正式發行到 mainnet 前先測試代幣建立流程嗎?
可以,你可以使用 Solana devnet 來測試。你可以從 Solana 官方的 devnet 水龍頭取得免費的 devnet SOL,用來支付實驗過程中的交易費用。
Alchemy 電子報
搶先掌握最新發布消息
訂閱我們的電子報
取得 Alchemy 最新產品更新與資源
輸入您的電子郵件地址,即表示您同意接收我們的行銷通訊與產品更新。您了解 Alchemy 會依照我們的隱私權聲明處理所收到的資訊。您可以隨時取消訂閱。


