跳到主要内容

本地交易 API

通过 API 交易 Solana 迷因币的非托管方式。你的钱包留在你自己的电脑上——我们永远看不到你的私钥。 签好名的交易由你通过我们的中继提交,或者走你自己的 RPC。

一套 API,四条网络:同样的请求、流和密钥在 Solana、BNB Chain、Robinhood Chain 和 Arc 上都能用;机器人只需改一下基础 URL 就能在链间切换。Solana 侧运行在法兰克福、阿姆斯特丹和纽约;用侧边栏底部的区域选择器选你的区域,见区域。最快的路线是交易用 Lightspeed、数据用 Ultra Fast Shred Stream(超快分片流)。

围绕交易端点:Ultra Fast Shred Stream 在区块执行前就送达每一笔 pump.fun 交易,24 小时回放意味着断线不会丢失任何数据,而同一套 API 运行在三个区域。

一个端点就能交易任何发射平台的币,无论它此刻在哪里交易:

PumpFun
SWAP
PumpSwap
Bonk
StonkFun
Meteora
Raydium
Orca
无需密钥,非托管

不需要 API 密钥,没有账户。API 构建交易,你的机器签名,中继发送。我们唯一看到的只有你的公钥。Free 套餐上一笔交易付 0.25%;把你套餐的密钥作为 x-api-key 发送,就是 0%,限额也更高。

你需要什么​

  • 一个 Solana 钱包。 它的 base58 私钥。(Phantom:设置 → 显示秘密恢复短语 → 显示私钥。)
  • 一些 SOL。 钱包里的 SOL 够付交易金额,再加少量网络费。
  • 一种提交方式。 默认情况下,你把签好名的交易回传到 /api/send,我们通过自己的端点广播,所以不需要 RPC。如果你更愿意用自己的 Solana RPC(Helius、Triton、QuickNode 或公共节点),就用它发送。
  • Node.js 或 Python。 如果想原样运行下面的代码片段,需要装好。

示例​

import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";
import bs58 from "bs58";

const wallet = Keypair.fromSecretKey(bs58.decode("<your wallet private key, base58>"));

// 1. 请 shrine.trade 构建一笔未签名交易。
const res = await fetch("https://sol.shrine.trade/api/local-trade", {
method: "POST",
headers: { "content-type": "application/json", "accept": "application/json" },
// 有套餐时,在 headers 里加上 "x-api-key": "sk_…":0% 费率,更高限额
body: JSON.stringify({
action: "buy", // "buy" 或 "sell"
publicKey: wallet.publicKey.toBase58(),
mint: "<token mint>", // base58 代币 mint
amount: 0.01, // 买入时为 SOL;卖出时为代币数量或 "100%"
slippage: 10, // 百分比
priorityFee: 0.0001, // SOL
}),
});
const { tx } = await res.json();

// 2. 本地签名——你的私钥永远不离开这个脚本。
const txObj = VersionedTransaction.deserialize(Buffer.from(tx, "base64"));
txObj.sign([wallet]);

// 3. 通过 shrine.trade 中继发送——不需要 RPC。等待确认。
const sent = await (await fetch("https://sol.shrine.trade/api/send", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ signedTx: Buffer.from(txObj.serialize()).toString("base64") }),
})).json();
console.log(sent.status, sent.explorer); // "landed" https://solscan.io/tx/…

// 或者,用你自己的 RPC:
// const conn = new Connection("https://your-rpc");
// const sig = await conn.sendRawTransaction(txObj.serialize());

工作原理​

  1. 你发起请求,向 shrine.trade 要一笔交易。我们构建一笔未签名交易。
  2. 你签名,在自己的机器上用自己的钱包给交易签名。
  3. 你提交签好名的交易:发到 /api/send 由我们广播,或者通过你自己的 RPC 发送。

发送​

POST https://sol.shrine.trade/api/send 接收一笔签好名的交易,并通过我们的 Solana 端点广播,因此脚本完全不需要 RPC。它只转发由本 API 构建的交易:每次构建都会被记住 15 分钟,签名后的交易必须与其中一笔完全一致。任何在别处组装、或构建后被修改的交易都会以 not_ours 拒绝。是否使用它由你决定;签好名的交易随时可以改走你自己的 RPC。

