去中心化协议Nostr-系列006

这是一个介绍Nostr协议的系列文章,在之前的文章中我们介绍了它的来历、它的基本用法,在这一篇我们将讲述它的工作原理,以及对nostr网络的一些思考。

💡 奇怪而有趣的是,加泰罗尼亚语中的“ nostre ”和拉丁语中的“noster”意思是“我们的”。

Nostr 协议不指定编程语言、平台、数据库等,这允许开发人员在设计和实现中继时完全自由。这吸引了各行各业的开发者和爱好者。目前有 C#、Rust、Go、Java、Python、Kotlin、JavaScript、TypeScript 和 Clojure 的实现。这些中继实现使用 SQLite 或 PostgreSQL 作为它们的数据库。

Nostr协议的基础元素

在Nostr协议组成的网络中,我们可以简化出一个最小元素的模型,基本元素包括:用户、客户端client、中继器Relay。三个元素之间的关系可以表示为:

  1. 用户使用client,发布和查看内容(event形式传输),需要签名时在客户端完成签名。

  2. client将内容发送给Relay传输出去,同时接受Relay传输过来的内容,Relay仅完成对消息的转发。

    我们会发现,client不与client直接发生交流,Relay也不与Relay发生交流。

如上图所示,用户1使用client1 、client2发送消息,用户1使用client1订阅了Relay1和Relay2,所以client1发送出去的消息会被Relay1和Relay2同时往外广播;用户2如果作为消息接收者,TA可以通过client1和client2来接收消息,因为用户2用client1订阅了Relay1和Relay2,所以TA可以通过client1查看来自Relay1和Relay2广播的消息,而用户2在client2只订阅了Relay2所以client2只能接收到Relay2广播的消息。

到这里我们可以发现一个现象,那就是中继Relay只负责将client发送的消息传输出去,并不会对消息做任何改动,消息(编辑、处理、显示)、用户操作(关注、拉黑、取关、zap)都是在client上完成的,这也就是Nostr协议非常重要的一个发展原则:“笨中继,智能客户端”。

你客户端运行的速度取决于你连接的中继器,因此你可以连接更多中继器以保证使用Nostr网络时有流畅的体验,当更多中继转发我们客户端发送的内容时,客户端使用体验更好。 当你连接的所有中继都断开时,你将找不到你账户发布的所有内容,除非你再次连接这些中继。如果你想确保自己的数据一直保存,你也可以运营自己的中继器,这是指南 https://andreneves.xyz/p/set-up-a-nostr-relay-server-in-under

Nostr协议的优点及应用场景

Nostr协议的优点:

在这样的发展原则下,就会带来以下几点的优点:

  1. 实现言论自由

    中继可以阻止用户在那里发布任何内容,但这对他们没有影响,因为他们仍然可以发布到其他中继。由于用户是通过公钥识别的,因此当他们被禁止时,他们不会失去他们的身份和他们的追随者基础。 不需要用户手动输入新的中继地址(虽然这也应该被支持),每当你关注的人发布服务器推荐时,客户端应该自动将其添加到它将查询的中继列表中。 如果有人正在使用一个中继发布他们的数据但想迁移到另一个中继,他们可以发布一个服务器推荐到之前的中继中去;

    如果某人被多次中继禁止,以至于他们无法广播他们的服务器推荐,他们仍然可以通过其他方式让一些亲密的朋友知道他们现在正在哪个中继发布。然后,这些密友可以连接该新服务器查看好友发布的内容,慢慢地,被禁用户的老粉丝群将开始从新中继重新找到他们的帖子。 当继电器停止操作时,上述所有内容也有效。

    在这样的系统中,我们只要保存好自己的私钥和公钥,就不用担心会被内容平台封锁账号,我们的发言权将重新回归到自己手中。

  2. 抗审查

    每个用户都可以将他们的更新发布到任意数量的中继。 中继可以向用户收取费用(目前该费用的协商不在协议范围内)以在那里发布,这确保了审查抵抗.

  3. 防止垃圾邮件

    如果垃圾邮件是中继的一个问题,它可能需要支付发布费用或一些其他形式的身份验证,例如电子邮件地址或电话,并将这些在内部与公钥相关联,然后发布到该中继——或其他反垃圾邮件技术,如 hashcash 或验证码。如果中继被用作垃圾邮件载体,它很容易被客户端取消列出,客户端可以继续从其他中继获取内容更新。

  4. 更优雅的数据存储

    为了让网络保持健康,不需要数百个活跃的中继。事实上,考虑到在现有中继开始出现异常时可以轻松创建新中继并通过网络传播这一事实,它只需少数几个就可以正常工作。因此,所需的数据存储量通常比 Mastodon 或类似软件要少。 或者考虑一个不同的结果:其中存在数百个由业余爱好者运行的利基中继,每个中继都有一小群用户更新的内容。该体系结构也可以扩展:数据从用户发送到单个服务器,然后从该服务器直接发送到将使用该数据的用户。它不必由其他任何人存储。在这种情况下,任何一台服务器处理来自其他服务器的更新都不是很大的负担,拥有业余服务器也不是问题。

  5. 传输视频等内容

    中继很容易拒绝大型内容,或者在接受和托管大型内容时收费。当信息和激励措施明确时,市场会产生专门的视频服务商来实现视频等文件的传输中继,这将促进新的商业服务的形成。

  6. 用户掌握自己的信息流

    每个客户端都可以决定如何最好地向用户显示帖子,因此用户始终可以选择以自己想要的方式查看内容——从使用 AI 来决定看到的更新顺序 或者 按时间顺序排序内容。

