前言¶
链上调查往往从「一个已知地址」起步:要在海量 event log 里弄清它常和哪些合约、哪些事件、哪些对手地址一起出现,手工写 SQL、反复改聚合维度,既费时间又容易漏掉 topic1 / topic2 两侧的不对称关系。下面介绍 SkillHub 上的社区 Skill EVMLOG(坐标 @user_d4087b8b/evmlog):把「地址 padding → 双向 log 检索 → 模式强弱分类 → 交易哈希回查」写成 Agent 可照做的步骤,并约定通过 Dune API 查询 logs 表。
这是什么¶
EVMLOG 在 Skill 文档中的全名是「EVM Log 关联模式识别(从已知地址出发)」。它由 SkillHub 社区发布者 user_d4087b8b 维护,版本 1.0.0,分类为 it-ops-security,来源标注为 community。Skill 本身是一份基于通用 SKILL.md 格式的操作说明与示例代码,不捆绑独立 CLI;Agent 读取后按步骤调用 Dune,对目标地址在 topic1、topic2 两个 indexed 位上的共现模式做统计与归类。
官方入口:
- API 地址:https://api.skillhub.cn/user_d4087b8b/evmlog
- SkillHub 页面:https://www.skillhub.cn/skills/user_d4087b8b/evmlog
页面标签标明 requires_api_key=true,对应文档中的 Dune API Key。
核心功能¶
以下能力均来自 Skill 文档中的流程定义,可按 Step 0–8 复现。
- 地址标准化:将 20 字节地址左补零为 32 字节 topic 匹配形式(
A*),用于topic1/topic2等值过滤。 - 双向 Log 检索:在指定
logs_table(如polygon.logs)上,分别查询topic1 = A*与topic2 = A*,按contract_address、topic0、对手 topic 聚合频次。 - 模式聚合与强弱分类:合并两侧结果,按
dominance_threshold、gap_threshold、min_sample_size等参数区分强模式与弱模式。 - 弱模式扩展(可选):对样本稀疏的模式扩大
LIMIT,并关联transactions分析from/to分布。 - 哈希回查与序列:对强模式抽取代表
tx_hash,在同一笔交易内按 log 顺序输出contract:topic0事件序列。 - 对手地址标签化与新地址发现:用
known_labels标注高频对手地址,并列出未在已知集合中的新地址。 - 结构化输出:主流程
run_skill返回 CSV 字符串,包含强模式表、高频对手地址表、新发现地址表。
适用链在文档中写明为 Polygon、ETH、BSC、TRON 等 EVM 兼容环境,前提是目标地址可能出现在事件的 topic1 或 topic2(如 ERC20 Transfer、Approval、NFT Transfer、DeFi 自定义事件等)。
安装与启用¶
SkillHub 页面给出的安装方式是:让 Agent 参照 https://skillhub.cn/install/skillhub.md,安装坐标 @user_d4087b8b/evmlog。文档中的通用做法如下。
1、确认本机已有 SkillHub CLI
command -v skillhub && skillhub --version
未安装时可执行完整安装(文档推荐):
curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash
2、安装到当前 Agent 的 skills 目录
安装时必须用 --dir 指向 Agent 实际读取的 skills 路径,否则默认落在 ./skills/ 可能不会被识别:
skillhub install @user_d4087b8b/evmlog --dir <skills 目录>
常见路径(摘自 SkillHub 安装文档):
- Cursor:
~/.cursor/skills/ - Claude Code:
~/.claude/skills/ - Codex:
~/.codex/skills/或项目下的.agents/skills/
安装完成后按你所用客户端的要求重启或刷新 Agent,使其加载新 Skill。
3、准备 Dune API Key
Skill 示例代码通过请求头 X-Dune-API-Key 调用 https://api.dune.com/api/v1/ 下的 query / execute / results 接口。将 Key 配置在运行环境或脚本中(文档占位为 YOUR_DUNE_API_KEY),勿提交到版本库。
截至撰写时,SkillHub 页面显示的统计为:评分 100000,下载 826,安装 0(以页面为准,会随时间变化)。
典型用法¶
启用 Skill 后,向 Agent 说明目标地址、链上日志表名与时间窗口,并明确要求按 Skill 中的 Step 0–8 执行。文档给出的 Python 主入口示例如下(需已配置 Dune API Key 与 requests 等依赖):
KNOWN_LABELS = {
"0xabcdef...": "Binance Hot Wallet",
"0x123456...": "USDT Treasury",
}
csv_output = run_skill(
address="0xYourTargetAddress",
logs_table="polygon.logs",
block_time_start="2024-01-01",
top_n_initial=10,
top_n_expand=50,
dominance_threshold=0.40,
gap_threshold=0.15,
min_sample_size=20,
max_hash_examples=20,
known_labels=KNOWN_LABELS,
)
with open("output.csv", "w", encoding="utf-8") as f:
f.write(csv_output)
必需输入参数(文档表格):
| 参数 | 说明 | 示例 |
|---|---|---|
address |
目标地址 A | 0xabc... |
logs_table |
Dune 日志表名 | polygon.logs |
chain |
链标识 | polygon |
双向检索的核心 SQL 形态为:在 block_time 过滤后,对 topic1 = '{A_padded}' 或 topic2 = '{A_padded}' 分组统计 contract_address、topic0 及对手 topic,并按 hit_count 排序、LIMIT 取前 N 行。Agent 应使用 Skill 内嵌的 pad_address、run_dune_query、fetch_log_patterns 等片段,而不是随意改写聚合维度。
适用场景与注意¶
适合谁:做链上风控、合规调查、地址画像的分析师或安全工程师;已习惯用 Dune 查 logs,希望把「从单点地址扩图」的流程固定下来,交给 Coding Agent 按同一套阈值重复跑。
限制与坑:
- 依赖 Dune API 与对应链的
logs(及扩展步骤中的transactions)表名;TRON、BSC 等需改logs_table,逻辑不变。 - 文档说明 topic0 到事件名的 ABI 解码已从主流程移除;需要事件名时可另行查 4bytes.directory 等来源。
expand_weak_patterns在主入口示例中默认注释,交互稀疏时需手动开启。- 查询性能:示例执行使用
performance: "medium",文档建议百万行以内可用;范围过大应缩短block_time_start或改用更高性能档位。 - 每次 Dune 查询会创建/执行 query,请注意 API 配额与私有查询策略(示例里
is_private: True)。
结尾¶
EVMLOG 把「已知 EVM 地址 + 日志表」下的关联模式识别拆成可核对的多步流程,输出可存档的 CSV,适合作为 Agent 在 it-ops-security 场景下的操作手册。安装与坐标以 SkillHub 为准:https://www.skillhub.cn/skills/user_d4087b8b/evmlog ,API 地址:https://api.skillhub.cn/user_d4087b8b/evmlog 。