闪电贷一笔交易动辄牵动数十个外部调用,单看 revert 信息很难定位问题。本文整理一套实操层面的调试方法,让你能像调 Web2 服务一样调链上交易,不再「碰运气」改参数。
一、本地 Fork 重放
首选 Foundry 的 forge test 或 anvil fork。把出问题的主网交易 hash 拉到本地,用同样的 block 状态重新跑一遍,可以拿到完整 trace。再结合 闪电贷调试方法 中常用的断点技巧,能快速锁定哪一步 revert。
二、Tenderly 可视化
如果不熟悉命令行,可以直接把 tx hash 丢进 Tenderly,它会给出每一步的合约调用、状态变化、emit 事件,并用颜色高亮失败节点。Tenderly 对新人很友好,能配合 闪电贷代码示例 找出哪一处与预期不一致。
三、日志与事件设计
好的合约会在关键路径 emit 信息丰富的事件:借出金额、swap 结果、归还金额、premium。一旦交易失败,链上日志依然可以反推问题。落地时建议参考 闪电贷最佳实践 中的事件命名规范,避免后期排查时一头雾水。
四、链下守护进程辅助
生产环境还要有链下监控:抓取 Aave 池子状态、token 余额、价格变动,并把这些数据与失败交易关联。这样你能发现「失败是因为价格突然反向」还是「失败是因为合约逻辑漏洞」。两类问题处理方式完全不同。
五、把 bug 沉淀为 case
最后建议把每一次排查过程沉淀为团队 wiki:什么现象、什么根因、怎么修。这些 case 长期下来比任何官方文档都珍贵,新人入职时让他读完再上手,就能少走九成弯路。这就是好的 闪电贷开发教程 给你的真正复利。