Solana 实时追踪 Token 活动的完整指南

·

在 30 分钟内完成一个可上线的 Solana 代币实时监控系统,无需自建节点或监听链上日志。

为什么你需要实时追踪 Token 活动?

👉 想在 15 分钟内部署这套系统?点这里直接部署模板!

准备工作清单

本项目基于以下 开源栈,全部可以免费使用:

组件用途
Shyft API监听 Solana 地址事件并推送回调
Supabase存储回调结果,自带 WebSocket 实时通道
Next.js快速构建前端页面与 API

只需要完成两步前期配置:

  1. Shyft 账号 & API Key
    打开 Shyft 控制台,用邮箱注册即可拿到 x-api-key
  2. 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')
}

数据库会自动记录每一条 SwapMintBurn 的全部上下文。

第 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 参考

为了方便快速理解,以下三种卡片足够覆盖核心场景:

使用 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 监听是否限制频率?

Q2:相较于自建 Helius/QuickNode WebSocket,这个方案有什么优势?

Q3:如何添加除 MINT/SWAP/BURN 以外的更多事件?

Q4:能否一次性监听多个地址?

Q5:会不会被虚假 Tx 迷惑?

Q6:部署到 Vercel 收费吗?

快速回顾

  1. 注册 Shyft API Key
  2. 建一张 Supabase 表,绑定 callback → insert → realtime
  3. 前端用 WebSocket 实时渲染
  4. 走完代码即完成 Solana 实时 Token 监控系统,上线不再需要自建节点或高并发监听脚本。

祝你在 Solana 生态 先人一步