Phalcon Debugger:定位调用、代理源码与分享行
链小知 · 进阶 · 核验 · 依官方文档整理
根据官方历史示例核已有交易分析记录,区分外部调用面板、内部调用调试和短期模拟链接。
开始前准备
- 准备目标链、交易哈希及已有脱敏调用流/调试截图或URL;不调用交易、模拟或业务API。
- 根据当前可读官方Debugger方法页整理,其Euler示例为历史材料;新版入口和账户权益未实测。
1. 固定交易和调试起点
官方给出两种进入Debug方式:调用流某行的调试图标,或交易页右上Debug按钮。先对照已有记录的链和完整交易哈希,再记调用流行号;不同交易的相同行号不指同一个动作。
9月15日媒体直接链接Phalcon的Safe事故交易并引用其告警,证明事故分析中的具体产品关注;不据此宣称本教程Euler示例是近三个月事件或Security拦截功能已由Explorer执行。
检查结果:链、哈希和起点行号固定,历史方法与近期事故角色分开。
2. 按面板定位外部和内部调用
Call Trace Panel列外部调用和事件;Debug Trace Panel把内部与外部调用结合成当前调用栈,参数和返回值另有面板。调试console行首Jump表示内部调用,不把外部面板缺某内部行当该调用不存在。
Call Trace参数开关可显示完整参数,外部调用的Rawdata可看原始参数。把解码显示与原始调用数据并列保留,缺ABI或源码时不猜函数含义。
检查结果:外部/内部调用及原始/解码参数有明确来源。
3. 核Step In和代理代码范围
Step In进入被调用函数,Step Out返回当前函数调用点。官方Euler示例先进入eDai代理,再次Step In才显示具体实现;看到代理层不代表已看到最终函数源码。
Next/Previous红色按钮按整个调用轨迹移动,蓝色按当前函数调用点移动。源码面板默认展示调用位置,未验证/未公开源码可能无法显示;官方该句有not unverified双否定拼写,本教程不把空面板当合约无代码。
检查结果:当前函数、代理/实现层、导航范围与源码缺失原因分别记录。
4. 保存行参数并区分模拟链接
官方Debugger分享URL用line和debugLine记录行号;核已有URL是否同时对应目标交易和行,不实际发送给其他人。URL可定位视图,不替代原截图、版本及分析理由。
模拟方法页的分享链接写分享后48小时有效,且模拟仅列Ethereum、BSC、Arbitrum、Optimism、Avalanche和Polygon;不能从更广的Explorer支持网络推导每链模拟可用。本文不提交模拟,既有模拟材料还需记录区块位置、输入和生成时间。
检查结果:调试行链接、原证据和模拟有效期/范围分别保存。
怎样确认完成
- 留下输入范围、原材料、核对结果和未知项;没有实例或回执时保持未验证。
常见错误与边界
- Phalcon Security自动拦截、Explorer调试和Compliance合规是不同产品范围,告警引用不证明本任务被实测。