瞎扯淡 想法:一个更彻底的去中心化社交网络

cichol · May 05, 2020 · Last by cichol replied at May 06, 2020 · 3562 hits

Federation 还不够好

目前的分散式(federated)社交网络的弊端在难以迁移,例如你没办法更改你在 mastodon 上的 id,或者简单迁移到另一个域名。即使你可以导出数据再在另一个服务器上导入,由于别人服务器上存着的是你旧的地址,这部分的引用会坏掉。即使你可以用重定向指向新的地址,这也需要旧的域名保持可用,问题是没有人会愿意为一个没用到的域名付费。

理想情况下,用户除了可以拥有他们的数据,还应该可以拥有他们的 id。最坏的情况是,你的 mastodon 实例主打算窃取你的账户,并伪装成你,你得有一种方法保护你的账户。同时,如果你和实例主产生了过节,他打算不让你取回你的数据,你也会处在一个很滑稽的处境。然而,在现有的 federated 实现里,包括 mastodon 和 solid,实例主还是能那么干,除非所有人都购买自己的域名和运行自己的实例。

更彻底的中心化

让我们先大致设想一下更进一步的去中心化。

一个推特用户,应该拥有他们全部推的数据,而不需要依赖任何在线服务。例如如果用户想发一个推,他应该先在自己本地的文件夹里创建这个推,再推送到远端的服务器上,让别人可以访问。

另外,用户也应该可以拥有所有他们见到过的数据。例如他们可以保存看过的推,以及别人发给他的评论,这样的话所有交互产生的数据也可以不依赖在线服务被保存。

在线服务变成数据的中转站(简称 hub),而不是数据的存储站。他们的任务是促进数据在用户间流通,而不长久拥有数据。他们只能缓存和展示用户决定要展示的数据。

一个 hub 同时也是一个消息信箱。如果其他人给一个用户发送评论,当这个用户离线的时候,这些评论会被暂存在 hub 里,等待被用户接收。而如果这个用户是在线的,他们就可以充当自己的 hub 直接与他人交互。我们最好用 udp 的方式交互,来尽量减少 hub 服务商经手的数据。

维护 id

现在问题变成,我们如何为每个用户维护一个通用的 id?用户应该可以在不同 hub 间转移,而这个 id 会保持有效。一个可能的选择是用 pgp 公私钥对,然后让其他人保存公钥用作引用。但是公私钥对用起来很麻烦,尤其是当私钥丢失的时候。

我认为最好的 id 就是邮箱地址。几乎每个人都有邮箱地址,而邮箱地址的所有权是非常好验证的,只要发一封邮件问问就可以了。另外,邮箱本身就是一个消息信箱,我们也许不需要 hub 来暂存消息。如果你想在互联网上找一个人,一个邮箱地址是最不可能失效的。

不过,hub 的存在还是能提高可访问性,我们还是会需要它们。因此我们需要一个类似 ns 服务器的东西,去把邮箱地址和 hub 的地址关联起来。这个服务需要做得尽量简洁和公开,或者我们也可以尝试类似 namecoin 的区块链方案。

另一个问题是,我们如何保证一个推文或者消息是来自于一个邮箱的所有人?如果我们通过 hub 来阅读他人的信息,那么 hub 将有可能伪造这些信息。因此我们仍然需要公私钥对,我们的 ns 除了要维护一个人关联的 hub,还要维护他们所用的公钥,这些公钥的设立要先经过邮箱验证。


在深入更多细节之前,我想要了解其他人对这样模型的想法。你觉得这样的社交网络可以吸引你吗?

不知道有没有人能帮我 up 一下😕 https://news.ycombinator.com/item?id=23076877

去中心化的话,不是区块链吗?

Reply to ken

区块链只是去中心化的一种方式

You need to Sign in before reply, if you don't have an account, please Sign up first.