Nostr协议的应用场景:

Nostr 的设计理念是有一天它可以取代 Twitter 作为一个平台,但除此之外,它还可以用于以下应用场景:

  1. 直接和即时消息

  2. 公共聊天室

  3. 新闻频道

  4. 论坛

  5. 网站

  6. 代码库

  7. 虚拟社区

  8. 游戏(西洋跳棋、国际象棋)

  9. 实时协作

  10. 优步克隆

  11. RSS阅读器

  12. 投币

  13. 自动化和家庭自动化

  14. 表决

  15. 从其他社交网络到 Nostr 的桥梁(电子邮件、Twitter、Mastodon 等)

  16. 更多功能,期待大家一起去探索

中继的分类

任何人都可以开发并运营一个自己的中继,目前已经有人运营中继来实现盈利。对于中继的分类,并没有官方的说明,市面上的中继大致上可以分为三类:

  1. 普通中继:任何人都可以在上面发布内容,相当于一个公共广场,没有对发布的内容进行任何过滤,所以整体信息质量低,内容参差不齐;

  2. 付费中继:有一定的进入门槛,需要付费或者一定的注册流程,会实现一定的内容过滤,但是并不意味着没有垃圾内容。

  3. 封闭中继:只有指定的用户才可以加入其中,是一个内部小圈子专用。比如组织、公司、俱乐部自用中继

当然,对于更多人来说第一种和第二种中继足以满足我们的需要,你可以在这里查看现有的中继器 https://nostr.watch/relays/find

关于Nostr的一些思考

经济系统

Nostr协议网络从一开始就引入了lightning闪电网络,让整个nostr网络原生就带有一种经济“基因”,那么接下来的工作就是探索可以实现经济交流的业务场景,然后对应该场景开发相应的功能。

就目前client普遍有的功能来说,一个可以发展出经济系统的功能就是zap,当任何人表达自己的喜欢时,不是用“like”而是用“ZAP”,发送一定数额的sat来支持你喜欢的内容时,创作者经济将会获得成长的可能,当更多人自然的打赏自己欣赏的内容时,打赏文化将在nostr网络中传播,创作者受到激励将输出更高质量的内容,商业飞轮将转动起来。

生态建设

Nostr并不是一个应用,它是一个通信协议,就像是地下河一样,我们可以在它之上种各种各样的植物(搭建属于自己的应用来实现各种各样的功能)从而发展一片森林。我们可以想象基于nostr协议将发展出丰富的应用生态。据我在nostr开发者群组的观察以及对GitHub上nostr相关项目的调研发现,开发者的热情还是很高的,他们在快速的开发和迭代新的应用及功能,如果这些开发持续下去的话,nostr生态必然在不久的将来迎来一波爆发。

当然,也有一些问题需要我们留意,比如很多项目功能相似度高,浪费了生态发展的更多可能性。

总得来说,开发者是nostr网络发展的根本,有好的应用才能支撑更丰富的功能的实现,而目前的开发者激励是缺失的,开发者都在用爱发点。每一个开发者在开发之前可能要试着去思考如何实现商业化,这不仅有利于自己应用更长远的发展,当更多开发者思考商业模式的时候,整个生态的商业可能性才能被开发出来,这将推动整个生态商业市场的繁荣,进而推动nostr网络的发展和普及。

你还可以在这些地方找到我

即刻:hoodrh

Mirror:Hoodrh

Twitter: Hoodrh

Nostr: npub1e9euzeaeyten7926t2ecmuxkv3l55vefz48jdlsqgcjzwnvykfusmj820c

Subscribe to hoodrh
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.