Fatline

本页是英文版教程的简明中文版,内容与英文版一致(2026-10-22)。完整内容见 English。

你自己的 Farcaster 节点,你自己的客户端。

不需要任何人的 API 密钥。Farcaster 或 Hypersnap,由你选择,两者平等。

Fatline 是一个开放协议,让你按自己的方式使用 Farcaster:网络由你选,节点由你选,客户端总会写明它从哪个节点读取;客户端还可以用一个 USDC 金库支付自己的服务器。本仓库是它的第一个实现。原名 Infinicaster。

开始之前

git clone https://github.com/jpfraneto/fatline && cd fatline

./fatline compute            # (0) 租一台能装下节点的机器:先报价,你输入 "create" 才会创建
./fatline node farcaster     # (1) 在上面装你的读取节点,不需要 API 密钥(或:node hypersnap)
./fatline client             # (2) 你的客户端,从你的节点读取,在 http://localhost:8787

尚未完整测试 每一步都单独运行过。从零开始、一口气跑完三条命令的完整流程还没有做过。我们自己的节点是用更早的一步式版本搭建的。

放不下一个节点?./fatline follow 只从你选的一个节点复制你选的账户。它不是节点。

你在 Farcaster 上是谁

FID。你的 Farcaster ID 是一个数字,例如 18350,登记在 Optimism 上的一个合约(ID 注册表)里。用户名、帖子和关注关系都挂在这个数字上。
托管地址。拥有你 FID 的以太坊地址。它的助记词是账户的主钥匙:可以添加和移除密钥、转移 FID。它从不签日常的帖子。
应用密钥。日常的帖子由应用密钥(Ed25519 密钥,也叫 signer)签名。你用的每个应用(例如 Warpcast 或 Firefly)都有自己的密钥,由你的托管地址授权。授权记录里写着这个应用自己的 FID,所以本客户端能告诉你每条帖子是哪个应用发的。
消息。一条 cast、一个赞、一次关注、一次资料修改,都是一条签名消息:数据、它的哈希、签名,以及签名用的密钥。任何节点都可以自行验证,不需要问任何人。

第 0 步:给节点一台机器

./fatline compute --quote   # 只看价格,不创建任何东西
./fatline compute           # 要求你输入 "create"

它会选有货的、内存至少 16 GB 的最便宜机型(2026-10-22 是 cax31,8 个 ARM CPU),加一个 700 GB 的卷,先显示价格再询问。它只负责租机器,第 1 步再装节点。创建的一切都记录在 .fatline/hetzner.json,可以精确删除。

为什么要租?一个 Farcaster 节点保存所有账户当前的消息,今天大约 600 GB。大多数笔记本没有这么多空闲磁盘。

已经有一台装了 Docker、16 GB 内存、约 700 GB 空闲磁盘的机器?跳过这一步,在那台机器上用 ./fatline node farcaster --local。

第 1 步:你的读取节点

./fatline node farcaster    # 或:./fatline node hypersnap

它在第 0 步的机器上安装该网络的节点,并跟踪初始快照的传输(约 400 GB,大约 1 到 3 小时)。节点在 /v1/info 上应答后,就会成为 fatline.config.json 里你自己的节点,第 2 步就从它读取。一台服务器只放一个网络。

读取节点和验证者。Snapchain 是 Farcaster 的网络软件,有一小组验证者对消息的顺序(区块)达成一致。你的节点是读取节点:跟随这些区块,保存每条消息的副本。你发帖时,节点检查消息并转发给验证者。读取从不需要验证者的许可。
Farcaster 或 Hypersnap。Hypersnap 是 Snapchain 的社区分支。两者使用相同的 API,接受相同的签名消息。Hypersnap 保留完整历史;Farcaster 按每个账户的存储上限删除旧消息。默认没有偏向哪一个:由你选择。

初始快照:新节点从网络快照开始,而不是重放多年的区块。在租来的服务器上,快照被流式写入磁盘,三个分片同时进行:压缩后约 400 GB,分成 5,695 段下载,解压后约 600 GB。磁盘上只保留一份。节点默认只保留一天的区块。