字段
signedTxbase64签好名的交易:web3.js 中为 Buffer.from(tx.serialize()).toString("base64"),solders 中为 base64.b64encode(bytes(signed))。
wait布尔值,可选默认 true:等待确认。false 则在节点接受后立即返回签名。
{ "signature": "5Kd…", "status": "landed", "slot": 372114820, "explorer": "https://solscan.io/tx/5Kd…" }

status 为 landed(已确认)、failed(已执行但链上出错;error 携带程序错误)或 pending(未等待,或 60 秒内未确认)。被节点在预检中拒绝的交易——SOL 不足、超出滑点、blockhash 过期——会以 400 返回,并附上节点给出的原因。

请求字段​

字段类型说明
action"buy" / "sell"
publicKeystring你的钱包。它负责签名并支付费用。
mintstring代币 mint。
amountnumber 或 string买入时投入的数量:SOL,或者对于以其他资产计价的 pump.fun 币,则为该币的计价资产(USDC 等)。卖出时为代币数量,或钱包持仓的比例:"100%" 全部卖出,"50%" 卖一半。
slippagenumber百分比。默认 5。
priorityFeenumberSOL。默认约 0.0002。
poolstring通过哪个发射平台路由,见下文。省略则按 mint 自动路由。
poolAddressstring对 raydium_cpmm、raydium_amm_v4 和 meteora_damm_v2,当该 mint 没有缓存的池时必填;对 meteora_dbc 可选。
jitoTipnumberSOL。追加一笔到 Jito 小费账户的转账,这样签好名的交易可以直接发给区块引擎。

发射平台​

数据流覆盖的每个发射平台和 AMM 都能通过同一个调用交易。不填 pool,mint 会被查找并自动路由到其当前活跃的池,并跟随迁移。只有在要强制指定发射平台时才设置它。

pool发射平台
pumpfun(或 pump)pump.fun 联合曲线
pumpswapPumpSwap,pump.fun 币毕业后在此交易
bonk、stonkfunRaydium LaunchLab:letsbonk.fun、StonkFun 及其他所有 LaunchLab 平台
meteora_dbc(或 bags、moonshot)Meteora 动态联合曲线:Bags、Moonshot 及 Meteora 发射平台的其余部分
raydium_cpmmRaydium CPMM,LaunchLab 币毕业后在此交易
raydium_amm_v4Raydium AMM v4
meteora_damm_v2Meteora DAMM v2,DBC 币毕业后在此交易

以其他资产计价的币​

币不一定以 SOL 计价。pump.fun 币可以用 USDC 或其他代币计价,LaunchLab 上的 StonkFun 币可以用代币化股票、Pre-IPO 股票或货币计价。交易端点从币的曲线或池里读取计价资产并照此处理,无论是哪个发射平台:此时买入的 amount 是要花掉多少计价资产,钱包必须已经持有这个数量外加手续费;卖出以计价资产付款;交易费也以计价资产收取。响应用 quoteMint 和 feeMint 说明是哪种资产;feeLamports 以费用资产的最小单位计。带转账费的 Token-2022 计价 mint(xStocks)也能处理;SOL 只用来付网络费。无需任何设置,token-info 会提前显示币的 quote。

多个操作放进一笔原子交易,包括发币后由其他钱包买入,走 local-actions。转账、销毁、包装 SOL 和余额读取见钱包工具。

meteora_dbc 支持以 SOL 计价的池。DBC 上的滑点按现价计算,所以在陡峭曲线上大额买入时要留出余量。

手续费在 Free 套餐上为交易 SOL 侧的 0.25%,在 Lite 和 Developer 上为 0%,包含在交易里。见套餐与限额。

试一试​

无需 API 密钥——这个端点无需密钥。粘贴你的钱包私钥和一个代币 mint,按下 Sign & send。API 只会收到你的公钥并返回一笔未签名交易;你的浏览器签名后把签好名的字节发到 /api/send,或者发到你填写的自有 RPC。私钥永远不离开这个标签页。这是主网上的真实交易,请从小额开始。

出了问题怎么办​

你会收到形如 { "error": "..." } 的响应,带一条简短说明。常见原因:钱包地址错误、代币 mint 错误,或 SOL 不足。来自 /api/send 的 400 会引用节点的预检原因(滑点、余额、blockhash 过期),not_ours 表示该交易不是本 API 构建的,或者构建后被改动过。