在 30 分钟内完成一个可上线的 Solana 代币实时监控系统,无需自建节点或监听链上日志。
为什么你需要实时追踪 Token 活动?
- 立即捕捉 新币发行、销毁通缩 与 巨量换仓 的关键时机
- 减少链上监听延迟,第一时间写入数据库并推送到前端
- 通过回调 + WebHook,原生支持 Node.js、Python 甚至 Discord 机器人
准备工作清单
本项目基于以下 开源栈,全部可以免费使用:
| 组件 | 用途 |
|---|---|
| Shyft API | 监听 Solana 地址事件并推送回调 |
| Supabase | 存储回调结果,自带 WebSocket 实时通道 |
| Next.js | 快速构建前端页面与 API |
只需要完成两步前期配置:
- Shyft 账号 & API Key
打开 Shyft 控制台,用邮箱注册即可拿到x-api-key。 Supabase 项目
如无现有数据库,去 Supabase 新建项目;表结构用一条语句即可生成:CREATE TABLE shyft_token_ticker ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, type text, timestamp bigint, action jsonb, created_at timestamp with time zone DEFAULT now() );
三步入门:监听、接收、展示
第 1 步:注册 Token 地址的监听回调
借助 Shyft JS SDK 一行代码即可绑定目标 Token:
import { Network, ShyftSdk, TxnAction } from '@shyft-to/js'
const shyft = new ShyftSdk({
apiKey: process.env.NEXT_PUBLIC_SHYFT_API_KEY,
network: Network.Mainnet,
})
await shyft.callback.register({
network: Network.Mainnet,
addresses: ['6GUis2bP6...'], // 换成你的 SPL Token 地址
callbackUrl: `${origin}/api/callback`,
events: [TxnAction.TOKEN_MINT, TxnAction.TOKEN_BURN, TxnAction.SWAP]
})成功返回说明回调已绑定,此后 Shyft 会 主动 把目标事件 Push 到你指定的 callbackUrl。
第 2 步:接收回调并落库
在 /pages/api/callback.ts 创建 POST 路由:
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const { type, actions, timestamp, status } = req.body
if (status !== 'Success' || ![TxnAction.SWAP, TxnAction.TOKEN_MINT, TxnAction.TOKEN_BURN].includes(type)) {
return res.status(400).send('Invalid data')
}
const { error } = await supabase.from('shyft_token_ticker').insert({
type,
timestamp,
action: actions.find(a => a.type === type)
})
if (error) res.status(500).send('DB error')
else res.status(200).send('OK')
}数据库会自动记录每一条 Swap、Mint、Burn 的全部上下文。
第 3 步:前端实时展示
使用 Supabase 自带的 实时订阅,把新增数据渲染成卡片即可:
useEffect(() => {
const channel = supabase
.channel('token_ticker')
.on(
'postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'shyft_token_ticker' },
(payload) => setTxns(prev => [payload.new, ...prev])
)
.subscribe()
return () => { channel.unsubscribe() }
}, [])视觉化 UI 参考
为了方便快速理解,以下三种卡片足够覆盖核心场景:
- Mint 卡:显示“数量”“铸造者”与 供应增长百分比
- Burn 卡:显示“销毁量”并提示 通缩进度
- Swap 卡:显示成交价格、成交量、价滑点、交易方向
使用 TailwindCSS 让卡片自适应移动端即可。
进阶玩法:零后端部署 Discord 机器人
如果你把 callbackUrl 改成 Discord Webhook,可以让社区实时收到同一张推送,只需调整一行:
await shyft.callback.register({
...otherConfigs,
callbackUrl: 'https://discord.com/api/webhooks/你在Discord建立的那个Hook地址',
type: 'DISCORD'
})无需再跑 Supabase,消息直接在 Discord 频道秒级同步。
常见疑问 FAQ
Q1:Shyft 监听是否限制频率?
- 免费额度每日 100,000 次调用;轻量级观察绰绰有余。
Q2:相较于自建 Helius/QuickNode WebSocket,这个方案有什么优势?
- 零维护:无需自己解析指令,Shyft 帮你把事件按语义解析成 JSON。
- 跨语言可用:只需一条 Http 路由,后端可以是 Node、Python、Go 甚至无服务器函数。
Q3:如何添加除 MINT/SWAP/BURN 以外的更多事件?
- 在
events数组加上更多TxnAction,例如LIQUIDITY_ADD,NFT_MINT等即可。
Q4:能否一次性监听多个地址?
- 是的,把
addresses改成数组即可,峰值可达 50 个并发监听。
Q5:会不会被虚假 Tx 迷惑?
- Shyft 返回的每条记录都带
status: "Success",已过滤 失败交易,前端无需二次校验。
Q6:部署到 Vercel 收费吗?
- Vercel 免费额度足够带动读写频率,小团队免费跑一月无压力。
快速回顾
- 注册 Shyft API Key
- 建一张 Supabase 表,绑定
callback → insert → realtime - 前端用 WebSocket 实时渲染
- 走完代码即完成 Solana 实时 Token 监控系统,上线不再需要自建节点或高并发监听脚本。
祝你在 Solana 生态 先人一步!