将 .eth 名称解析为以太坊地址,反之亦然。适用于用户提供 .eth 名称(如“发送给 vitalik.eth”)、显示地址时展示 ENS 名称、查询 ENS 档案,或帮助注册、续期、管理 .eth 名称。
ENS( 后继名称服务) —— 技能是一项面向实际任务的技能,主要用于此技能能做什么;允许 Gundwane;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使 Gundwane 能够:
.eth 名称:例如“发送至 vitalik.eth”、“查询 nick.eth”、“luc.eth 是谁”.eth 地址发起转账用户输入中匹配 *.eth 模式的任意词元(token)极可能为 ENS 名称。示例:
vitalik.ethnick.ethmyname 的可用性务必先完成解析再使用。 切勿将 .eth 名称直接传递给 LI.FI 或交易工具——必须先解析为 0x 地址。
使用 curl 将 ENS 名称解析为其以太坊地址。按以下优先级顺序尝试。
适用于获取详细数据(如到期时间、注册人、解析器)。需配置环境变量 GRAPH_API_KEY。
curl -s -X POST
--url "https://gateway.thegraph.com/api/$GRAPH_API_KEY/subgraphs/id/5XqPmWe6gjyrJtFn9cLy237i4cWw2j9HcUJEXsP5qGtH"
--header 'Content-Type: application/json'
--data '{"query":"{ domains(where: { name: "vitalik.eth" }) { name resolvedAddress { id } expiryDate registration { registrant { id } expiryDate } } }"}'
响应字段:data.domains[0].resolvedAddress.id 即为对应 0x 地址。
适合快速解析 + 同步获取个人资料数据的一体化调用。
curl -s "https://api.web3.bio/profile/vitalik.eth"
返回 JSON,包含 address、identity、displayName、avatar、description 及关联的社交资料。请使用 address 字段作为解析所得的 0x 地址。
当上述 API 不可用且本地可运行 node(项目依赖中已含 viem)时使用:
node --input-type=module -e "
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
import { normalize } from 'viem/ens';
const c = createPublicClient({ chain: mainnet, transport: http('https://eth.llamarpc.com') });
const addr = await c.getEnsAddress({ name: normalize('REPLACE_NAME') });
console.log(JSON.stringify({ address: addr }));
"
请将 REPLACE_NAME 替换为实际的 ENS 名称。
优先级: 方法一 → 方法二 → 方法三。选择当前可用且响应最快的方案。
给定一个 0x 地址,查找其主 ENS 名称。
curl -s -X POST
--url "https://gateway.thegraph.com/api/$GRAPH_API_KEY/subgraphs/id/5XqPmWe6gjyrJtFn9cLy237i4cWw2j9HcUJEXsP5qGtH"
--header 'Content-Type: application/json'
--data '{"query":"{ domains(where: { resolvedAddress: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045" }) { name } }"}'
注意:查询中地址必须为小写格式。
curl -s "https://api.web3.bio/profile/0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
若该地址已设置主 ENS 名称,则返回对应名称及个人资料。
node --input-type=module -e "
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const c = createPublicClient({ chain: mainnet, transport: http('https://eth.llamarpc.com') });
const name = await c.getEnsName({ address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045' });
console.log(JSON.stringify({ name }));
"
获取 ENS 个人资料详情:头像、简介、社交链接、文本记录等。
curl -s "https://api.web3.bio/profile/nick.eth"
常用文本记录键(供参考):
com.twitter — Twitter/X 用户名com.github — GitHub 用户名url — 网站地址email — 邮箱地址avatar — 头像 URL 或 NFT 引用description — 简介/描述com.discord — Discord 用户名直接获取头像图片:
https://metadata.ens.domains/mainnet/avatar/{name}
示例:https://metadata.ens.domains/mainnet/avatar/nick.eth
在消息中展示用户 ENS 头像时,请使用此 URL。
defi_get_wallet 获取用户钱包后,可选地检查其反向 ENS 名称。fabri.eth (0xabc...def)vitalik.eth → 0xd8dA...6045 是否向该地址发送 0.1 ETH?
0x 地址。0.1 ETH → vitalik.eth (0xd8d...6045) on Base注册仅支持在Ethereum 主网进行,需支付名称费用及 Gas 费。若用户 ETH 存于 L2,需提示其先跨链桥接。
定价规则:
主网合约地址:
| 合约 | 地址 |
|---|---|
| ENS Registry | 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e |
| ETH Registrar Controller | 0x253553366Da8546fC250F225fe3d25d0C782303b |
| Public Resolver | 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63 |
| Reverse Registrar | 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb |
| Name Wrapper | 0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401 |
| Universal Resolver | 0xce01f8eee7E479C928F8919abD53E553a36CeF67 |
通过 ENS 子图查询:
curl -s -X POST
--url "https://gateway.thegraph.com/api/$GRAPH_API_KEY/subgraphs/id/5XqPmWe6gjyrJtFn9cLy237i4cWw2j9HcUJEXsP5qGtH"
--header 'Content-Type: application/json'
--data '{"query":"{ registrations(where: { labelName: "myname" }) { labelName expiryDate } }"}'
若无返回结果,或 expiryDate 已过期(含 90 天宽限期),则该名称可注册。
也可引导用户直接访问:https://ens.app/myname.eth
注册采用两阶段提交/揭晓机制(防止抢跑):
注册 myname.eth: • 费用:约 0.002 ETH(5 美元),有效期 1 年 • 链:Ethereum 主网 • 两阶段流程(总计约 2 分钟) 是否注册?
defi_send_transaction(chainId: 1)调用 ETH Registrar Controller 合约的 commit(bytes32) 方法。提交哈希需基于名称、所有者地址、持续时间及随机密钥生成。register(name, owner, duration, secret, resolver, data, reverseRecord, fuses),并将名称费用作为 value 参数传入。myname.eth 已注册!有效期 1 年(至 2027 年 2 月到期)。[查看交易](...)简化替代方案: 引导用户前往 ENS Manager App 完成注册:https://ens.app/myname.eth —— 此应用提供完整流程与友好 UI。首次注册推荐此方式。
比注册更简单——单笔交易,无需提交步骤。
当用户说“续费 myname.eth”时:
续费 myname.eth: • 当前到期日:2027 年 2 月 8 日 • 费用:约 0.002 ETH(5 美元),有效期 1 年 • 新到期日:2028 年 2 月 8 日
defi_send_transaction(chainId: 1)调用 ETH Registrar Controller 合约的 renew(string name, uint256 duration) 方法,并将续费金额设为 value 参数。duration 单位为秒(1 年 = 31536000 秒)。宽限期: 名称到期后享有 90 天宽限期。此期间仅原所有者可续费。宽限期结束后,名称进入公开拍卖,初始溢价随 21 天逐步递减。
当用户说“设置我的 ENS 主名称”或“将 myname.eth 设为我的主名称”时:
defi_send_transaction(主网 chainId: 1)调用 Reverse Registrar 合约(0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb)的 setName(string name) 方法。myname.eth。通过 Public Resolver 合约(0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63)更新社交/文本记录:
setText(bytes32 node, string key, string value)node 为完整名称的 namehash。com.twitter、com.github、url、email、avatar、description对于复杂记录更新,推荐使用 ENS Manager App:https://ens.app/myname.eth
将用户注册的 ENS 名称存储于其策略(strategy)中,用于心跳检测:
{
"ensNames": [
{
"name": "fabri.eth",
"expiry": "2027-02-08T00:00:00Z",
"isPrimary": true
}
]
}
在心跳周期中,检查各用户策略中的 ensNames 字段:
ENS 数据以用户粒度存储于策略 JSON 中(通过 defi_set_strategy):
{
"ensNames": [
{
"name": "fabri.eth",
"expiry": "2027-02-08T00:00:00Z",
"isPrimary": true
}
],
"ensPreferences": {
"showEnsInPortfolio": true,
"expiryAlertDays": 30
}
}
读取使用 defi_get_strategy,写入使用 defi_set_strategy,自动按用户隔离。
叙事性数据(例如:“已为 0.1 ETH 转账解析 vitalik.eth”)存入用户每日记忆(per-user daily memory)。
.eth 名称直接传给 LI.FI 或交易工具;必须先解析为 0x 地址。0x 地址。ENS 记录可能变更。ensNames,在名称到期前主动提醒。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章