理解 Outbox 模型
了解 Nostr 的智能中继系统如何确保你的帖子到达所有关注你的人
问题:丢失的帖子 📬
你有没有在 Nostr 上发布过内容,但你的朋友看不到?或者关注了某人但从未看到他们的帖子?这就是发现问题。
旧方式(Outbox 模型之前)
你发布 → 中继 A → ❌ 你的朋友只使用中继 B
你朋友的视角:
❌ "@alice 的帖子去哪了?"
你会发布到你最喜欢的继电器,但你的关注者可能使用完全不同的继电器。他们永远看不到你的内容!
解决方案:Outbox 模型
Outbox 模型通过广告你在哪里发布来解决这个问题。就像留下一个转寄地址。
你:"我发布到中继 A、中继 B 和中继 C"
(存储在你的 kind:10002 事件中)
关注者:"明白了!我会去这些中继查看 @alice 的帖子"
什么是 Outbox 模型? 📮
Outbox 模型(NIP-65)就像拥有一本公共地址簿,告诉每个人在哪里找到你的帖子。
邮局类比延伸
记住中继就像邮局?Outbox 模型添加了一个转寄地址系统:
传统邮局:
- 你在一个邮局有一个邮箱
- 如果你搬家,人们会把邮件寄到错误的地方
Nostr Outbox 模型:
- 你有一个公共列表,列出你接收邮件的邮局
- 如果你”搬家”(切换中继),你更新你的公共列表
- 每个人都知道在哪里找到你
你的中继列表(kind:10002)
你的 Nostr 客户端自动创建一个中继列表,告诉其他人:
{
"kind": 10002,
"tags": [
// 你通常发布的中继(你的 "outbox")
["r", "wss://relay.nostr.info", "write"],
["r", "wss://relay.damus.io", "write"],
// 你查看提及的中继(你的 "inbox")
["r", "wss://nos.lol", "read"],
["r", "wss://relay.snort.social", "read"]
]
}
标记说明:
- write → 你发布内容的地方(outbox)
- read → 你检查提及/回复的地方(inbox)
- 无标记 → 既可读又可写
实际工作原理
场景 1:Alice 发布,Bob 关注
Alice 的中继列表(kind:10002):
- wss://relay.a.com [write]
- wss://relay.b.com [write]
Bob 关注 Alice。Bob 的客户端看到:
"检查 wss://relay.a.com 和 wss://relay.b.com 获取 Alice 的帖子"
结果:Bob 连接到两个中继并看到 Alice 的内容!✅
场景 2:Charlie 提及 Alice
Charlie 在帖子中提及 @alice
Charlie 的客户端检查 Alice 的中继列表:
- wss://relay.a.com [read]
- wss://relay.b.com [read]
Charlie 的客户端将提及发送到 Alice 的 READ 中继
结果:即使 Alice 离线也能看到提及!✅
场景 3:Alice 切换中继
Alice 停止使用 relay.a.com,开始使用 relay.c.com
1. Alice 更新她的 kind:10002 中继列表
2. 传播到所有连接的中继
3. 关注者自动开始检查 relay.c.com
结果:没有丢失的帖子,无需手动重新连接!✅
为什么这很重要
1. 无需中心化的发现
传统社交媒体有一个知道每个人的中央服务器。Nostr 是去中心化的,所以需要另一种找到人的方式。
Outbox 模型 = 分布式发现
2. 抗审查
如果一个中继屏蔽了你,你的关注者仍然可以通过你在其他中继上的中继列表找到你。
3. 灵活性
随时切换中继而不会失去你的受众。只需更新你的中继列表。
4. 效率
客户端只连接到你使用的中继,而不是世界上每个中继。
最佳实践
保持列表小巧
推荐: 总共 2-4 个中继
为什么?
- 更多中继 = 更多连接 = 更多电池消耗
- 4 个中继后收益递减
- 无论如何,大多数内容都会传播到流行的中继
混合读写
良好的设置:
- 2-3 个 “write” 中继(你发布的地方)
- 1-2 个 “read” 中继(用于提及)
示例:
写入:流行中继 A,你的个人中继
读取:流行中继 B(用于提及)
选择可靠的中继
使用知名的、可靠的中继:
- 正常运行时间长
- 永久存储内容(不是临时的)
- 地理位置接近(延迟更低)
常见误解
”我需要在每个中继上”
错误: 在 20+ 个中继上不会有帮助。你的帖子通过网络传播。坚持使用 2-4 个优质中继。
“如果我离开一个中继,我会失去关注者”
错误: 只需更新你的中继列表(kind:10002)。关注者将自动检查你的新中继。
“私信也通过 outbox 发送”
部分正确: NIP-17(私信)使用 outbox 模型进行传递,但有额外的加密。
“我需要手动告诉人们我的中继”
错误: 你的客户端自动发布你的中继列表。关注者在关注你时会发现它。
技术深入(可选)
客户端如何发现你的中继
- 初始关注: 当有人关注你时,他们的客户端请求你的 kind:10002 事件
- 你的中继被揭示: 事件包含你的中继偏好
- 持续更新: 如果你更改中继,你发布一个新的 kind:10002
- 传播: 客户端传播中继列表以帮助发现
可替换事件
kind:10002 是可替换的 - 只保留最新版本。这意味着:
- 没有历史膨胀
- 易于更新
- 客户端管理简单
隐私考虑
你的中继列表是公开的。任何人都可以看到你使用哪些中继。这是系统工作所必需的,但要注意它是可见的。
采取行动
检查你当前的中继
查看你的 Nostr 客户端设置:
- 你连接到哪些中继?
- 它们被标记为 “read” 还是 “write”?
- 你总共有 2-4 个吗?
优化你的设置
如果你有 5+ 个中继:
- 移除正常运行时间差的
- 保留你的 3-4 个最爱
- 确保至少有一个是用于提及的 “read”
传播这个词
帮助他人理解:
- 分享本指南
- 解释为什么你看不到某人的帖子
- 帮助解决发现问题
Outbox Model Quiz
Outbox Purpose
Question 1 of 5