Skip to content

理解 Outbox 模型

了解 Nostr 的智能中继系统如何确保你的帖子到达所有关注你的人

10-15 分钟 intermediate

问题:丢失的帖子 📬

你有没有在 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 模型进行传递,但有额外的加密。

“我需要手动告诉人们我的中继”

错误: 你的客户端自动发布你的中继列表。关注者在关注你时会发现它。


技术深入(可选)

客户端如何发现你的中继

  1. 初始关注: 当有人关注你时,他们的客户端请求你的 kind:10002 事件
  2. 你的中继被揭示: 事件包含你的中继偏好
  3. 持续更新: 如果你更改中继,你发布一个新的 kind:10002
  4. 传播: 客户端传播中继列表以帮助发现

可替换事件

kind:10002 是可替换的 - 只保留最新版本。这意味着:

  • 没有历史膨胀
  • 易于更新
  • 客户端管理简单

隐私考虑

你的中继列表是公开的。任何人都可以看到你使用哪些中继。这是系统工作所必需的,但要注意它是可见的。


采取行动

检查你当前的中继

查看你的 Nostr 客户端设置:

  • 你连接到哪些中继?
  • 它们被标记为 “read” 还是 “write”?
  • 你总共有 2-4 个吗?

优化你的设置

如果你有 5+ 个中继:

  • 移除正常运行时间差的
  • 保留你的 3-4 个最爱
  • 确保至少有一个是用于提及的 “read”

传播这个词

帮助他人理解:

  • 分享本指南
  • 解释为什么你看不到某人的帖子
  • 帮助解决发现问题

Outbox Model Quiz

Outbox Purpose

Question 1 of 5

0/5 answered
What problem does the outbox model solve?
P0 Critical