GossipSub主题观察(提议的GossipSub 1.3) - 网络

该提案旨在通过主题观察功能,在gossipsub网络中,允许节点在不实际接收消息内容的情况下,仅接收新消息的通知,从而减少带宽消耗。当节点希望观察某个主题时,会向该主题中的订阅节点发送观察请求,订阅节点在新消息到达时向观察节点发送通知,观察节点可以选择之后再请求完整的消息内容。

作者:pop

简述:主题观察使得节点能够在某个主题中有新消息时获得通知,而无需实际接收消息。

该提案使你能够告诉你的对等节点,当某个主题中有新消息时通知你,而无需消耗带宽来下载实际消息。当你这样做时,你被称为该主题中的观察节点。

动机

主题观察的动机是由于 GossipSub 的网状度(mesh degree)导致带宽消耗的放大效应。当你订阅一个主题时,你需要下载或转发的消息副本数量与网状度一样多。例如,如果网状度为 8,你大约会下载或转发 8 个副本。

我们在 GossipSub 1.2 中实现了 IDONTWANT,这将减少你下载或转发的副本数量,但它不能保证具体减少多少。

当你观察一个主题时,你不会收到任何消息。你只会在有新消息时收到通知。如果你想要实际消息,你可以从第一个通知你的对等节点请求消息,这样你只会下载一个副本。但是,消息请求部分不在本提案的范围之内。本提案仅处理通知。

高级设计

output\ output1280×964 88.4 KB

当你想要观察一个主题时,你需要找到该主题中的订阅节点,并告诉它们你想要观察该主题。之后,当有新消息时,这些订阅节点会通知你。

让我们看看图中的例子,节点 11 正在观察该主题。节点 1、9 和 10 将在新消息出现时通知节点 11。类似地,节点 4 和 5 将通知节点 12。

请注意,这种关系是单向的,而不是像网状连接那样是双向的。

你还可以告诉你的订阅对等节点,你不再想观察该主题。这就是你想要取消观察它的时候。

稳定性

请注意,观察节点仅接收通知。它们既不发送通知也不转发消息。换句话说,它们只消耗,不贡献。因此,它们仅位于网络的边界(如图所示),并且不为网络提供任何稳定性。这意味着网络中必须有足够的订阅节点来提供稳定性。

然而,这样做的好处是观察节点的流失率(churn rate)根本不重要。节点可以随意观察和取消观察。

可扩展性

目前,当你的对等节点想要观察主题并告诉你进行通知时,你有义务通知它们,而没有拒绝的选项。这样做有一个缺点,如果太多的对等节点想要观察,你将有太多的开销来完成这项工作。

但是,通知仅包含消息 ID,我们现在假设这些 ID 可以忽略不计。你可能会争辩说,如果观察对等节点的数量足够高,则通知的总大小将非常重要。这是事实,但对于设计的第一个迭代,我们应该做出这个假设以使协议简单。

协议消息

有两个新的控制消息:OBSERVEUNOBSERVE

当你想要观察一个主题并让该对等节点通知你时,你向你的对等节点发送 OBSERVE

你向你的对等节点发送 UNOBSERVE 以告知你不再观察该主题。

在向你的对等节点发送 OBSERVE 之后,当主题中有新消息时,该对等节点将向你发送 IHAVE 作为通知。

但是,此提案中的 IHAVE 与之前的 GossipSub 版本不同。在之前的版本中,IHAVE 仅在心跳时发送,而在本版本中,它也可以在对等节点收到消息后立即发送。以前,你可以在收到 IHAVE 后发送 IWANT,但在主题观察中,你不应发送 IWANT,因为 IHAVE 仅用作通知。

  • 原文链接: ethresear.ch/t/gossipsub...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展