我眼中的下一代互联网

人们常说的Web3并不是我眼里最理想的下一代互联网。

目录

21年和22年随着区块链和加密货币的进一步发展,Web3的概念爆火,在这期间我有很多思考和想法,但是尚未形成体系。在又经历了FTX暴雷、BERT和ChatGPT模型的出现之后我渐渐有了自己对下一代互联网的畅想,记录于此还望指正交流。

本人并非互联网业内人士,对互联网技术的理解也比较浅薄,如有离谱的或者重复造轮子的观点还望见谅。

一些理论

Web 3.0

先来谈谈人们口中的Web 3.0/Web3。首先这个概念不是一个官方的概念,你能搜到的网站web3.com也只是一个提供相关服务的商业机构。根据维基以及很多文章的解释,Web 3.0的概念最早是由互联网之父Tim Berners-Lee在2006或更早提出,他所定义的第三代互联网被称作语义Semantic互联网Web,其目标是提供便于机器理解的网络内容1。而最近引起关注的Web3起源于以太坊合伙创始人Gavin Wood之口,这个活跃于区块链社区里的词被赋予了去中心化的含义2

这些都只是一家之词,目前尚未有统一的定义,但是人们对目前的互联网,或者前两代的互联网定义则基本相同。这里我简述一下我对这几代互联网的定义,注意一个基本的事实是:网络Web的本质是将每个人互联起来,便于信息和内容传播。

  • 第零代互联网: 消息靠人传递,例如古代的号外和现代的报纸,或者之后的电视。缺点:延迟高,成本高,只能被动接受信息,信息渠道少。

  • 第一代互联网: 每个人都可以作为消息源(自建网站),但是绝大部分人都只是消费者,而不生产内容和信息。这个时期基本没有账号系统,更别提跨平台的账号系统。大部分网络是只读且无状态Stateless的。网站可以带广告,但是没有追踪,没有定制化广告。缺点:信息的发现和推广都很困难。

  • 第二代互联网: 大公司建造信息平台,每个人把自己的内容发布到平台上,平台解析内容并提供推荐算法。大公司还可以因此通过定向广告盈利。用户的信息会通过账号、Cookie、以及页面追踪被记录下来,但是这些信息一般都不由用户自己控制。缺点访问能力Accessability和推荐系统掌握在大公司手里,大公司希望用户依赖平台,因此建造信息茧房。另外用户对自己的数据没有控制权。

  • 第三代互联网: 每个人是自己的消息源(类似于第一代,所谓去中心化),但是信息如何推广和推荐仍是未解之谜。机器对信息的处理更加强大(所谓语义互联网),但这其实在第二代已经有长足的发展。另外,第三代互联网其实跟区块链不是一回事,因此鼓吹区块链是Web3的未来我都不赞同。这个和VR/AR/元宇宙之流也没有关系。

集中式、分布式与联邦式

在展开我的想法之前,我先介绍一下一个很重要的概念:联邦式Federated网络结构

网络的几种拓扑形式,来源维基百科NetworkTopology页面

与经典的网络拓扑结构相比较,集中式Centralized 网络类似于星形结构,信息交换全权由根节点负责;分布式Distributed 网络类似于网状结构,每两个节点之间都会有通信;联邦式Federated 网络则是一种混合结构。在联邦式的网络中有多个服务器节点,服务器之间通过网状结构相连,而用户则只连接到所属区域的服务器节点上。这有点类似于算法里分治的思想。

需要说明的是,有一些文章里会用去中心Decentralized一词代指这里描述的联邦式的结构。但是在我的理解里,去中心化仅仅与集中式相对应,它应该包含联邦式和分布式的结构。可以参考维基百科的定义

现代的主流社交平台如QQ、微信、Facebook、Twitter等等无一例外都是集中式的网络结构;曾经流行的Torrent和现在流行的Git是经典的分布式例子;而联邦式的例子有我们常用的邮箱、以及最近开始流行的Mastodon等。

集中式设计的主要好处是资源效率最高,内容重复最低,因为所有的信息都会存储在服务器上。与之相对应的就是它的缺点:如果服务器崩了那所有的数据都没了,或者所有的服务都不可用了。因此现在的云服务器都是有多重备份的,以免服务器失效造成重要损失。

