Nostr 自成立以来就得到了很多关注和支持 最近添加 到禁止在 Twitter 上推广的替代社交平台列表。 而且它也越来越受欢迎,因为很明显,埃隆·马斯克 (Elon Musk) 对 Twitter 的收购并没有从根本上改变平台上的言论自由——用户是 仍然被禁止 由于不一致和任意的原因,人们正在寻找一种去中心化的替代方案,它不像 Mastodon,在 服务器操作员 仍然有能力控制你的身份。
尽管最近受到关注,但 Nostr 协议和第一个中继服务器实现实际上是由开发人员在 2020 年底创建的 菲亚特贾夫. 在引起广泛关注之前,它只是一个安静的小众协议,只是想成为 Twitter 和 Mastodon 问题的轻量级解决方案。 在这两个系统上,您的身份/用户名只是由运行服务器的人控制的东西。 Mastodon 是一个联合系统,具有多个不同的服务器,所有服务器都相互通信,并没有从根本上改变这一现实。 无论您使用谁的服务器来托管帐户,您都可以完全控制您是否可以使用它。 即使运行您自己的服务器,其他服务器运营商也可以将允许与他们的服务器通信的服务器列入黑名单或白名单。 这导致在不同 Mastodon 服务器的“Fediverse”中出现大量分区,并使只运行自己的服务器的想法变得毫无意义。 您最终可能仍会受到其他服务器运营商的审查,从而阻止他们的用户在他们的 Feed 中看到您的内容。
Nostr 和 Mastodon 之类的东西之间的核心区别在于,每个用户都使用公钥/私钥对来处理该功能,而不是使用服务器运营商拥有的用户名。 这是服务器操作员不能简单地从您那里夺取或将您拒之门外的东西。 这是构建整个 Nostr 协议的核心构建块之一。
接下来是“事件”。 这是客户端和客户端为了发送和检索消息而连接的中继服务器使用的基本对象/数据类型。 该协议的总体思路是,客户端将事件发送到中继服务器,中继服务器随后存储和索引它们,其他客户端可以与中继服务器通信以请求它们已接收和存储的事件。 在原来的 NIP 01,定义了三种不同的事件类型:
- 0:发送有关用户的元数据,例如用户名、图片、简介等。
- 1:发送短信和基本内容
- 2:推荐中继服务器供关注事件创建者的人连接
所有事件都以特定定义的方式构建。 它们包括创建者的公钥、创建时间戳、类型(或规范中的种类)、内容有效负载和事件创建者的签名。 它们还可以有引用其他事件或用户的标签,并且有一个 ID 值,该值是除创建者签名之外的所有内容的哈希值(类似于比特币交易的 TXID)。 这使您可以通过验证签名(以及拥有该密钥的人,如果它没有被泄露)来保证消息实际上是由其中的公钥所有者创建的,并保证消息在之后没有被更改他们签了名。 就像你不能在签名后更改比特币交易而不作废一样,你不能在创建者签名后更改 Nostr 事件而不是明显的欺诈。
事件类型系统从最初的 NIP 得到了相当大的扩展。 加密的直接消息有一种事件类型,通过将发送者的私钥与接收者的公钥组合来建立共享密钥,这会产生与通过将发送者的公钥与接收者的私钥组合得到的相同的密钥(这就是 BIP 47 和无声支付工作)。 还有可替换事件和临时事件的类型。 在可替换事件的情况下(显然),它们的设计是为了让事件的原始创建者可以签署一个新的来替换旧的。 遵循规范的中继服务器将自动从其存储中删除较旧的事件,并在收到后开始为客户端提供较新的版本。 临时事件被设计成当发送到中继时,它们将被广播给订阅其创建者的任何人,但中继服务器不应该存储它们。 这创造了在广播期间只有在线的人才能看到消息的可能性。 甚至还有一种事件类型来表示对其他人的事件的反应(例如喜欢或表情符号)。
说到最后一个,事件也可以包含标签。 目前有事件标签类型(引用一个确切的 Nostr 事件)、公钥(标签或引用其他用户)和主题(模拟功能,例如电子邮件主题)。 所有这些都可以包括指向特定中继服务器的指针,可以从中获取数据,以便用户实际上可以跨服务器进行交互,即,将其内容发布到一个中继服务器的用户可以与另一个用户创建的内容进行交互并引用发布到一个不同的中继服务器,其方式允许任何用户以正确的顺序连贯地获取整个交互线程,并且在确定在哪里可以找到相关数据时没有大量的复杂性。
在原始 NIP 中,给出了客户端如何通过订阅消息/数据结构与中继服务器交互的规范,该结构包括客户端有兴趣接收哪些事件的过滤器。 这些过滤器可以根据先前的标准指定用户的公钥、确切的事件、事件类型,甚至是他们想要的特定时间范围。 您甚至可以提交公钥或事件 ID 的前缀,例如“1xjisj …”。 并从以该短字符串开头的公钥接收任何一个或多个事件(这对于从中继服务器隐藏您实际想要查看的内容非常有用)。
总的来说,该协议是一个非常简单的通用方案,用于在用户之间传递消息,涵盖了重要的事情,例如保证消息的完整性以及使用公钥身份发送消息的人,同时还促进了后端基础设施中继服务器可以是高度集中的或允许用户运行他们自己的个人中继服务器,同时彼此无缝交互并且在用户被禁止使用一个中继服务器的情况下不会造成大规模混乱。 他们可以转移到另一个服务器或运行自己的服务器,并且他们从之前的服务器上脱离平台并不会失去他们的数字身份或追随者,因为他们仍然保持对私钥的控制,并且用户可以在其他地方找到他们时对其进行身份验证。
中继服务器也可以随心所欲地运行。 他们可以免费运营,可以收取小额费用以发布或下载消息,并且有 甚至是 NIP 要求 hashcash 样式的工作证明来提交消息。 它们可以是一个单一的中继服务器,用于托管您的帖子并将其仅提供给其他用户,或者它们可以是一个大规模运行的服务器,例如 Twitter 或 Reddit(客户端可以根据需要显示和组织信息,这允许模拟任何社交媒体)今天存在的媒体平台)。 所有这些都可以无缝互操作,并且不会将用户拒之门外。 您可以阻止他们将内容发布到您的中继服务器,但最终您无法阻止他们查看您在中继服务器上托管的内容或阻止其他用户在其他服务器上找到他们的内容。
这是一个非常简单的协议,具有供人们构建的大型开放设计空间,保证用户始终可以相互交互,无论各个中继服务器运营商选择托管或不托管。 这同时是它最大的优势和最大的弱点。 虽然它保证了开发人员在不受复杂协议严格约束的情况下进行构建的自由,但也存在许多协议本身无法解决的固有问题。
在我写的下一篇文章中,我将探讨我看到的一些正在发生的问题和潜在的解决方案,但现在,我只想说,就设计的简单性和它为人们开辟的可能性而言build,Nostr 做得很好,考虑到它是一个人的心血结晶,到目前为止,只有少数人真正为协议规范本身做出了贡献。
这是 Shinobi 的客座帖子。 表达的观点完全是他们自己的,不一定反映 BTC Inc 或比特币杂志的观点。