关于 evm-chains
evm-chains 是用于解析受支持 EVM 链元数据并路由只读链上查询的技能。它将账户和交易查询指向 Etherscan、Blockscout 或公共 RPC,并可为受支持链补充桥接数据。
主要功能
- 01解析链名称、ID 和别名
- 02路由余额与代币查询
- 03查询转账和交易
- 04使用浏览器 API 或公共 RPC
- 05补充桥接交易信息
适用场景
- 01查询目标链上的地址余额
- 02追踪代币转账或首次入金
- 03调查受支持的跨链交易
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill evm-chains安装后在 Claude Code 中输入/evm-chains确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/address-sweeps.mdblockscout-api.mdblockscout-chains.mdblockscout-endpoints.mdbungee-api.mdchain-aliases.jsonetherscan-api.mdetherscan-chains.mdexplorer-paths.jsonlayerzero-bridging.mdlifi-bridging.mdoptimism-pre-2021-11-11.mdtarget-fallback-rpcs.jsontarget-mainnets.jsonscripts/blockscout-detect-plan.shetherscan-detect-plan.shresolve-chain.sh详细介绍
EVM 链
针对特定 EVM 链的数据集(链名称、链 ID、公共 RPC、原生货币符号、默认区块浏览器 URL、RouteMesh 支持情况),以及一个链上数据读取路由器:解析链后,将余额、代币、转账、交易和首次入金查询分发到 Etherscan(首选)或 Blockscout(备用)。对于桥接交易和跨链兑换,仅当相关链属于目标链时,才使用 Bungee、LayerZero 或 LI.FI 数据补充浏览器/RPC 验证结果。
在读取 RPC、发送交易、调用合约、构建特定链的 RPC URL,或为地址、交易、区块创建浏览器链接之前,使用此技能解析链元数据;解析链后,也可使用此技能查询链上账户数据(请参阅查询链上数据(路由))。当用户提到 bridging、bridge tx、cross-chain swap、Bungee、LayerZero、LI.FI、Socket、Stargate、OFT、CCTP 或 Aori 时,也应使用此技能;如果推断某笔交易与桥接有关,也应使用此技能。
按显示名称或数字链 ID 匹配链。./references/target-mainnets.json 是此技能的权威范围清单。如果请求的链未列在其中,请勿使用 Etherscan、Blockscout、Bungee、LayerZero、LI.FI、RouteMesh、Chainlist、网页搜索或公共 RPC 来绕过范围限制。请让用户在 https://github.com/PaulRBerg/agent-skills 提交功能请求。
此外,还要将 ./references/chain-aliases.json 中的常见代码别名规范化为对应的目标主网条目。
地址全链扫描
当用户提供一个 EVM 地址,并询问它是否曾在任何链上活跃、使用过哪些链,或目前在各链上持有哪些余额时,请先阅读 ./references/address-sweeps.md,再使用下方的单链路由器。扫描范围仍仅限于 ./references/target-mainnets.json,而非所有服务商支持的 EVM 链。
如果提示中指定了某条目标链,请改用查询链上数据(路由)。
查询链上数据(路由)
若要读取账户数据——原生余额、代币持仓、ERC-20/721/1155 转账、交易历史或首次入金——请先解析链,再将查询分发到相应的区块浏览器 API。不要默认使用 Ethereum;应根据提示推断链(明确提及链、特定链代币,例如 POL→137 / ARB→42161、目标链别名)。如果链不明确,请提问。如果解析出的链不是目标链,请改为请求功能,而不要执行查询。
- 解析链 — 通过
./references/target-mainnets.json和./references/chain-aliases.json将名称或别名映射为链 ID。 - Etherscan(首选) — 如果链 ID 列在
./references/etherscan-chains.md中,请按照./references/etherscan-api.md操作(统一 API V2,需要$ETHERSCAN_API_KEY)。 - Blockscout(备用) — 对于 Etherscan 未覆盖的目标链,或免费 Etherscan 方案无法查询的付费 Etherscan 链,请按照
./references/blockscout-api.md操作。 - 两者都不适用 — 如果目标链未列入任何一个注册清单,请直接通过 JSON-RPC 查询该目标链的公共 RPC(使用
cli-cast技能中的cast,或使用curl)。如果该链不是目标链,请改为请求功能,而不要执行查询。
付费链自动回退。 Base(8453)、Optimism(10)、Avalanche(43114)和 BNB Chain(56)是 Etherscan 收录的目标链,但其数据端点需要付费的 Etherscan 方案。如果目标链属于这些链并且 ./scripts/etherscan-detect-plan.sh 报告 paid_chains=false(免费层级),则改用 Blockscout。其他所有列入 Etherscan 的目标链仍默认使用 Etherscan。
Bridge 数据补充
当用户提到桥接、bridge tx、跨链兑换或桥接提供商,或者从日志、交易对手方、calldata 或代币转移情况来看,某笔交易似乎与桥接有关时,首先确认已知的源链和目标链是否都是目标链。如果任一已知链不在 ./references/target-mainnets.json 中,请用户提交功能请求,而不要继续操作。
然后根据提示或证据,转到相应的桥接参考文档:
- Bungee / Socket / Bungee Auto: 阅读
./references/bungee-api.md。 - LayerZero / Stargate / OFT / CCTP / Aori / Value Transfer API / LayerZeroScan: 阅读
./references/layerzero-bridging.md。 - LI.FI / LiFi / li.quest / LI.FI Explorer: 阅读
./references/lifi-bridging.md。
将桥接 API 用作只读补充数据源,并与 Etherscan、Blockscout、区块浏览器及 RPC 收据结合使用。不要仅凭桥接 API 就将其视为链上执行的权威依据;只要条件允许,就使用区块浏览器/RPC 数据验证已提交的交易及最终结果。此技能中,返回的路由步骤、calldata、userSteps、transactionRequest 或签名仅供检查。不要签署消息、提交签名、执行用户步骤或广播桥接交易。
RouteMesh
仅当 ./references/target-mainnets.json 中的 routeMesh 字段为 true,且 ROUTEMESH_API_KEY 环境变量可用时,才使用 RouteMesh。
若要验证当前 RouteMesh 支持情况,请调用 GET https://lb.routeme.sh/chains;备用端点为 https://lb2.routeme.sh/chains。不要使用 https://rpc.routeme.sh/chains;尽管该主机名出现在 RouteMesh 的 OpenAPI 规范中,但它可能无法解析。
按以下格式构造 RouteMesh RPC URL:
https://lb.routeme.sh/rpc/CHAIN_ID/ROUTEMESH_API_KEY
将 CHAIN_ID 替换为数字链 ID,并将 ROUTEMESH_API_KEY 替换为 ROUTEMESH_API_KEY 环境变量的值。如果 routeMesh 为 false,或 ROUTEMESH_API_KEY 不可用,则先使用该链的主要公共 RPC,再按顺序使用列出的备用 RPC。
公共 RPC
公共 RPC 仅尽力提供服务。在依赖其获取数据或调用合约之前,请使用 eth_chainId 验证。如果主要端点失败,请按顺序尝试 ./references/target-fallback-rpcs.json 中该链对应的备用端点。如果某条链没有备用行,则只列出主要公共 RPC。
仅对目标链使用 RPC。对于 ./references/target-mainnets.json 中未列出的链,请用户前往 https://github.com/PaulRBerg/agent-skills 提交功能请求。
区块浏览器 URL
./references/target-mainnets.json 中的 explorerUrl 字段是该链规范区块浏览器的基础 URL。追加 ./references/explorer-paths.json 中的路径格式即可构建链接。
Etherscan 和 Etherscan-stack 区块浏览器(Arbiscan、Basescan、BscScan、Polygonscan、Optimism Etherscan、Lineascan、Snowscan、Blastscan、Berascan、Uniscan、Gnosisscan、abscan.org)均遵循此格式。大多数基于 Blockscout 的区块浏览器和链原生目标浏览器也接受相同的路径段,但约定可能会有所变化——如有疑问,请通过区块浏览器界面进行验证。
存在区块浏览器 URL、使用 Etherscan 风格的路径,或区块浏览器名称中包含 Etherscan-stack,都不代表支持 Etherscan API V2。如需了解 API 覆盖范围,请使用 ./references/etherscan-chains.md。Etherscan 的实时 https://api.etherscan.io/v2/chainlist 端点可能包含其他受提供商支持的链,但除非这些链出现在 ./references/target-mainnets.json 中,否则不属于此技能范围。此 JSON 仅作为用于 RPC 和区块浏览器链接构建的链元数据。
注意事项
通过当前的浏览器/RPC 路由无法获取 OP Mainnet 再创世之前的历史数据。 对于 OP Mainnet(10)在 2021-11-11 最终再创世之前的查询,请先阅读 ./references/optimism-pre-2021-11-11.md,再使用 Etherscan、Blockscout 或公共 RPC 的结果。
Ronin(app.roninchain.com)不遵循 Etherscan 的路径方案。 构建 Ronin 链接前,请先通过浏览器 UI 验证。
Ronin(2020)与非目标 Chainscout 注册表条目冲突。 请勿使用 Chainscout 元数据查询 Ronin;请改用 Ronin 列出的浏览器/RPC 或其他能识别目标的来源。
目标主网
目标主网元数据位于 ./references/target-mainnets.json。slug 字段是 Sablier SDK 的链 slug(sablier 包 ~/sablier/sdk、src/evm/chains/specs.ts,解析为 meta.slug ?? key)。Arbitrum Nova、Celo、Fantom、IoTeX 和 Zora 未在 SDK 中定义;它们的 slug 遵循相同约定(小写、名称中的单词以连字符连接)。
目标备用 RPC
目标备用 RPC 元数据位于 ./references/target-fallback-rpcs.json。如果 ./references/target-mainnets.json 中的 primaryPublicRpc 验证失败,请按顺序使用各链的 fallbackPublicRpcs 值。