创建代币
不把任何密钥交给别人就能发射 pump.fun 币。你在自己的机器上生成 mint 密钥对,只发送它的公钥;返回的交易需要两个签名,你的钱包和 mint 的,都在本地完成。可选的 initialBuy 把你的开发者买入放进同一笔交易,没人能抢在发射前面。
POST https://sol.shrine.trade/api/create-token
请求
| 字段 | 类型 | 说明 |
|---|---|---|
publicKey | string | 创建者钱包。支付费用,第一个签名者,之后领取创作者费用。 |
mint | string | 你生成的密钥对的公钥。第二个签名者。 |
name | string | 最多 32 字节。 |
symbol | string | 最多 13 字节。 |
uri | string | 元数据 JSON 的 URL。用下面的 upload-metadata 获取,或自己托管。 |
initialBuy | number | 可选,同一笔交易里的开发者买入,单位 SOL。 |
slippage | number | 开发者买入的滑点,百分比。默认 10。 |
creatorFeeAddress | string | 可选。领取创作者交易分成的钱包。默认为 publicKey。 |
quoteMint | string | 可选。用 USDC 或 pump.fun 报价控制名单里的任一 mint 计价,而不是 SOL。此时 initialBuy 和手续费都以该资产计。 |
mayhemMode | boolean | 该币的 pump.fun mayhem 模式。 |
holderReward | boolean | 持有者奖励币:每笔交易的创作者费用留给该币的持有者,由 pump.fun 发放。永久生效;之后创作者没有可领取的费用,creatorFeeAddress 不再作为收款方。 |
creatorFeeBps | number | 仅限自定义交易对(SOL 和 USDC 以外的计价资产):该币自己的创作者费率,上限为 pump.fun 当前的上限(目前 300)。SOL 和 USDC 计价的币始终使用标准费率。 |
priorityFee | number | SOL。 |
jitoTip | number | SOL。 |
每次发射都使用 pump.fun 的 create_v2:该币是 Token-2022 mint。设置了 quoteMint 时,开发者买入和之后的每笔交易都以该资产结算,响应里带 quoteMint 和 feeMint。允许的计价资产是 USDC 和 pump.fun 自定义交易对名单上的 mint;其他的会在构建交易前被拒绝,返现币也一样,pump.fun 已不再创建它们。
想要发射后其他钱包在同一个区块内买入,把创建放进捆绑交易的第一笔,买入放在后面几笔,用 mintRef 引用新币。一个开发者买入外加一次买入也能放进一笔多操作交易,SOL 计价和自定义计价都可以。
上传元数据
POST https://sol.shrine.trade/api/upload-metadata 通过 pump.fun 自己的 IPFS 接口固定图片和元数据 JSON,并返回 uri。免费。
{
"name": "My Coin",
"symbol": "COIN",
"description": "…",
"imageUrl": "https://…/logo.png",
"twitter": "https://x.com/…",
"telegram": "https://t.me/…",
"website": "https://…"
}
imageUrl 由我们抓取(最大 8 MB);也可以改传 imageBase64 直接发送图片字节。响应是 { "uri": "https://ipfs.io/ipfs/…", "image": "https://ipfs.io/ipfs/…", "metadata": { … } };把 uri 放进创建请求即可。
示例
import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";
import bs58 from "bs58";
const wallet = Keypair.fromSecretKey(bs58.decode(process.env.WALLET_SECRET));
const mint = Keypair.generate(); // 保存好:它就是代币的身份
const res = await fetch("https://sol.shrine.trade/api/create-token", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
publicKey: wallet.publicKey.toBase58(),
mint: mint.publicKey.toBase58(),
name: "My Coin",
symbol: "MINE",
uri: "https://ipfs.io/ipfs/<metadata json>",
initialBuy: 0.5,
slippage: 10,
priorityFee: 0.0005,
}),
});
const { tx } = await res.json();
const transaction = VersionedTransaction.deserialize(Buffer.from(tx, "base64"));
transaction.sign([wallet, mint]); // 两个签名者,钱包在前
const connection = new Connection(process.env.RPC_URL);
const sig = await connection.sendRawTransaction(transaction.serialize());
console.log(`https://solscan.io/tx/${sig}`);
响应
{
"tx": "<base64 未签名交易>",
"blockhash": "…",
"mint": "…",
"bondingCurve": "…",
"feeLamports": 1250000,
"signers": ["<wallet>", "<mint>"]
}
手续费
创建本身除网络租金外免费。开发者买入按正常的 0.25% 交易费收取,已包含在交易里。
试一试
只构建未签名交易。生成一个一次性的 mint 密钥对并粘贴它的公钥;在你签名并提交之前不会创建任何东西。