分布式设计的主要好处也显而易见,信息在每个网络结点上都会有备份,因此信息丢失的可能性随着网络结点的变多而降低。但反过来讲,它的弊端就在于数据过度冗余,每个节点都存储相同的信息也移位置大量的资源浪费。另外,分布式的内容一定会伴随着版权和监管问题,因为数据分法过渡分散,发布出去的数据就像是泼出去的水一样无法撤回。

联邦式的设计则是集两家之所长,信息在少数服务器节点上存储,哪怕其中的几个节点失效了,其他的服务器仍可以提供信息和服务。而用户连接到服务器可以使得信息在一定程度上避免冗余,也避免了每个人都成为一个节点的必要性。

注:在分布式的网路里(包括联邦式网络的服务器之间),节点第一次连接到网络时需要有一种发现其他节点Peer的机制。在libp2p的文档中有提到目前可行的机制,其中比较流行的一种方式是磁力链接所使用的DistributedD HashH TableT

我的一个想法是可以定义一个指标来衡量分布式的程度。比如可以叫分散度,它可以定义为网络中网状通信的节点数量除以总节点数量。(或者反过来定义集中度:网络中单点通信的节点数量除以单点通信的节点数量)

  • 分散度高:数据可用性更强,但也意味着数据更不容易被修改和删除
  • 分散度低:数据可用性降低,但也意味着数据更容易被修改和删除

因此针对不同的场景是需要不同的分散度的:需要掌控权的数据(隐私、版权数据)更适合集中存储;需要可用性的数据(新闻、知识)更适合分散存储。但是总而言之,我认为理想的互联网会是由联邦式的网络结构来搭建的。

就像是《刀剑神域》里的种子服务器,每个人都可以自己开服,邀请亲朋好友加入自己的世界。更重要的是每个人的角色都可以在种子服务器之间穿梭,你可以以同一个身份在完全不同的世界中探索。

常见的内容分发形式

