Nostr-Twitter审查的最终解决方案是开放协议,而不是P2P

2020-11-16 16:04:51

最简单、最开放的协议,能够一劳永逸地创建一个不受审查的全球社交网络。

它不依赖于任何可信的中央服务器,因此它具有弹性;它基于密钥和签名,因此它是防篡改的;它不依赖P2P技术,因此它可以工作。

服务器之间的迁移是事后才会想到的,只有在服务器合作的情况下才能完成,如果服务器在敌对环境中不工作,所有的追随者都会丢失;

没有明确的动机来运行服务器,因此这些服务器往往是由爱好者和那些想把自己的名字附加到一个酷域名上的人运营的,然后用户就会受到一个人的专制统治,这种专制往往比Twitter这样的大公司还要糟糕,他们无法迁出;

由于服务器往往是业余运行的,所以它们通常会在一段时间后被废弃--这实际上等同于禁止所有人使用;

如果必须痛苦地推送(并保存)每台服务器的更新,那么拥有大量服务器是没有意义的。对于大量其他服务器来说,这一点因服务器往往大量存在的事实而变得更加严重,因此更多的数据必须被多次传递到更多的地方;

对于视频分享的具体例子,ActivityPub的发烧友们意识到,像文本笔记那样在服务器之间传输视频是完全不可能的,因此他们决定只在视频发布到的单个实例中托管视频,这与Nostr的方法类似。

它没有太多问题,我认为它很棒,事实上我打算用它作为这个的基础,但是

它的协议太复杂了,因为它根本没有想过要成为一个开放的协议,它只是用JavaScript编写的,可能是用来解决特定问题的快捷方式,并由此发展而来,因此它有奇怪和不必要的怪癖,比如签署JSON字符串,必须严格遵循ECMA-262第六版的规则;

它坚持只有一个用户的一系列更新,这对我来说是没有必要的,而且还会让事情变得臃肿和僵硬--每个服务器/用户都需要存储所有的帖子链,以确保新的帖子有效,为什么?(也许他们有很好的理由);

它不像这个那么简单,因为它主要是为P2P同步而设计的,酒吧是后来才想到的;

不过,考虑使用SSB而不是这个自定义协议并使其适应客户端-中继服务器模型可能是值得的,因为重用一个标准总是比尝试让人们使用新的标准要好。

有两个组件:客户端和中继器。每个用户都运行一个客户端。任何人都可以跑接力赛。

每个用户都由公钥标识。每个帖子都有签名。每个客户端都会验证这些签名。

客户端从他们选择的中继器获取数据,并将数据发布到他们选择的其他中继器。一个中继站不会与另一个中继站通话,而是直接与用户通话。

例如,要关注某人,用户只需指示其客户端从该公钥中查询其已知的转播帖子。

启动时,客户端从它所知道的所有中继中查询其跟踪的所有用户的数据(例如,前一天以来的所有更新),然后按时间顺序向用户显示该数据。

帖子可以包含任何类型的结构化数据,但是最常用的数据将会发现它们的WWAY是标准的,这样所有的客户端和中继器都可以无缝地处理它们。

一个中继站可以阻止一个用户在那里发布任何东西,但这对他们没有影响,因为他们仍然可以发布到其他中继站。因为用户是由公钥标识的,所以当他们被禁止时,他们不会丢失自己的身份和追随者基础。

不需要用户手动键入新的中继地址(尽管这也应该是受支持的),只要有人发布了服务器推荐,客户端就应该自动将其添加到它要查询的中继列表中。

如果有人正在使用一个中继站发布他们的数据,但想要迁移到另一个中继站,他们可以向前一个中继站发布服务器推荐,然后继续;

如果某人在许多转播中被禁止,以至于他们无法获得服务器推荐的广播,他们仍然可以通过其他方式让一些亲密的朋友知道他们现在发布的是哪个转播,然后这些更亲密的朋友将服务器推荐发布到那个新服务器,慢慢地,被禁用户的老追随者基础将开始在新的转播中再次找到他们的帖子。

转播可以从用户那里收取一定的费用(目前这笔费用的谈判超出了协议的范围),这就确保了审查的抵抗力(总会有一些俄罗斯服务器愿意拿你的钱来换取你的帖子服务)。

如果垃圾邮件是一个中继站的问题,它可能需要为发布或其他形式的身份验证(如电子邮件地址或电话)付费,并在内部将这些内容与发布到该中继站的公钥或其他反垃圾邮件技术(如hashash或验证码)关联起来。如果某个中继器被用作垃圾邮件载体,则客户端很容易将其从列表中删除,从而可以继续从其他中继器获取更新。

为了让网络保持健康,不需要数百个活动的中继站。事实上,考虑到新的继电器可以很容易地创建并在网络中传播,以防现有的继电器开始运行不正常,它可以在少数几个继电器上工作得很好。因此,一般来说,与Mastodon和类似软件相比,所需的数据存储量相对较小。

或者考虑一种不同的结果:在这种情况下,存在数百个由业余用户运行的利基中继站,每个中继站转发来自一小群用户的更新,该体系结构也具有同样的可扩展性:数据从用户发送到一台服务器,然后从该服务器直接发送到将使用该数据的用户。它不必由其他任何人存储。在这种情况下,任何一台服务器处理来自其他服务器的更新都不是很大的负担,拥有业余服务器也不是问题。

一次转播很容易拒绝大容量内容,或者对接受和托管大容量内容收费。当信息和激励措施如此清晰时,市场力量就很容易解决问题。

每个客户都可以决定如何最好地向用户显示帖子,所以总是可以选择以你想要的方式消费你想要的东西--从使用人工智能来决定你将看到的更新的顺序,到只按时间顺序阅读它们。

我不知道,但我猜这与这样一个事实有关:制作社交网络的人要么是想赚钱的公司,要么是想要完全没有服务器的P2P活动人士,所以他们都看不到Nostr使用的这两个领域的具体组合。

一种将旧笔记上传到新服务器且不会触发日期不匹配错误的方法。

一种让笔记向客户证明它们在特定日期存在的方法(OpenTimestamps?)。

有一种方法可以使用基于新的类似Namecoin的名字分类账的Pubkey别名,这种名字分类账存在于与比特币平行的盲目合并挖掘的区块链上?

有关协议规范的合理详细解释,请参阅NIPS和专门的NIP-01(提示:它非常小且简单)。