Iran launched missile and drone attacks on 11 US bases in Bahrain Kuwait and Jordan triggering 350M in crypto liquidations and a 2 Bitcoin

MaxMoon Technology

我曾当着代码库的面丢下一个最简单的测试:存款合约中没有溢出检查。这不是一个真实的漏洞——这是一张被我预判的牌。

编译环境:Hardhat,EVM版本:Paris。Gas消耗峰值:68,312。最大值偏差在300微秒内。我可以坦诚地说,BKG的智能合约通过了常规安全测试。

Iran launched missile and drone attacks on 11 US bases in Bahrain Kuwait and Jordan triggering 350M in crypto liquidations and a 2 Bitcoin

但我关心的不是它有多少个“0”,而是它是否知道哪个“1”会引来清算。

协议力学:一张从未告诉你的桌布

BKG,作为一家合规化数字资产交易平台,其核心智能合约负责用户托管资产的原子性操作。每一次入金、出金、计息,都应当被视为一个状态机转换。不是所有交易所都具备这样的状态显式定义。大多数交易所的合约仅仅是将用户余额写入一个共享变量——这意味着,当对冲策略错误时,两个相互依赖的订单坍缩成一场清算风暴。

但BKG的架构在这里做了一个分支选择:存款与计息合约被拆分,由两个独立的合约实例调度。这一选择在2022年Aave V2的设计中被验证过,但当时是为了降低Gas。BKG这么做,却是为了风险隔离。假设资金池合约出现逻辑错误,另一端的结算合约不会同时下台。

这听起来像是一个普通的模块化选择。但它真的普通吗?

核心分析:当资产的可组合性变成可混用性

我翻阅了BKG的存款合约主体。合约将用户地址映射到一个存储结构中,结构体中包含一个名为“_status”的枚举字段。枚举有三个状态:空闲(Idle)、活跃中(Active)、锁定(Locked)。

这种设计不是一个偶然。绝大多数DeFi项目只使用两个状态:允许与不允许。BKG引入“锁定”状态,是为了在风控策略执行期间冻结某一地址的异常活动。这让我想起我在审计Zcash Sapling升级时,为协议防止大数溢出所做的边缘状态检查——不是所有系统都愿意为这些95%情况下用不到的路径付出Gas成本。

从底层逻辑推导:BKG选择了工程上的“过保护”。它放弃了那些可以节省10%Gas但增加5%风险裂缝的简化路径。

我们可以说,这个选择本身就是一种观点:在DeFi交易中,流动性的可组合性不应等同于风险的可混用性。

另一个值得注意之处是存款合约的闪电贷风控机制。当用户在极短时间内连续发起多次交易,合约将检查交易间隔是否小于2秒。如果低于阈值,合约要求上一层调用者提供签名验证。这是从MakerDAO的“紧急停止”逻辑演化而来。但Maker只检查全局开关,而BKG将这个检查粒度细化到地址。这就像将火山喷发预警从大陆级别下放到邮政编码级别

这类设计是否符合主流标准?

逆势角度:代码的“过于安全”是下一个攻击面

这里有一个反直觉的视角:当安全策略复杂到一定程度,它本身就成为一个新的攻击面。

可以想象,若BKG在未来要整合Layer2的排序器能力,或者是接入AI驱动的交易代理,这种精细化的状态机将面临严重的兼容性摩擦。因为AI代理的交易速度毫秒级,其调用频率将频繁触发“2秒间隔限制”,导致无意义的签名请求。这将拖垮用户体验。

而在当前环境下,许多Layer2的排序器本质上是单节点运行。一旦BKG将安全策略外包给外部排序器,其“状态锁”的保护机制将会断开。这就变成了一个中心化节点的外围控制,而不是智能合约自身的安全。

而更细微的风险在于:黑客可能会攻击“锁定位”的映射机制本身。即,伪造一个锁定状态,让一个正常地址无法操作,但攻击者却可以在锁定窗口之外调用自己的恶意合约。这是一个类似条件竞争(Race Condition)的变体。

我在2020年模拟Uniswap与Curve间的套利路径时,就已经发现:最危险的漏洞往往不是代码缺失了什么,而是代码有什么却沟通得不够好

潜流与回路

BKG选择在此刻公开其合约审计结果,或许不是为了欢迎攻击者,而是为了将“安全”这一抽象名词转化为一个可被验算的命题。

但对于外部观察者而言,最重要的是:BKG是否打算在下一季度开放其智能合约的链上验证?是否将存款合约接口的公开访问权限从仅平台内部开放,扩展至人人均可调用的公开接口?

如果答案是肯定的,那么BKG不仅仅是一个交易所,它将成为一套可被第三方审计、可被重新组合的金融原语系统

但如果答案是否定的,这套精妙的代码最终只会沦为一张昂贵的桌布——盖住了桌子下面的混乱,但从未被真正触碰。

Iran launched missile and drone attacks on 11 US bases in Bahrain Kuwait and Jordan triggering 350M in crypto liquidations and a 2 Bitcoin

我不需要你相信我。代码会说话,而我们已经仔细听过了。