我们如何在一秒内检测 DeFi 漏洞
核心要点
- 我们如何在一秒内检测 DeFi 漏洞 我们如何在一秒内检测 DeFi 漏洞 我们如何在一秒内检测 DeFi 漏洞 Decurity 的 CTO 将 Defimon 从轮询重建为推送。

我们如何在一秒内检测 DeFi 漏洞
我们如何在一秒内检测 DeFi 漏洞
我们如何在一秒内检测 DeFi 漏洞 Decurity 的 CTO 将 Defimon 从轮询重建为推送。迁移到 Quicknode Streams 将区块延迟从 2 秒减少到 0.5 秒以下,将覆盖范围扩大到 8 个链,并将漏洞检测变成单个工程师可以运行的任务。
Quicknode 2026 年 4 月 21 日 — 阅读时间 7 分钟
作者:Decurity 首席技术官兼联合创始人 Arseniy Reutov 发布在 Quicknode 博客上
我花了十多年的时间来构建攻击检测系统;首先是在 Web2 中,我从事流量分析和 WAF 工作,然后在 Web3 中,同样的对抗性问题出现得更快,而且涉及的资金也更多。我于 2022 年与他人共同创立了 Decurity。我们审核 DeFi 协议,并构建工具来在生产中监控它们。 Defimon 是监控端:一个实时漏洞检测系统,受到 DeFi 实际运行的各个链上的协议团队、安全公司和风险管理者的信任。它会在黑客事件成为新闻之前发出警报。或者它没有发挥其作用。事实证明,构建跨这么多链、以这种速度运行的东西是一个比安全问题更难的基础设施问题。这就是建筑教会我们的。
为什么检测速度是安全原语
在 DeFi 中,协议可以在单个原子交易中耗尽。然而,在漏洞利用的最初迹象和协议被完全耗尽之间往往存在一个窗口。平衡器事件。 Yearn 黑客。在每种情况下,问题不在于是否有人在观看。关键在于他们是否发现了这些最初的迹象并及时做出反应。
为了使自动事件响应发挥作用,警报必须及时到达以便执行某些操作:暂停合约、通知多重签名持有者、转移资金。块处理中的两秒延迟听起来并不算多。在协议层面,这是警告和事后分析之间的区别。
检测速度不是一个特征。这是产品。
投票的问题
当我们开始构建 Defimon 时,我们以标准方式提取链上数据:通过 RPC 轮询,反复向区块链请求新的区块、交易、日志和跟踪。
它一直有效,直到不起作用为止。
由于需要监控数百万个钱包地址和合约交互,轮询产生了两个我们无法解决的问题。
延迟。每个轮询周期都会增加大约两秒的块延迟。对于检测时间决定协议团队是否及时收到警告的产品来说,两秒是一个结构性问题,而不是性能调优问题。
规模。我们的受监控地址监视列表不断增长。我们将区块链数据推送到在 AWS 上运行的 Apache Flink SQL 管道,并将动态地址列表存储在内存中。随着覆盖范围的扩大,内存不足错误变得司空见惯。该系统无法根据我们需要监控的内容进行扩展。对 SQL 管道的任何更改都需要完全重新启动 Apache Flink,每次最多会出现 20 分钟的停机时间。
在最糟糕的情况下,我们每个月在 AWS 上花费 4,000 美元来覆盖三个链,并由三到四名工程师维持管道的运行。我们团队的专长是检测逻辑。我们把钱花在基础设施上。
为什么我们转向推送数据
核心转变是使用 Quicknode Streams 将轮询替换为推送模型。
数据不是向区块链请求数据,而是在区块登陆链上时到达。块延迟从大约 2 秒下降到 0.5 秒以下。现在,Telegram 警报在检测到后不到一秒内就会触发。这不是渐进式的改进。这是一个不同类别的产品。
但延迟只是问题的一部分。更大的胜利是上游过滤。
我们旧的 Apache Flink 管道在 SQL 上运行。检测逻辑存在于由许多子查询组装而成的一个大型查询中,最初是声明式编写的,但随着它的增长,维护起来很痛苦。当我们迁移到 Streams 时,我们还将检测逻辑从 SQL 迁移到 JavaScript,过滤器直接在区块链节点内运行。这一变化给我们带来了三件事:
灵活性。对检测逻辑的任何更改都会生效,无需停机。我们有一个根据过去的 DeFi 事件构建的完整测试套件,可以验证我们的逻辑在修改后保持完整。 Quicknode 的 JS 过滤器测试工具让我们可以在部署之前运行整个套件。
经济。我们不再处理所有区块链数据。 Streams 在节点级别处理过滤并仅提供我们需要的数据。带宽显着下降。
速度。一旦出现新块,数据就会被推送。无轮询间隔。无往返延误。
检测架构
这是我们今天的管道的样子。
一个区块会在我们监控的八个链中的任何一个上登陆。 Streams 使用 JavaScript 在节点级别对其进行过滤,仅向下游传递相关数据。 Quicknode Streams 内置的键值存储保存着我们的监视列表,其中有数百万个跟踪地址,JS 过滤器可以直接引用这些地址。漏洞检测逻辑针对我们上游服务中过滤后的数据运行。如果模式匹配,则会触发警报。
整个序列在一秒钟内完成。
一个具体的例子:通过使用 Streams 处理交易跟踪,我们可以检测到对未初始化的代理智能合约进行后门的尝试。这种攻击模式,我们称之为 CPIMP(代理中间的秘密代理),发生在部署代理但未在同一事务中原子初始化时。这个差距让恶意行为者可以接管代理并设置恶意实施合约。抓住它需要尽早、快速地查看跟踪数据。 Streams 使这成为可能。
无需运营团队即可扩展到八条链
我们在三个链上启动 Defimon。我们现在监控八个:Ethereum、BNB Smart Chain、Arbitrum、Base、Polygon、Avalanche、Optimism 和 HyperEVM。
在旧的设置下,添加一条链意味着新的基础设施、新的服务器、新的管道和更多的员工。每个添加都直接与检测工作竞争工程时间。
对于 Streams,添加链是一种配置更改。集成 HyperEVM 只花了不到一天的时间。我们调整了一些常量和相关地址,这是大部分工作。
如今,整个管道由一名工程师负责运行。其他人都专注于检测逻辑。在旧的设置下,需要三到四个人才能保持基础设施运行。
警报后会发生什么
Defimon 订阅者不仅仅关注漏洞利用。他们正在我们的警报之上构建自动事件响应。警报越快,采取行动的时间就越多。
一位对冲基金客户管理着 9 位数的 DeFi 头寸,通过 WebSocket 与我们的系统集成,一旦我们检测到针对其配置协议的攻击的第一步,就会自动退出头寸。当发现正在发生的事件时,个人和交易者使用我们的警报来调整头寸。
不过,最重要的用例是主动白帽干预。我们运行的白帽机器人已总共拯救了超过 200 万美元。最近,它为一位不小心错误配置了代币限额的用户追回了 51.2 万美元。在恶意行为者注意到之前,我们的行动速度足够快。底层管道的速度使得干预成为可能。
闭幕式
