SuperAPI AI 工具集

onchain-monitor

数据与分析

查看项目

更新于 10-15 10:07

技能介绍

用途

onchain-monitor 用于监控区块链地址与合约,发现值得关注的活动(如大额转账、交易所充提、去中心化交易所兑换、跨链桥转移、铸造与销毁等),并以通知形式提醒操作者。

主要能力

  • 观察列表:从 memory/on-chain-watches.yml 读取观察项,每项包含 label、address、chain、type(wallet 或 contract)、threshold_usd,合约还可配置可选的 event_topics(仅对指定 topic0 哈希告警)。支持链:ethereum、base、arbitrum、optimism、polygon。
  • 地址标签词典:可选文件 memory/known-addresses.yml,用小写键映射对手方标签,用于把告警中出现的地址人性化(例如交易所、路由器、跨链桥、零地址)。
  • 增量抓取:每个观察项记录上次处理到的区块(last_block),从该区块拉到最新。首次运行初始化为当前区块 − 2400。
  • 数据来源:优先使用 Alchemy(若设置了 ALCHEMY_API_KEY);钱包用 alchemy_getAssetTransfers(分别按 to 与 from 查询后合并),合约用 eth_getLogs。回退路径为 Etherscan v2 统一端点(通过 chainid 支持多链,可无 key 低速率使用)。
  • 美元估值:汇总去重后的 (chain, token_contract) 后,通过 CoinGecko 批量获取价格;原生币用 simple/price。无法获取价格的代币标记为 UNPRICED,保留在日志但不进入通知。
  • 过滤:丢弃低于设定阈值(默认 1000 美元)的事件、低于 0.10 美元的粉尘事件、已在近期告警记录中的交易(跨次运行去重),以及不符合 event_topics 的日志类事件。
  • 事件分类标签:CEX-IN / CEX-OUT、DEX-SWAP、BRIDGE、MINT / BURN、WHALE-TRANSFER(超过该观察项 30 天中位数的 10 倍)、UNKNOWN-IN / UNKNOWN-OUT。每个事件只取一个标签,优先级为 CEX > DEX > BRIDGE > MINT/BURN > WHALE > UNKNOWN。
  • 告警格式:每次运行只发一条通知,按 value_usd 降序全局排序、按观察项标签分组,开头给出一句 TL;DR 点出最大一笔。正文最多 10 条事件,超出时提示查看日志。附带各数据源的运行状态与最新区块。
  • 状态与日志:状态写入 memory/on-chain-state.json(通过临时文件 + mv 原子写入,避免中途失败损坏)。日志追加到 memory/logs/${today}.md,包含所有已解码事件(含被过滤项)及统计,便于审计。

使用方式

  • 触发参数:${var} 可指定要检查的观察项标签或链;为空则监控全部。
  • 通过 Telegram 强制回复添加观察项:当配置文件缺失或观察列表为空时,工具会发送一条邀请粘贴地址的强制回复提示(同一提示 2 天内去重,避免反复打扰)。回复格式为 add-address:<0x… [chain]>,由配置捕获分支处理:校验地址格式(^0x[0-9a-f]{40}$),规范化并追加到 memory/on-chain-watches.yml,默认 type 为 wallet、threshold_usd 为 1000、label 为缩短后的地址,随后退出且本次不做监控。若地址已存在则提示已在监控。更精细的配置(链、类型、阈值)需直接编辑该 YAML 文件。
  • 执行流程:读取记忆与配置及最近 2 天日志 → 处理配置捕获 → 逐观察项抓取、解码、估值、过滤、分类、格式化告警 → 持久化状态与日志。
  • 结束状态:全部运行且有事件存活则通知并记录;全部运行但无事件存活则不发通知,记录 ON_CHAIN_OK;部分失败则仅在存在存活事件时通知,并记录 ON_CHAIN_DEGRADED;全部失败则记录 ON_CHAIN_ERROR 并向操作者发送带来源页脚的通知;配置缺失或为空则记录 ON_CHAIN_NO_CONFIG 并退出,不发送告警。

适用场景

  • 追踪指定钱包的进出账与大额异动;
  • 关注特定合约的日志事件(可限定 topic0);
  • 借助地址标签词典,把人名化的对手方(交易所、路由器、跨链桥、零地址)体现在告警里;
  • 在 Telegram 中通过强制回复快速添加监控地址。

限制与说明

  • 支持的链为文档明确列出的 ethereum、base、arbitrum、optimism、polygon,其它链暂未提供。
  • 需要配置密钥/服务:ALCHEMY_API_KEY(可选,优先路径)、ETHERSCAN_API_KEY(回退路径可选,可无 key 低速率使用)、COINGECKO_API_KEY(可选)。密钥通过带 {ENV_NAME} 占位符的调用方式传入 URL,避免明文密钥出现在命令行。
  • CoinGecko 不可达或查不到某代币价格时,该事件标为 UNPRICED,保留日志但不进入通知(无法用美元阈值衡量)。
  • 所有抓取到的字段(资产符号、from/to、对手方标签等)都视为不可信内容,不应插入 shell 命令。
  • 关于安装方式、具体费用与价格、运行环境要求等,原始资料中暂未提供。