ERC-634: 在 ENS 中存储文本记录
ENS 解析器的配置文件,用于存储任意文本的键/值对。
Authors | Richard Moore (@ricmoo) |
---|---|
Created | 2017-05-17 |
Discussion Link | https://github.com/ethereum/EIPs/issues/2439 |
Requires | EIP-137, EIP-165 |
摘要
本 EIP 定义了一个 ENS 解析器配置文件,允许查找任意键-值文本数据。这允许 ENS 名称持有者将电子邮件地址、URL 和其他信息数据与 ENS 名称相关联。
动机
通常需要将人类可读的元数据与机器驱动的数据相关联;用于调试、维护、报告和一般信息。
在本 EIP 中,我们为 ENS 定义了一个简单的解析器配置文件,允许 ENS 名称关联任意键-值文本。
规范
解析器配置文件
定义了一个新的解析器接口,包含以下方法:
interface IERC634 {
/// @notice 返回与 ENS 名称的键关联的文本数据
/// @param node ENS 名称的 nodehash
/// @param key 用于查找文本数据的键
/// @return 文本数据
function text(bytes32 node, string key) view returns (string text);
}
此接口的 EIP-165 接口 ID 为 0x59d1d43c
。
text
数据可以是任何任意的 UTF-8 字符串。如果键不存在,则必须返回空字符串。
全局键
全局键必须由小写字母、数字和连字符 (-) 组成。
- avatar - 用作头像或徽标的图像的 URL
- description - 名称的描述
- display - ENS 名称的规范显示名称;当其大小写折叠时,这必须与 ENS 名称匹配,如果它不匹配,客户端应忽略此值(例如,
"ricmoo.eth"
可以将其设置为"RicMoo.eth"
) - email - 电子邮件地址
- keywords - 以逗号分隔的关键字列表,按最重要排序;解释此字段的客户端可以选择一个阈值,超过该阈值则忽略
- mail - 实际的邮件地址
- notice - 关于此名称的通知
- location - 通用位置(例如
"Toronto, Canada"
) - phone - 作为 E.164 字符串的电话号码
- url - 网站 URL
服务键
服务键必须由服务拥有的命名空间的反向点表示法组成,例如 DNS 名称(例如 .com
、.io
等)或 ENS 名称(即 .eth
)。服务键必须至少包含一个点。
这允许新服务开始使用自己的密钥,而无需担心与现有服务冲突,并且还意味着新服务不需要更新此文档。
以下服务很常见,这就是为什么在此处提供建议的原因,但理想情况下,服务会声明自己的密钥。
- com.github - GitHub 用户名
- com.peepeth - Peepeth 用户名
- com.linkedin - LinkedIn 用户名
- com.twitter - Twitter 用户名
- io.keybase - Keybase 用户名
- org.telegram - Telegram 用户名
此技术还允许服务所有者为其密钥指定层次结构,例如:
- com.example.users
- com.example.groups
- com.example.groups.public
- com.example.groups.private
遗留键
以下键在本 EIP 的早期版本中指定,该版本仍在草案中。
它们的使用可能不是很广泛,但尝试最大兼容性的应用程序可能希望查询这些键作为回退,如果上述替换键失败。
- vnd.github - GitHub 用户名(重命名为
com.github
) - vnd.peepeth - peepeth 用户名(重命名为
com.peepeth
) - vnd.twitter - twitter 用户名(重命名为
com.twitter
)
理由
应用程序特定与通用记录类型
我们没有定义大量特定记录类型(每个记录类型通常都是人类可读的数据),例如 url
和 email
,而是遵循 DNS 的 TXT
记录的改编模型,该模型允许通用键和值,从而允许将来扩展而无需调整解析器,同时允许应用程序使用自定义键来实现自己的目的。
向后兼容性
不适用。
安全注意事项
无。
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
Richard Moore (@ricmoo), "ERC-634: 在 ENS 中存储文本记录 [DRAFT]," Ethereum Improvement Proposals, no. 634, May 2017. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-634.