跳到正文
cccskills
免费在 GitHub 公开

classify-onchain-owner

The low-level on-chain probes for identifying what an owner address is — cast code → EOA / EIP-7702-delegated EOA / contract, VERSION() → Gnosis Safe, read-only get-owner-ica.ts derive → ICA derivation, getAccountInfo → Sealevel account existence — with how to interpret each result. The primitive layer beneath validate-owners / resolve-artifacts / update-owners, which each apply their own per-chain or per-artifact policy on top.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md5.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Classify On-Chain Owner (primitive probes)

These are the raw probes for determining what an owner address IS on chain. A caller runs the relevant probe, interprets the result per the tables below, then applies its OWN policy (reject EOA, ask-the-user for non-Safe, existence-only sanity check, controller classification, etc.). This skill supplies the primitives and their interpretation only — it does not decide policy.

EVM / Tron — code probe (EOA vs EIP-7702 vs contract)

cast code <address> --rpc-url <rpc> (or the multiProvider equivalent):

ResultMeaning
0x (no code)Plain EOA.
0xef0100<20-byte-delegate> — 46 chars, matches ^0xef0100[0-9a-fA-F]{40}$EIP-7702-delegated EOA. Still has a private key behind it; treat as an EOA for ownership purposes.
any other bytecodeContract (Safe / ICA / timelock / custom multisig / …) — probe further.

EVM — Safe probe

cast call <address> "VERSION()(string)" --rpc-url <rpc>:

ResultMeaning
a version string (e.g. "1.3.0")Gnosis Safe — record the version.
reverts / no returnNot a Safe — some other contract; probe further or ask the user.

EVM — ICA derivation

Derive the deterministic ICA address for (origin, controlling-owner) read-only — view calls only, no transaction — with get-owner-ica.ts and NO --deploy:

pnpm --silent tsx typescript/infra/scripts/keys/get-owner-ica.ts \
  --environment mainnet3 --ownerChain <origin> --owner <controlling-owner> --chains <chain>

⚠️ Never use hyperlane ica deploy for this probe. That CLI command has no read-only mode: it deploys the ICA (spends gas, creates a contract) whenever the derived account is absent. Probing a non-ICA owner therefore mints an unrelated ICA — the exact failure a read-only classifier must avoid. get-owner-ica.ts without --deploy only calls InterchainAccount.getAccount (a view) and prints the address.

Compare the derived address to the on-chain owner:

ResultMeaning
derived address == the on-chain ownerThe owner is an ICA controlled by <controlling-owner> on <origin>. Classify the controller by re-running the code + Safe probes on it.
derived address != the ownerNot an ICA from that origin/controller — try another origin/controller, or ask the user.

Sealevel — account existence

getAccountInfo(<pubkey>) via the SVM SDK provider:

ResultMeaning
nullAddress has never had state on this chain (transferring ownership here would brick the route).
non-nullAccount exists (may be executable / PDA / plain wallet).

Open-set note

Contract-but-not-a-Safe is NOT automatically an ICA. These probes cover only the cheap cases (EOA via code, Safe via VERSION(), ICA via a known origin/controller derivation). Everything else — Squads multisig PDA, Turnkey, Privy, MPC, custom multisig, timelock — the caller must resolve with the user; never guess.

Consumers

/warp-deploy-validate-owners (per-chain classify + reject-EOA policy), /warp-update-resolve-artifacts (per-artifact classify + governance-map shortcut + open-set + controller classification), /warp-deploy-update-owners (target-owner existence sanity check).

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Write a changeset file in the `hyperlane-registry` repo for a PR that adds, updates, or modifies warp route config / chain metadata / addresses. Canonical pattern — never run the interactive `pnpm changeset` CLI; write the file directly. Referenced by any skill that opens a registry PR.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Trigger Docker image builds for Hyperlane agent, monorepo, or node service images. Use when the user wants to build new Docker images for a branch, commit, or tag.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Review code changes using Hyperlane monorepo coding standards. Use when reviewing PRs, checking your own changes, or doing self-review before committing.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Debug why a Hyperlane message is not being processed. Use when given a message ID or explorer URL to investigate delivery failures, gas estimation errors, validator issues, or other processing problems.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Debug RPC provider health issues for a chain. Use when alerts mention RPC failures, high latency, stale blocks, or provider errors. Diagnoses the issue and recommends fixes.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

Debug validator checkpoint inconsistencies where some validators are behind others. Use when alerts mention "checkpoint inconsistency", "validators behind", or "inconsistent latest checkpoints", or when asked to debug validator sets, investigate validator delays, or troubleshoot metadata fetch failures for a chain. Defaults to default_ism app context if not specified.

中文简介正在准备中。当前显示原文说明。

hyperlane-xyz/hyperlane-monorepo762026年10月23日 更新

查看 hyperlane-xyz 的全部技能

报告此技能的问题