摘要
- 2026 年 10 月 1 日提交的
atURI 首版草案明确写道:把含多个冒号的 DID 放进//后面的 authority,会越出 RFC 3986 的通用语法,因此这一版不能按 RFC 7595 取得永久登记。 - IANA 早在 2023 年就把
at列为 provisional。临时登记证明命名空间里有这一行,不等于 IETF 已正式审查,也不证明通用解析器、身份解析、仓库定位、记录内容和业务结果已经收敛。
真正值得管理层注意的,不是一个实验标识符突然撞上标准,而是一个已经工作的标识符主动把自己的制度边界写进草案。
draft-newbold-atp-aturi-00 的日期是 2026 年 10 月 1 日。文首写着 Standards Track 意向,冻结的 Datatracker 记录却仍把它放在 Individual Submissions,stream、state 和标准等级均为空。这是第 00 版 Internet-Draft,不是 RFC,不是 IETF 共识,更不是永久登记已经遭拒或获批的记录。
at:// 的任务很具体:引用 Authenticated Transfer Protocol 的账户和数据记录。authority 可以写便于人阅读的 handle,也可以写永久账户标识。路径再放 collection 和 record key。系统由此找到一个逻辑记录。
矛盾发生在永久标识这一侧。DID 通常长得像 did:plc:…,内部有多个未转义冒号。RFC 3986 把 authority 统一拆成可选 userinfo、host 和可选 port;RFC 7595 又规定,新方案不能重写 URI 总体语法。首版草案因此直说:把这种 DID 放在带 // 的 authority 里,不符合通用规则,当前版本不具备永久登记资格。
这句话没有否定运行现实。专用解析器完全可以把 authority 当成不透明的身份字符串,继续完成解析、仓库发现和取数。它否定的是一条更大的推断:既然应用能用,通用 URI 生态就已经接受了它的结构。运行成功与永久登记回答的是两道题。
IANA 记录恰好把中间层展示出来。at 自 2023 年 6 月 1 日起就是 provisional URI scheme。RFC 7595 允许已经在单一机构之外使用、但尚未成为标准的方案先做临时登记,程序是 First Come First Served。永久登记则进入 Expert Review,并要满足通用语法和其他长期条件。
at 条目旁的专家说明更不能被截成一句宣传。它说临时登记没有经过 IETF 正式审查,也不是 IETF 对开放互联网普遍使用的推荐;它还记录了短名称 at 可能与日常用法混淆,曾有人建议 atproto 或 atp。这可能成为未来永久申请的障碍。但说明同时强调,它本身并不构成 IETF 或 IANA 的立场。
因此至少要保存四条状态:协议已被使用;IANA 有临时登记;第 00 版草案提出 Standards Track 意向;该版语法本身尚不符合永久登记条件。把它们压成“已标准化”会虚构权威;把它们压成“不能使用”又会抹掉运行事实。
身份链也不允许压缩。handle 是人读入口,不是永久主体。官方文档警告,handle 可以改绑到另一个 DID,被复用后,旧 at:// 可能转向另一个仓库。草案因此要求:handle 形式若要长期保存,应先解析成永久账户标识;记录内部应使用永久标识。
永久账户标识仍不等于物理位置。AT URI 的 authority 指向账户身份,不一定是托管仓库的网络主机。解析服务再找到 PDS 或其他仓库端点。collection 与 record key 找到逻辑记录,但记录内容会更新或删除。AT URI 不是内容寻址;需要强引用时,官方实现指南建议另带 CID 哈希。
这就形成一条不能省略的凭证链:输入采用哪一版 URI profile;哪个解析器及版本处理了它;输入是 handle 还是 DID;handle 在何时解析成哪个 DID;身份解析到哪个仓库;取回哪个 collection、key 和记录修订;是否另有 CID 绑定实际字节;应用最终执行了什么。解析成功只是第二步,不是第八步。
解析器兼容性也要按证据口径报告。AT Protocol 文档列举 Python urllib 与 JavaScript url-parse 可用,并说 Go net/url 及多数常见 Rust URL crate 不能直接处理这种 authority。这是有价值的实现提示,却不是覆盖所有版本、绑定和应用的独立普查。生产环境必须记录自己跑过的结果。
Heng Lu 的 Running-Code Primacy 不让制度标签否定已经工作的系统,也不允许运行代码冒充制度授权。Minimum Initial Specification 要求共同层只固定必要不变量:handle、永久账户身份、仓库位置、逻辑记录和内容哈希必须分开。Reality Layers 则提醒我们,IANA 行、解析成功、字节取回和用户结果属于不同现实层。
这篇文章的结论不是“标准高于实践”,也不是“实践可以跳过标准”。它要求每一层只对自己的事实负责:协议定义命名,IANA 记录登记状态,专家审查判断提交的语法,运行系统证明解析与取数,业务应用决定何种证据足以触发行动。
来源
- https://atproto.com/guides/identity
- https://atproto.com/specs/at-uri-scheme
- https://datatracker.ietf.org/api/v1/doc/document/draft-newbold-atp-aturi/
- https://datatracker.ietf.org/doc/draft-newbold-atp-aturi/
- https://datatracker.ietf.org/doc/draft-newbold-atp-aturi/history/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://www.iana.org/assignments/uri-schemes/expert-notes/at-expert-notes
- https://www.iana.org/assignments/uri-schemes/prov/at
- https://www.iana.org/assignments/uri-schemes/uri-schemes-1.csv
- https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
- https://www.ietf.org/archive/id/draft-holmgren-at-repository-03.txt
- https://www.ietf.org/archive/id/draft-newbold-atp-aturi-00.html
- https://www.ietf.org/archive/id/draft-newbold-atp-aturi-00.txt
- https://www.ietf.org/archive/id/draft-newbold-atp-aturi-00.xml
- https://www.rfc-editor.org/rfc/rfc3986.html
- https://www.rfc-editor.org/rfc/rfc3986.txt
- https://www.rfc-editor.org/rfc/rfc7595.html
- https://www.rfc-editor.org/rfc/rfc7595.txt
- https://www.w3.org/TR/did-core/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance

