这不是一条什么都推给你的信息流。这 7 类事件被选出来,是因为每一类都会改变一份审计报告还值多少。下面每一条都是在生成这个页面时从 src/watch.js 里读出来的——所以这份清单不可能宣传引擎其实并不监控的东西。
owner 是那个能改规则的账户。它一旦转手,报告里关于「谁控制这份合约」的所有结论都不再成立。
上线之后才出现的供应量,稀释的是每一个持有人。这项检查读的是从零地址发出的 Transfer 事件——那是新单位唯一可能被创造出来的方式。
一个从没被用过的暂停开关,和一个刚刚被按下的暂停开关,是两份完全不同的合约。交易停止,是你最想第一时间知道的那一刻。
一次代理升级会把同一个地址背后的代码整个换掉。此前所有报告里关于这份合约的每一条发现,说的都是那份已经不在的代码。
角色授予是一个普通调用者悄悄变成管理员的方式。它是这几类里最难靠人工发现的,在区块浏览器上也最容易被漏掉。
流动性离开池子,是持有人最晚知道、又最在意的那件事。它读的是交易对自己的 burn 事件,不是某个价格源。
该地址上的运行时字节码在建立基线时被哈希一次,之后每一轮扫描都重新哈希。只要不一样,代码就是变了——无论用的是什么机制,也无论它有没有发出任何事件。
过大或无限的授权。钱包每次用 DEX、铸造或跨桥,都会授予某个合约代为转移代币的权限,而这些权限不会过期。金库或部署者钱包上的监控会在授权被授出的那一刻报告它——阈值由你设定,因为不带数字的「过大」只是一种看法。
工具本身(扫描器、控制台、SAFI 工作区)目前仍是英文界面。这些页面用中文把一切讲清楚,方便你进去之前先看明白。
一个只列自己长处的监控产品,是在要求你到生产环境里自己去找它的盲区。
一切链下的事。私钥怎么保管、谁拿着、团队决定了什么。链记录的是交易,不是意图。
意图。它报告 owner 变了;那究竟是一次计划中的交接还是一次失窃,这个判断它不会替你做。
你添加这个地址之前的一切。基线就是起跑线,历史不会回补。以及它没有覆盖的链——目前是以太坊、BNB Chain、Polygon、Base、Arbitrum、Optimism 这六条。
你添加一个地址的那一刻,头部区块、运行时代码哈希和池子余额被读取一次。之后的一切都是与它的比较。
这就是为什么今天创建的监控无法对上周发生的事情告警——而它会直接这么说,不会假装自己看见过。
每一轮都向链请求自上次游标以来的日志,并按你选择的事件主题过滤。
每条链的区块范围取自这条链自己的出块速度,而不是一个常数——一个在以太坊上够用的范围,会让 Arbitrum 永远落在后面,并悄悄漏掉事件。
变了什么、为什么重要、以及是哪一笔交易做的,附带区块浏览器链接。
每一条事件记录都带一个投递标记,所以一条发进虚空的告警会被显示为「未送达」,而不是干脆什么都不显示。目前的投递渠道是 Telegram,在账户页面一键关联。如果账户没有关联 Telegram,告警就无处可去——控制台和你创建监控的那一刻都会直说这件事,而不是让你在几个月的沉默之后才发现。