跳到主要内容

创建代币

不把任何密钥交给别人就能发射 pump.fun 币。你在自己的机器上生成 mint 密钥对,只发送它的公钥;返回的交易需要两个签名,你的钱包和 mint 的,都在本地完成。可选的 initialBuy 把你的开发者买入放进同一笔交易,没人能抢在发射前面。

POST https://sol.shrine.trade/api/create-token

请求

字段类型说明
publicKeystring创建者钱包。支付费用,第一个签名者,之后领取创作者费用。
mintstring你生成的密钥对的公钥。第二个签名者。
namestring最多 32 字节。
symbolstring最多 13 字节。
uristring元数据 JSON 的 URL。用下面的 upload-metadata 获取,或自己托管。
initialBuynumber可选,同一笔交易里的开发者买入,单位 SOL。
slippagenumber开发者买入的滑点,百分比。默认 10。
creatorFeeAddressstring可选。领取创作者交易分成的钱包。默认为 publicKey
quoteMintstring可选。用 USDC 或 pump.fun 报价控制名单里的任一 mint 计价,而不是 SOL。此时 initialBuy 和手续费都以该资产计。
mayhemModeboolean该币的 pump.fun mayhem 模式。
holderRewardboolean持有者奖励币:每笔交易的创作者费用留给该币的持有者,由 pump.fun 发放。永久生效;之后创作者没有可领取的费用,creatorFeeAddress 不再作为收款方。
creatorFeeBpsnumber仅限自定义交易对(SOL 和 USDC 以外的计价资产):该币自己的创作者费率,上限为 pump.fun 当前的上限(目前 300)。SOL 和 USDC 计价的币始终使用标准费率。
priorityFeenumberSOL。
jitoTipnumberSOL。

每次发射都使用 pump.fun 的 create_v2:该币是 Token-2022 mint。设置了 quoteMint 时,开发者买入和之后的每笔交易都以该资产结算,响应里带 quoteMintfeeMint。允许的计价资产是 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 密钥对并粘贴它的公钥;在你签名并提交之前不会创建任何东西。