# Farcaster 用户名改了怎么认人？把 fname 解析为 FID

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/farcaster-resolve-fname-fid
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

使用官方 Fname Registry 的公开接口，区分当前用户名、固定账号标识与钱包地址。

## 使用工具
- [Farcaster](https://lianxiaozhi.com/tools/farcaster) · [官方入口](https://farcaster.xyz/)

## 前置条件
- 准备不含 @ 的目标 fname，以及过去保存的 FID 或可信账号记录；仅有显示名不能确认身份。
- 适用官方 fname 查找流程。链下 fname 与 .eth 用户名有不同查询路径，不能套用同一个 endpoint。
- 读取公开 fname 记录不需要钱包连接、签名或链上 Gas；自建数据库查询需自己的读取权限，购买 ENS 或注册账号属于另一个流程。

## 1. 判断输入是哪种名字

先把显示名、@username 和 FID 分开记录。查询 fname 时去掉 @，保留准确拼写并对查询参数做 URL 编码；不要把个人简介里的昵称当成注册用户名。

若名字以 .eth 结尾，转到后面的 .eth 分支。官方说明 fname 是由 Farcaster 管理的链下名字，.eth 是链上 ENS 路径；外观相近或同头像都不能确定同一账号。

核对结果：明确输入类型，并保存原始名字和历史 FID（若有）。
依据：[Farcaster：Usernames](https://docs.farcaster.xyz/learn/what-is-farcaster/usernames)
依据：[Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)

## 2. 读取官方 fname 当前转移记录

针对 fname 请求 GET https://fnames.farcaster.xyz/transfers/current?name=<fname>。官方示例返回 transfers 数组，包含 username、timestamp、owner、from、to 和签名字段。

先记录 HTTP 状态和返回时间，再确认 username 与输入相符；没有记录或返回失败时写未解析，不把空结果猜成 FID 0。此查询只读，不需要“登录验证”、钱包签名或导入私钥。

核对结果：保存脱敏公开响应或失败状态；确认查的是准确 fname。
依据：[Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)

## 3. 从 to 读取当前 FID

按官方说明查看最近一次转移记录，使用 to 字段定位当前拥有该名字的 FID。owner 是地址相关字段，不能把它当作 FID；创建示例中 from 为 0，也不代表当前账号不存在。

将解析出的 FID 与过去可靠保存的 FID 比较。数字不一致时，可能是名字转移或输入错误，不能继续按原身份付款或授权；一致也只确认账号标识对应，不能证明对方每条消息可信。

核对结果：分清当前 FID、地址与转移记录，得到一致/不一致/未知结论。
依据：[Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)
依据：[Farcaster：Accounts](https://docs.farcaster.xyz/learn/what-is-farcaster/accounts)

## 4. .eth 名字使用不同分支

官方 .eth 查找指南使用已有 replicator 的 fnames 表：按 username 等于完整 .eth 名字筛选，按 updated_at 降序取最近记录，读 username 与 fid。只有已有合法数据库读取权限时才走这条路径。

没有这套数据时保留未解析，不把 fname endpoint 的失败当成 .eth 账号不存在。教程没有给出通用于所有客户端的 .eth 搜索按钮，也没有要求为此购买 ENS 或重新注册账号。

核对结果：明确 .eth 使用了哪个数据来源；无数据权限就保留未知。
依据：[Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)
依据：[Farcaster：Usernames](https://docs.farcaster.xyz/learn/what-is-farcaster/usernames)

## 5. 核对账号标识与授权边界

用户名可以改变而历史和关注关系继续属于账号，因此把确认后的 FID 连同名字、时间保存，后续改名时用 FID 对照。custody、recovery 钱包与应用签名 key 的职责不同，任一地址相同不能替代账号识别。

如客户端提出登录或添加应用 key，应另读该授权的范围；官方说明应用 EdDSA key 可代表账号写入内容，不能为了做公开名字查询就自动批准。单次解析也不等于审核了所有应用权限。

核对结果：保存可持续对照的 FID；公开解析与写入授权分开处理。
依据：[Farcaster：Accounts](https://docs.farcaster.xyz/learn/what-is-farcaster/accounts)
依据：[Farcaster：Usernames](https://docs.farcaster.xyz/learn/what-is-farcaster/usernames)
依据：[Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)

## 常见错误
- FID、用户名、显示名和钱包地址是不同字段。
- 当前拥有名字的 FID 取 to，不能直接使用 owner 地址。
- fname 和 .eth 查询路径不同；失败或空数组保留未知。

## 完成检查
- 名字类型、查询时间、当前 FID 与过去记录已核对，或明确未解析原因。
- 没有把解析一致扩大成真实身份担保或应用授权验收。
- 依据官方文档整理，真实界面/API 返回与资金操作尚待实际验证。

## 相关知识

## 官方依据
- [Farcaster：Find an Account by Name](https://docs.farcaster.xyz/developers/guides/accounts/find-by-name)
- [Farcaster：Accounts](https://docs.farcaster.xyz/learn/what-is-farcaster/accounts)
- [Farcaster：Usernames](https://docs.farcaster.xyz/learn/what-is-farcaster/usernames)