目前我所了解的分布式内容分发形式有以下几种(这里不讨论基础的TCP/UDP/HTTP通信协议):

  1. P2P(如BitTorrent、IPFS):即点对点技术,一般这个词会被用以指代P2P文件共享,其中最常见的协议便是BitTorrent协议。BitTorrent将所共享的文件分为多个小块,每个小块会从网络上的某一个节点Peer进行下载。不同的块可以同时从不同的节点进行下载,因此在节点数量充足时下载速度会很快。当一个块下载完毕后,下载者自己也会成为一个节点供别人进行下载。BitTorrent客户端通常还会借助跟踪器Tracker来进行节点的发现和选择。InterIPlanetaryP FileF SystemS跟BitTorrent的内容分发逻辑类似,但是它的设计目标是构建一个全局的单一的网络,这样如果网络中有两个人分享同样的内容,那么重复内容不会再次占用网络资源。IPFS在近年也变得流行起来,人们对它主要的期待是能够逃脱内容审查。

    不少架构如FreeNet、IPFS等会使用P2P来进行多媒体内容的分发。但是这样的分发形式有其显著的弊端,就是延迟高更新困难无法删除。在目前的P2P架构中,更改已有的内容是不可能的,你能做的只有重新发布这个内容,然后告诉别人使用新的内容。这对于社交媒体来说是一个挺致命的短板,社交内容一般是非常短小而且修改频繁的,而P2P主要的应用场景是更新频率低的大文件。

  2. 内容聚合(如RSS、新闻网站):内容聚合Syndication指的是按照一定逻辑将网站内容进行重新组合排序而生成一个新的列表或专题页面,其实我们手机中的新闻客户端,或者是知乎、微信公众号这种都属于内容聚合的平台。除了集中式的平台之外,还有一种常见的协议是RSS协议。RSS协议实际上定义了一种基于XML的列表格式,有一些网站会提供RSS的列表供客户端获取最新的内容Feed。RSS客户端一般会定期从某一网址获取新的RSS内容,然后通知用户。

    Syndication这个词最早的体现在以前的报业Print联卖Syndication,指的是报纸或杂志从作者那里获得授权刊登文章、漫画等内容。实际上现在的新闻网站仍然是基于这个逻辑。Syndication的好处是使得平台获得更丰富的内容,让平台更加吸引读者,进而反过来提高内容的曝光量。

  3. 内容投递(如SMTP、ActivityPub3:现在人们常用的电子邮件都是使用SMTP协议进行发送的。SMTP协议会借助DNS记录查询目标地址的IP,并向对应机器的特定端口投送邮件信息。这个过程确实很像现实世界的邮件,邮递员通过地址和邮编找到邮箱位置,把信件投递到邮箱里。投递的时候收件人可以不在场,而是之后再来查询新邮件。

    另外还有相关的POP3、IMAP等协议是用来定义客户端如何收取和管理服务器上的邮件的,而不是实际邮件投递所使用的协议。

    另外使用内容投递形式的还有Mastodon使用的ActivityPub。ActivityPub定义了一套服务器之间以及服务器与客户端之间通信的协议。其服务器之间的通信方式类似于邮箱,当新的内容(被称作Activity)产生时,内容会被推送到其他的服务器上。ActivityPub协议的独特之处在于它还定义了一个“关注”的逻辑,当B关注A时,A会把新的内容推送到B所属的服务器。因此整体而言ActivityPub像是一个定位社交的邮箱协议。ActivityPub在结构灵活的同时限制了客户端与服务器的沟通方式,因此它也有不少弊端4。在众多分布式社交架构(也被称为Fediverse)中,ActivityPub是目前比较流行的一种,此外还有diaspora、zot等5

可以发现这几种内容分发方式在信息传递的主动权上各有区别,P2P是用户之间独立进行数据传输,内容聚合是收取方从发送方(聚合平台)上查询内容,SMTP则是是收取方被动地从发送方获取内容。

当下互联网有哪些问题

“下一代”或者“次世代”这俩词非常唬人。一种技术发展出了下一代,那一定是解决了上一代的一个或多个重要问题。那么我们首先要厘清的是目前的互联网究竟有什么问题。根据我的了解以及使用感受,问题总结如下:

  1. 信息检索信息推荐能力不足、不受控
  2. 数据安全数据所有权不受控
  3. 用户的隐私保护无法规范
  4. 基础设施的可用性访问性不受保障

以上问题按我感兴趣的程度排序,其中前文提到的“语义互联网”与第一点相关,而去区块链技术则与第二点和第三点相关。但是这两种技术构想并不能令人满意,也只能解决其中的部分问题。

这里“隐私保护”一词侧重敏感数据(如个人信息)被负责地使用,而“数据安全”一词侧重数据不被未经授权的第三方访问。保障数据安全是隐私保护的前提,而隐私保护还要求被授权的一方也不滥用敏感数据。

下面我会针对这四点问题一一提出我的畅想和构思。后文的内容按照相互依赖的顺序进行排序。

我期待的变革

革新其一:通过联邦式的应用提高服务的可用性和访问性

Web3的吹捧者们会说未来的网络是分布式的,但是我认为分布式并不是最好的解决方案。就像区块链需要消耗大量的资源一样,纯P2P的网络结构会导致同一份内容在很多节点中都重复存在,而当持有同一份资源的节点超过一定数量之后,更多的节点只能带来可用性的边际提升。

在我的设想中,新的互联网形式应该是基于联邦式的内容投递系统。联邦式的网络可以在数据可用性与效率之间取得平衡,而内容投递的方式可以实现信息的及时更新,并且减少资源占用(不需要轮询)。

有一个需要考虑的问题是如何在这样的网络架构中搭建高实时性的应用(例如游戏、直播、视频会议、实时协作等)。游戏和视频会议这种要求低延迟的可能还是更加适合集中式的或者树状的网络架构,因此一个可行的解决方案是将直播/游戏服务器的信息和地址通过联邦网络发出去,然后用户直连直播服务器来进行交互。实时协作相比之下对延迟的要求更低,但是需要额外的解决冲突机制。针对分布式的实时协作,有一个概念是本地Local优先First软件,其概念和愿景可以参考这一篇文章。其中一个关键是技术是Conflict-FreeC ReplicatedR DataDTypeT,用以解决不同服务器之间内容状态不同步的问题。

一个典型的例子:百度云曾经在我完全不知情的情况下删掉了我的部分文件。因此我认为未来的软件有个必要的功能:客户端课以很方便地保存和导出所有的个人数据(假设存储空间足够)

革新其二:通过分布式数据源以及加密实现用户对数据的掌控

关于用户对数据的掌控权,这里我觉得有两种权利需要保护:

  • 对于集中式存储(如云服务器或联邦服务器)的情况,用户的数据不应该允许被服务器控制者删除。
  • 对于分布式存储(如IPFS)的情况,用户应该保有修改和删除内容内容的能力

在集中式网络中,数据更容易被修改,因此数据安全应该由备份和加密完成,即数据加密之后应被存储在多个云端。在我的设想里,最能保障数据安全的方式是端到端加密,并且加密应有一个完全本地的应用提供,例如系统级别的接口,或者开源的第三方加密软件(现在已经有加密输入法的存在),而类似于WhatsApp和iMessage所宣称的端到端加密始终是无法证实的。

需要指出的是,我觉得服务器不应该有能力删改用户的个人内容,但是应该有能力限制用户分享内容,以保留一定的审查能力。

在分布式网络中,用户对数据的掌控则体现在修改和删除的能力。目前在IPFS框架之上有一个InterIPlanetaryP NamingN SystemS协议6支持资源的版本化与更新。IPFS的文件地址是由文件内容的哈希构成的,也就是说同一个地址对应的文件一定是相同的(不考虑哈希冲突的话)。但是这也意味着修改这个内容会改变其地址。而IPNS的作用则是定义另一种基于名字的地址,它可以把名称解析为一个IPFS的哈希地址。你可以把IPNS地址理解成指向IPFS地址的可变指针,而IPFS地址是指向内容的不可变指针。IPNS还给每个地址附加了过期时间和签名。签名的存在使得一个IPNS记录Record(类似于DNS记录)可以被其他人验证,以及只有持有私钥的一方可以更新这个记录。

IPNS在我看来是一个不错的解决内容更改的机制,但是它仍然不能支持内容删除(它可以隐藏掉旧的资源,但是不能保证那个资源无法继续被访问)。如果要支持内容删除那么是不能利用完全P2P的架构的,因为你无法命令大量结点同时删除一个内容。对内容删除的有需求的场景(如版权内容)更适合使用分散度更低的网络架构。我的构想是,在联邦式的网络中,需要更改和删除的内容只在“授权”的服务器之间进行传递。这些“授权”的服务器需要按照要求把内容进行更改或者删除,如果不能完成这样的操作则应该吊销对应服务器的授权。

因此在联邦式网络架构下,如果用户不信任服务器节点,那么用户应该在上传之前把内容就进行加密、备份;如果用户信任服务器节点,那么用户可以依赖服务器端提供的增删改查功能进行数据控制,并依赖服务器节点进行数据分发备份。

革新其三:跨平台身份与追踪性受限的匿名身份

就如前文我提到的《刀剑神域》,如果一个人的身份可以在多个平台之间无缝流转那将极大提升“互联”的体验。跨平台帐号并不是个稀有的东西,目前有很多平台都提供第三方身份的接入(例如Google、QQ、Github等都提供身份认证服务),而大多数都依赖于OAuth2标准。但是OAuth2标准中用户数据是存储在资源服务器上的,如何在联邦式的网络中实现对应的机制仍有待讨论。

OAuth2架构,图片来自Digital Ocean

我对互联网的另一个期待是隐私与责任取得合适的平衡。用户的隐私信息不应该随意被人获得,但是在必要条件下应该也提供追溯一个人的能力。首先我认为完全匿名的技术应该是不存在的,只要你使用网络运营商提供的服务,那么这完全匿名几乎是不现实的。此外,如果提供一种能够完全匿名的技术,那么这项技术必然会被用于非法用途,从而被政府禁止或限制。换言之,我认为我们不应该追求完全匿名,而是追求对部分平台匿名。

所谓隐私/敏感数据,是指泄漏后可能会给一个人或实体带来严重危害的数据7,比如身份证号、手机号等。例如如果身份证号和名字一起泄漏,那么不法分子可能会拿这个信息去伪造身份。一个解决隐私问题的方法就是使得敏感信息变得不敏感。目前各大平台需要用户提供某些隐私数据的(合理)目的大概有:

  1. 业务需要(例如银行转账需要知道你的目标帐户)
  2. 身份认证(进行访问限制)
  3. 实名制认证(使你对你的言行负责)
  4. 个性化(提供定制的内容和服务等)

如果我们能够提供一种更安全的方式完成这些目的,而不需要透露大量的个人信息,那么我们就可以从源头上解决隐私问题。针对第一点(直接的业务需要),这个我们很难从技术上进行改变,因为如果不提供这个信息那么业务就没法完成。我们能做的也就是推动法规进步,要求业务提供方提高数据安全和隐私保护水平。而针对其他三个目的,我设想的一种解决方案是多身份体系。这里的多身份不是指像现在我们在QQ、微信、知乎、B站等平台都有不同的账号,而是每个人应该能够拥有多个跨平台的身份。每一个身份只于一部分个人隐私数据相关联,比如身份A包含这个人的住址和电话,用来收发快递;身份B只包含几条银行账户信息。每一个身份都由公钥和私钥加密,可以用于身份认证。这样虽然不能完全解决隐私问题,但是可以使得有心之人很难将这些身份关联起来,从而难以准确刻画一个人。

区块链社区经常会说匿名化(用哈希来代替名字)是保护隐私的一个有效手段,但我完全不同意。我用名字还是用哈希来称呼和定位一个人没有本质区别,更何况由于区块链完全公开的特点,用户所有的行为在区块链上实际是透明的,很好跟踪。这个方向上比较有前途的方法我认为是被Monero和ZCash所使用的零知识证明8,它可以做到隐藏交易双方的地址,有效地杜绝隐私泄露问题。但具体如何将这个手段应用在其他场景,并保留合规性仍然是需要探索的。

革新其四:更强大且可定制的内容搜索与推荐

去年(2022年)是AI创作技术爆发的一年,各种多模态神经网络层出不穷,它们在可见的未来对内容创作会有深远的影响。但是相比之下,神经网络在内容推荐方面缺没有与之匹配的发展。在我的眼里,丰富的内容和强大的推荐算法共同构成了现在互联网的繁荣(高情商:百花齐放,低情商:泥沙俱下)。因此我对下一代互联网的第一个期待,也是目前感觉探索最少的方面是更强大的内容搜索与推荐策略。

在前文我介绍了不同的内容分发方式,在这些方式中只有集中式的内容聚合平台才会提供比较好的搜索和推荐算法。一方面是这些平台通常有财力能够支撑起复杂算法的运行,另一方面是这些平台可以拥有海量的数据去训练搜索和推荐模型。但是在分布式和联邦式的网络结构中,由于内容分散在各个节点中,每个节点的可用资源一般也会比较低。例如如果想在P2P网络中实现搜索和推荐,那么每个节点可能只是一个家庭电脑,它没有能力存储海量的信息,也没有办法训练强大的算法。

因此,在我的设想中,我们需要设计一种适用于分布式网络的搜索和推荐算法。它们面临的挑战主要有:

  • 受限的计算与存储资源
  • 受限的数据访问(一般一个节点只会存储网络的部分数据)

对于内容搜索,目前有一个IPFS-Search项目9在探索基于IPFS的搜索引擎。他们采取的方式是像传统引擎一样搭建一个索引,只是区别在于这个索引是放在IPFS上面的。所以实际上这是一个中心化的搜索引擎,索引只能由官方发布,用户可以下载部分这个索引然后进行查找。由于它是基于传统的前缀搜索,它的搜索对象只有资源的标题和一些基本的元数据,而不能进行全文搜索。

但是我所期待的是像现在的Google、Bing甚至是ChatGPT,他们可以支持模糊搜索,甚至语义搜索。你只需要描述你想要的内容就可以进行搜索。我对分布式内容搜索与推荐的构想是搭建一种基于嵌入Embedding10的数据描述接口。有了高维嵌入的索引,无论是搜索还是推荐都可以通过近邻Neighbor搜索来完成。而索引搭建和更新的成本可以由两个方式来降低:一是在联邦服务器上搭建索引,二是索引只按需向其它服务器获取。

这一个方式需要两个机制,分别是标准的嵌入生成机制嵌入验证机制

  • 对于嵌入向量的生成,由于目前向量的计算不可避免地依赖于机器学习模型,考虑到深度学习模型的混沌性,必须要保证所有客户端使用的是同一个嵌入模型。因此需要一个统一的组织来开发和优化这个嵌入模型。另外,由于机器学习模型的迅速发展,可能每过几年就会出现新的更强大且高效的模型,这个嵌入模型应该被设计成可升级但向后兼容的。我认为一个可行的方案是早期的模型只生成较短的嵌入向量(例如只生成100维),然后新的模型可以生成更长的向量,但是要保证前100维的数据分布与之前版本相兼容(即同一份内容生成的嵌入的前100维基本相同)。
  • 对于嵌入向量的验证,我想到的有两种方法。第一种是嵌入向量只能由内容发布方生成,如果发布方没有使用标准模型,那么带来的推荐曝光度损失由发布方自己承担。第二种是嵌入向量可以由任意联邦服务器生成,但是服务器在接收别的服务器提供的向量时,应该随机抽选里面的部分向量进行验算,如果验算不成功则认为这个向量是无效的,不加入索引。

另外我还期待未来的互联网提供可定制的内容推荐服务。由于我的构想是基于联邦式网络结构,用户对数据的掌控权会更大,因此我认为让用户自己定义内容推荐的模式应该也是可行的。比如我可以选择“与A最相关但是与B最不同的内容”这样的条件进行搜索和推荐。

由于我对自然语言处理和搜素引擎的技术都不甚了解,这个建议的可行性尚待验证。不过我最近注意到向量数据库Pinecone和Milvus的蓬勃发展,我就设想未来的搜索引擎很有可能是基于这些向量数据库的。

总结

在这篇博客里我提出了一种对未来互联网组织的设想,其相比于当代互联网的主要区别有

  1. 基于联邦式架构:服务器之间是分布式的,服务器于客户端之间的通信是集中式的。
  2. 用户数据以联邦式或分布式的形式存储在提供商的服务器上。并且用户应有权备份和导出这些数据。
  3. 用户应持有多重跨平台的身份,每个身份包含用户部分的个人信息。隐私保护可以通过让这些身份之间难以关联来实现。
  4. 用户可以通过分布式的嵌入向量数据库完成内容搜索和获得推荐。嵌入向量的生成和验证应由某组织来制定标准。

仍待明确的问题:

  1. 如何商业化,尤其是服务器提供方如何获取足够的收益维持运行
  2. 如何保证与现在的互联网至少相当的的用户体验
  3. 如何在这个架构下实现实时合作和实时推流
  4. 如何扩展Scale到海量用户和海量内容

  1. 语义互联网可以参见维基百科或者这篇知乎的介绍 ↩︎

  2. 这个Youtube视频中,作者认为Web3所能解决的问题是Personal Privacy和Asset Ownership。 ↩︎

  3. 可以参见ActivityPub官方简介 ↩︎

  4. 这里有一篇很不错的评价ActivityPub的文章 ↩︎

  5. 其他分布式社交协议可以参见维基页面 ↩︎

  6. IPFS文档里有对IPNS的介绍 ↩︎

  7. 在行业内有个描述个人隐私内容的词叫PersonalP IdentifiableI Information(I。 ↩︎

  8. 李永乐老师曾经视频视频介绍过零知识证明 ↩︎

  9. 他们的官方博客有对他们采用的搜索方法进行讲解,值得一读。 ↩︎

  10. 对于嵌入技术的介绍,可以参考这篇文章 ↩︎

使用 Hugo 构建
主题 StackedJimmy 设计,Jacob 修改