mcpField
E
evm-chains

evm-chains

github.com/paulrberg数据与数据库102176 次安装今天更新
代码仓库

关于 evm-chains

evm-chains 是用于解析受支持 EVM 链元数据并路由只读链上查询的技能。它将账户和交易查询指向 Etherscan、Blockscout 或公共 RPC,并可为受支持链补充桥接数据。

主要功能

  1. 01解析链名称、ID 和别名
  2. 02路由余额与代币查询
  3. 03查询转账和交易
  4. 04使用浏览器 API 或公共 RPC
  5. 05补充桥接交易信息

适用场景

  1. 01查询目标链上的地址余额
  2. 02追踪代币转账或首次入金
  3. 03调查受支持的跨链交易

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulrberg/agent-skills --skill evm-chains

安装后在 Claude Code 中输入/evm-chains确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
address-sweeps.md
blockscout-api.md
blockscout-chains.md
blockscout-endpoints.md
bungee-api.md
chain-aliases.json
etherscan-api.md
etherscan-chains.md
explorer-paths.json
layerzero-bridging.md
lifi-bridging.md
optimism-pre-2021-11-11.md
target-fallback-rpcs.json
target-mainnets.json
scripts/
blockscout-detect-plan.sh
etherscan-detect-plan.sh
resolve-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、目标链别名)。如果链不明确,请提问。如果解析出的链不是目标链,请改为请求功能,而不要执行查询。

  1. 解析链 — 通过 ./references/target-mainnets.json 和 ./references/chain-aliases.json 将名称或别名映射为链 ID。
  2. Etherscan(首选) — 如果链 ID 列在 ./references/etherscan-chains.md 中,请按照 ./references/etherscan-api.md 操作(统一 API V2,需要 $ETHERSCAN_API_KEY)。
  3. Blockscout(备用) — 对于 Etherscan 未覆盖的目标链,或免费 Etherscan 方案无法查询的付费 Etherscan 链,请按照 ./references/blockscout-api.md 操作。
  4. 两者都不适用 — 如果目标链未列入任何一个注册清单,请直接通过 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 值。

评论

支持 Markdown