我们的两个节点(2026-10-22 测量):快照完成后,节点在仍落后 7 万到 10 万个区块时就开始应答,追赶速度约每分钟 270 个区块。Farcaster:06:42 UTC 开始应答,12:25 UTC 完全同步,用时 5 小时 43 分。之后重启服务器:47 秒后重新应答,62 秒后恢复同步。Hypersnap:10:21 UTC 开始应答,随后停滞了五个半小时:Hypersnap 仓库中的验证者列表缺少 Farcaster 于 2026-10-22 生效的验证者变更(issue #41)。我们的安装脚本现在改用 Snapchain 的列表,节点已恢复追赶。完全同步所需时间:尚未测量。

为什么没有轻节点。轻节点会从另一个节点复制当前状态,而不是从快照开始。目前 Snapchain 和 Hypersnap 的复制器都拒绝添加和移除应用密钥的消息,所以副本无法跟踪哪些密钥属于哪个账户。而且完整副本仍有约 300–400 GB。如果太大,请看只复制你关注的账户。

健康意味着同步,而不只是"在运行"。节点健康的标准是 /v1/info 显示每个分片的 blockDelay 都很小。端口开着不算。

第 2 步:你的客户端

./fatline client

它会安装、构建并在 http://localhost:8787 启动客户端。页面顶部总会写明正在从哪个节点读取。在设置里选择网络和节点:

放不下节点:只复制你关注的账户

./fatline follow 18350 @dwr --network farcaster --node crackle --once
./fatline follow 18350 --following --network hypersnap --node haatz   # 持续跟随;Ctrl+C 停止,再次运行会接着继续
./fatline follow list

它从你选的一个节点(Farcaster 或 Hypersnap,你自己的或公共的)复制你指定的账户(加 --following 时,还包括他们关注的所有人)到客户端的存档里。在客户端打开 #/archive/<fid> 即可阅读。只读取这一个节点,绝不切换。

这不是节点。每次运行都会这样说明。它信任那个节点:自己不检查消息签名或密钥。它不加入网络,也不帮助网络。它的完整和及时程度取决于那个节点:节点落后,它也落后。
2026-10-22 测量,空存档消息数耗时
Farcaster,crackle:18350 加 --following(共 8 个账户)127,333125 秒
Farcaster,我们的节点(仍在追赶):18350 和 @dwr4,824 + 104,545293 秒
Hypersnap,haatz:18350 和 @dwr4,824 + 104,54546 秒
Hypersnap,我们的节点(仍在追赶):18350 和 @dwr4,824 + 104,545163 秒

发帖:客户端自己的应用密钥

./fatline identity --fid <你的 FID> --dry-run   # 检查一切,不注册
./fatline identity --fid <你的 FID>             # 注册本客户端的密钥

在你自己的终端运行。助记词在隐藏输入框中输入,密钥注册后立即遗忘,从不保存。不需要交易,不需要 gas。这个密钥只能发帖、互动、关注和修改资料。

存储租金和服务器账单是两回事。存储租金在链上按账户支付,决定网络为你保留多少消息,不支付任何服务器。节点服务器是另一笔账单,付给托管它的人。

状态:已在模拟节点上测试,crackle 接受了消息格式。尚未用真实账户测试

费用,以及如何停止付费

项目价格(Hetzner,2026-10-22 查询)
服务器 cax31(8 个 ARM CPU,16 GB 内存)加 700 GB 卷每天约 2.75 美元
第二个节点(另一个网络),独立服务器和卷大约同样多
./fatline compute hetzner down   # 删除服务器和卷,停止计费

为什么叫 Fatline

我们所说的 fatline,是一条两端都握在你手里的线:一端是你的密钥在签名,另一端是你自己的节点在倾听,中间没有人把这条线租给你、再把它收回。让一条线保持畅通需要花钱,所以这条线自带钱袋:客户端可以从 Base 上的 USDC 金库支付自己的服务器。这个词来自 Dan Simmons 的小说《海伯利安》(Hyperion),但它在这里的含义是我们自己的。

金库部分只在 Base 的本地副本上用假钱测试过。尚未用真钱测试,合约尚未部署到 Base,也没有外部审计。

我们测试了什么,没测试什么

部分状态
通过公共节点读取 Farcaster 和 Hypersnap可用
选择节点;节点宕机时给出明确错误可用
按应用显示或隐藏 cast可用(真实数据:20 条中 20 条识别出应用)
三条命令从零开始完整跑通未测试
我们自己的节点应答,同步前标为"落后"可用,两个网络,2026-10-22
读取节点完全同步可用,Farcaster:应答后 5 小时 43 分完成同步,重启后 62 秒恢复同步。Hypersnap:仍在追赶
只复制选定账户(follow,不是节点)可用,真实节点,两个网络
复制型(轻)节点目前不可行:两个网络的复制器都拒绝密钥消息
用真实账户注册密钥并发帖未测试
一位新用户从零照着本页完成还没有;会是你吗?