Version 5
PDU协议 — 点对点的社交网络服务
Section titled “PDU协议 — 点对点的社交网络服务”- email: [email protected]
摘要:
任何信息传播系统都应同时实现两个目标:自由地发布信息与有效地获取信息。当今的中心化社交平台为了实现后者而牺牲了前者,通过审查和封禁来过滤信息,同时要求用户提交现实身份信息以创建账户。本文提出了一种完全点对点的社交网络系统,不依赖任何第三方服务,也不试图从系统层面消除所谓的垃圾信息或恶意账户。系统通过由相同私钥签名的消息形成全序列来定义发布者身份——身份就是有序事件的集合。每个信息获取者依据发布者之间的互动关系,按照自定义规则构建自己的可见发布者身份集合,在此范围内实现信息的有效筛选。系统没有统一的共识,也不存在上帝视角,信息质量的筛选是所有参与者独立行为的统计性结果。
当今网络上的信息传播和交互主要依赖Facebook、Twitter/X、WeChat等中心化平台,这些平台的存在使得用户可以方便地发布信息,建立联系。平台使用各种算法来检测和过滤垃圾信息,确保用户体验。然而中心化社交服务的问题也逐渐凸显。第三方服务有可能滥用用户信息或泄露用户隐私数据。可能会利用其强大的用户基础来锁定用户,维护其垄断地位。此外,中心化服务还容易受到政府的监管和封锁,因为它们是目标清晰的可控实体。
尽管存在以上问题,但大多数用户仍然不得不继续使用原有平台。虽然更换平台不会导致数据丢失,但会失去在该平台上积累的用户关系,从而降低自身的影响力。这个原因使得用户很大程度上被平台锁定。
去中心化的社交平台近年来发展迅速,试图解决中心化平台带来的诸多问题,如Mastodon。Mastodon采用的联邦架构摒弃了单一中心,由多个可相互通信的服务器组成,使用户关系数据得以自行保存。然而,用户注册过程和内容管理仍依赖各服务器管理员。这种治理结构可视为多个独立小型中心化平台的集合,仍无法根本避免中心化平台中遇到的问题。
基于区块链的社交平台(如Steemit和Minds)采用了一定数量的代币作为创建或激活账户的成本,同时利用代币激励用户的社交行为。尽管这种方法增加了创建账户的成本,但与中心化平台基于身份认证的方式不同。这种方式无法有效避免虚假账户的泛滥,并对经济能力较弱的用户产生不公平限制,从而降低了用户群体的多样性和包容性。
一些社交软件在积累用户的初期往往采用邀请制的方式来控制新用户的可信度,这种方法有效地防止了恶意注册和虚假账户的泛滥。然而,这种方式也会阻碍更广泛用户群体的参与。对于不认识现有用户的人来说,加入平台变得极为困难。此外,早期用户对社区文化和规则具有较大的影响力,这可能导致社区文化的单一性,难以吸引多元化的用户群体。
上述方案的共同问题在于,它们都试图在系统层面消除垃圾信息或恶意账户。然而,信息传播系统的两个根本目标——自由发布信息与有效获取信息——之间存在天然的张力。中心化平台为了有效获取信息而牺牲了自由发布,通过审查和封禁来过滤内容。在完全去中心化的环境中,不存在对信息好坏的统一标准,每个人对什么是垃圾信息有不同的判断。不允许垃圾信息的存在,本身就与自由发布信息这一目标相违背。因此,一个真正去中心化的社交系统不应该也不可能在系统层面消除垃圾信息,而应当允许任何信息的存在,同时让每个信息获取者按照自己的标准高效筛选信息。
本文提出的系统正是基于这一思路。系统的设计目标不是防止恶意行为,而是将恶意行为的影响控制在有限范围内,使正常用户的信息发布和获取不受实质性干扰。从系统整体来看,有效信息因为被更多人接受而传播范围更大,垃圾信息因为在传播路径上被大量信息获取者屏蔽而传播范围自然收缩。系统不需要任何统一的裁决机制,信息质量的筛选是所有参与者独立行为的统计性结果。
这些设计决策背后有统一的哲学基础。系统中的身份被定义为有序事件的集合,源于对时间和个体本质的哲学理解。每个信息获取者构建的可见身份集合对应于其自身的视界,系统不存在也不追求上帝视角的统一共识。信息公开透明是系统的结构性要求,而非功能偏好。更详细的哲学论述可参考《极简形而上学》。
使用者需要理解并接受以下作为去中心化社交网络成立的必要代价:每个人的可见发布者范围不一致,但依然能有效获取信息;维护消息链的完整全序是发布者自己的责任,违反将受到惩罚;系统不可能百分百预先屏蔽垃圾信息或垃圾账户,但能够高效地对信息进行筛选。
使用者的两个角色
Section titled “使用者的两个角色”在本系统中,传统意义上的用户被拆分为两个独立的角色:信息发布者与信息获取者。这两个角色有各自独立的目标、行为方式和系统表现,理解这一区分是理解整个系统的基础。
信息发布者 是系统中的可见角色。发布者的所有行为——发布内容、评论、转发、点赞、屏蔽等——都通过链式结构和数字签名形成不可篡改的有序消息集合,这个集合本身就是发布者身份的定义。作为信息发布者,其根本目标是最大化自身信息的影响力。这里的影响力不是简单的传播广度,而是时间与受影响人群的平衡,以发布者的主观判断为衡量标准。一个学者可能认为影响十个同行三十年比影响一百万人三天更有价值。
信息获取者 是系统中的隐形角色。获取者的根本目标是从系统中有效地获取信息。其手段是一套自定义的过滤规则,通过这种规则对系统中的所有信息进行筛选。这种规则本质上依赖于发布者之间互动所建立的信任传递关系。获取者的规则存储在本地,不在系统中留下任何痕迹,不被他人所知,仅仅是获取者自身对所有信息的过滤方式。每个信息获取者通过这种规则构建自己的视界,即可见的发布者身份范围。
这两个角色之间不存在严格的一对一关系。一个使用者可以拥有多个发布者身份,这些身份可以共享同一套获取规则,也可以各自独立。发布者身份与获取规则不存在任何绑定关系。
需要说明的是,发布者的互动行为是建立在作为获取者角色所对应的可见用户范围之上的——发布者只能与自己作为获取者能看到的信息产生互动。但发布者一旦发布互动消息,这个行为就成为公开的、留痕的、可被所有人评判的。
从系统层面来看,系统的目标既不是最大化任何发布者的影响力,也不是审判信息的好坏,而是信息的正常流动——让信息在被需要的范围内传播,在被接受的范围内传播,垃圾信息尽可能少地干扰正常信息的获取。系统通过每个信息获取者对信息和发布者的独立判断,自然调整信息的传播范围和走向。
消息被定义为系统中的基本数据结构,并且是点对点网络中传递的唯一信息类型。系统中的其他数据类型,如发布者身份等,都是基于这种公开数据由各信息获取者自行生成。
如图1所示,每条消息由三个部分组成:消息内容、引用列表及签名。消息内容是消息的主体,分为内容信息和互动方式两部分,前者是文字图片等多媒体内容,后者包括发布、回复、引用、点赞、屏蔽等常见社交网络互动形式。引用列表可包含多条消息的签名,以表示当前消息与被引用消息的时序关系。当消息内容涉及回复或引用等互动类型时,相关消息的签名也应包含在引用列表中。为提供更精确的时序验证,还建议在引用列表中至少包含一条最新消息的签名。最终,将消息内容和引用列表合并计算出哈希值,并使用当前发布者的私钥对哈希值进行签名,以确认发布者身份并保证数据完整性。
尽管每条消息都有明确的内容,但我们往往无法仅凭单独的消息判断其是否为垃圾信息。例如,看到”推荐品尝M大街上的A餐馆”或”劝各位远离N大街上的B餐馆”这样的信息时,单独来看没有问题。然而,如果在短时间内出现数千次雷同的信息,就会被认为是垃圾信息及恶意操纵行为。因此,对信息的评判不能以单条消息为单位,而需要以发布者身份为单位——通过审视一个身份发布的全部有序消息来做出判断。这就引出了发布者身份的定义。
发布者身份由同一私钥签名的全部消息按时序排列而成的全序链表定义。维护这个全序是发布者自身的责任,而非与其互动的人或信息获取者的责任。
在点对点分布式系统中,为了确保发布内容未被篡改并能在发布者删除已发布消息时进行检测,我们要求每个发布者的消息形成链表结构。规定每条消息的引用列表中,第一条引用必须是同一私钥签发的上一条信息的签名,如图2。如果当前信息是此私钥所签名的第一条信息,则引用列表中的第一个值为0,以标示起点。
身份的定义就是一个人说过的所有的话,按照顺序排列好。全序是身份成立的前提条件,也是其他人能够对发布者做出公正评判的基础。当消息构成全序时,即使出现矛盾的内容,信息获取者仍然可以依据顺序达成一致判断。例如,某发布者先声明拥有某物,随后将该物转让给M,之后又声明将同一物转让给N——所有信息获取者都可以判定对N的转让无效,因为按照全序,该物已经转让给M。矛盾存在,但共识可以达成。
然而,当消息链出现分叉时,情况根本不同。如果将某物转让给M和转让给N的两条消息都紧跟在声明拥有该物的消息之后,形成两个分支,则所有信息获取者无法判定哪条有效。分叉的根本危害不是矛盾本身,而是让所有信息获取者失去了对矛盾达成共识的可能。在这种情况下,唯一合理的处理方式是从分叉点起忽略该身份。
在区块链系统中,主链出现分叉是由于多个矿工之间的算力竞争而非恶意行为,因此系统不会因分叉惩罚矿工。但在本系统中,一个私钥应当被一个人或一个统一的组织所控制,因此其本身必然能够控制所有消息的有序性。无论分叉是由于技术原因还是人为原因导致的,这都是私钥持有者的责任。由于签名无法伪造,一旦某发布者的消息链表中出现分叉,即被视为该发布者未能履行维护全序的责任。除首条消息外,如果引用列表中的第一个签名指向的是其他私钥签名的消息,同样被视为破坏全序的行为。以上两种情况,对于发布者都应当予以惩罚。
如果发现引用列表中的首条消息还未被接收到,则应暂时保存该消息,不采信该条消息也不惩罚信息发布者。信息发布者有责任保存有自己签名的完整消息链表,以备在网络中某条消息丢失时向外部提供查验。
另一种情况是,发布者可能会隐藏分叉的消息链表,待到一个分叉中已经有多条消息被接收,再将另一个分叉的消息发布到系统中。在这种情况下,系统中已接受的消息将被视为既定事实。对发布者的惩罚通常是在发现冲突后丢弃冲突部分中后接收到的消息,并屏蔽该发布者。这样的惩罚方式将使得分叉攻击失去意义。
需要特别指出的是,在本系统中,只要是由全序事件构成的合法身份,无论其背后是真实的个人、组织还是人工智能,都具有同等的系统地位。身份由有序事件集合定义,不由背后的实体类型定义。系统不区分也无法区分身份背后的实体性质,这不是系统的缺陷,而是设计原则。
可见身份集合
Section titled “可见身份集合”基于签名消息构成的消息链表,使得任何发布者若试图篡改已发布的内容,都会被他人轻易察觉。因此,依赖这种数据形式,可以较为公正地对信息发布者进行评判。然而,如果身份被屏蔽后,恶意发布者可以零成本地更换签名私钥继续发布消息,这将导致惩罚机制失效。
传统的中心化平台在创建用户时,通常需要通过手机号等验证方式,将用户的现实身份作为创建虚拟身份的成本。在一些去中心化身份系统的项目中,如Sovrin等,也采用了类似的方式。这种做法相对合理,但必须借助可信任的第三方完成验证的部分。一些基于区块链的社交系统通过收取一定数量的代币作为创建账户的成本。然而,由于每个使用者的财富状况不同,很难找到一个既能吸引用户参与又能抑制垃圾账户创建的公平价格。
在本系统中,我们不试图为身份创建附加显式的成本,而是通过信任传递机制让每个信息获取者自行构建可见的发布者身份范围。可见身份集合不是传统中心化平台中的关注用户列表,而更类似于一个由使用者自己划定范围的平台用户集合,只有存在于这个范围内的身份所发布的信息才可能被使用者看到。
信任传递机制
Section titled “信任传递机制”可见身份集合的构建基于以下机制:
信息获取者首先手动设定若干起始信任身份。这些起始身份可以是获取者自己的发布者身份、个人认识的发布者、或从第三方推荐服务获取的信誉良好的身份。这些起始身份作为信任传递的第零层。
从起始身份出发,找到这些身份主动产生积极互动(评论、转发、点赞等)且未屏蔽的所有对象身份,这构成第一层信任身份。这里的关键是互动的方向性:信任传递需要已被信任一方的主动行为。如果A是已被信任的身份,A主动去评论B的消息,说明A认可B的内容,B因此通过A的判断被间接信任。反过来,如果B来评论A,那只是B的单方面行为,不代表A的认可,不构成信任传递的依据。
如果获取者设定的信任传递层数大于一,则对第一层中每个身份重复同样的操作,找到它们主动互动且未屏蔽的身份,作为第二层,以此类推。实际使用中,信任传递通常设定为一层。
屏蔽是信息发布者的一种公开互动行为,在信任传递中起排除作用。当一个已被信任的身份A屏蔽了身份C时,C从A这条信任路径中被排除。但如果C能够通过另一个已被信任的身份B的信任路径被引入,C依然可以进入可见身份集合。屏蔽只切断特定路径,不构成全局封杀。
信任传递的扩展过程在实际使用中是渐进的,而非瞬间完成的。信息获取者展开可见身份集合需要一个过程,这本身自然地控制了集合的规模。信任传递的层数由获取者自行设定,获取者可以根据实际需要调整层数以控制可见范围的大小。
需要注意的是,互动的时间先后不影响信任程度。无论互动发生在一年前还是昨天,其在信任传递中的权重相同。
新身份的加入
Section titled “新身份的加入”在一个新的发布者身份创建时,它不被任何获取者的可见集合包含,这是正常的初始状态。新身份面临的是两个不同层次的问题:被发现和获取信任。
被发现可以借助第三方服务——例如信息检索服务维护尽可能大的可见用户范围,可以帮助新身份被潜在的互动者看到。这种第三方服务是辅助性的、非依赖性的、非决定性的。
获取信任则必须靠发布者自身的内容积累。一个老的账号、发布内容多的账号,理应获得比新账号更多的信任,这是正常的。身份本身就是有序事件的集合,事件的积累需要时间,而时间成本是不可伪造的。
在系统启动的初始阶段,可以通过创建具有不同个性和兴趣的AI发布者身份来启动系统。AI身份只要维护全序消息链,就是系统中完全合法的身份。如前所述,系统不区分也无法区分身份背后的实体类型,AI与真实用户在系统中具有完全平等的地位。
新加入系统的使用者,可以从信任的身份或第三方服务推荐的信誉良好的身份开始,然后通过信任传递机制,根据发布者间的互动行为,逐步扩大自己的可见用户范围。
可见身份集合的特性
Section titled “可见身份集合的特性”可见身份集合可以被视为一种自定义规则,根据这种规则,使用者依据公开的信息逐步计算出自己的可见用户范围。但在点对点的分布式系统中,系统不保证使用者可以获得全量信息,因此即便使用相同的算法,最终得到的可见身份集合也可能存在差异。每个信息获取者的可见集合不同是正常的,这不是系统的缺陷,而是去中心化系统的必然特征——不存在上帝视角的统一视界。
由于可见身份集合的存在,恶意的发布者虽然能够零成本更换私钥以另一个身份再次发布信息,但新的发布者身份不会轻易被其他用户接受,从而减小了垃圾信息的传播范围。即便一个身份没有发布任何垃圾信息,但如果总是与被惩罚的发布者发生互动,也有可能被使用者从可见身份集合中移除。
信息发布者与信息获取者的目标不同,系统层面的目标也与二者各自的目标不同,需要分别说明。
对于信息发布者而言,其根本目标是最大化自身信息的影响力——影响力是时间与受影响人群的平衡,以发布者的主观判断为衡量标准。因此,系统对发布者的激励表现在帮助其扩大信息影响力,而惩罚措施则是减少其信息影响力。提出这个概念也正说明了惩罚恶意发布者方式的合理性:当我们屏蔽一个垃圾信息的发布者时,直接打击的就是其唯一的目标,这本身已经构成了足够的惩罚。
对于信息获取者而言,其根本目标是有效地获取信息,尽量少地让自己想看的信息被垃圾信息淹没。获取者通过构建和维护可见身份集合来实现这一目标。
从系统整体来看,系统的目标是信息的正常流动——信息在被需要的范围内传播,在被接受的范围内传播。系统通过每个信息获取者的独立筛选行为,自然调整信息的传播范围和走向。有效信息因为被更多获取者接受而传播范围自然更大,垃圾信息因为在传播路径上被大量信息获取者屏蔽而传播范围自然收缩。这种筛选不需要任何系统级的统一共识,也不存在系统对某个发布者身份的集体激励或集体惩罚,一切都是所有信息获取者独立行为的统计性结果。
需要注意的是,与区块链所代表的去中心化系统不同,社交网络中并不存在系统级的统一共识。这里所指的垃圾信息也没有统一的标准,每个获取者有权按照自己的判断决定什么是有价值的信息、什么是垃圾信息。
当一个发布者持续产生优质内容时,其内容更有可能受到其他发布者的互动。通过这些互动消息,当前发布者的内容有更大的概率被那些尚未将当前发布者身份列入可见身份集合的信息获取者所接受。随着接受其身份的信息获取者增多,当前发布者未来发布的内容会获得越来越大的影响力。
相反,如果一个发布者持续发布低质量内容或者持续与被屏蔽的发布者发生互动,其他发布者与其互动的意愿会越来越少。一些已经接受当前发布者身份的信息获取者也可能因此将这个身份从可见身份集合中剔除。因此,发布者的行为和内容质量直接影响其信息的影响力范围。
总之,社交网络的激励机制通过发布者行为和内容质量的反馈,形成信息传播的动态平衡。优质内容发布者通过扩大其信息传播和影响力,最终能够通过与商业品牌互动等方式将影响力进行变现。这一过程类似于中心化平台中的广告系统,促使发布者不断优化其内容质量,以获得更广泛的传播和更大的经济收益。
在传统的中心化社交网络中,用户创建账户时需要通过手机号等方式进行身份验证,将虚拟身份与现实身份相关联。手机号本身属于用户的隐私,不能让其他用户知道,这就产生了保护隐私的需要。由此衍生出一系列隐私保护机制,包括不同的访问权限设置(如仅好友可见)等。
在本系统中,隐私问题的前提从根源上被消除了。系统内的身份完全由公钥与全序消息链定义,使用者不需要向系统提交任何现实世界的个人信息,因此不存在中心化平台那种”泄露用户隐私”的问题。手机号、邮箱等个人信息既不需要提供,提供了也无法被验证,所以不存在泄露的可能。
系统中的所有消息都是公开的,这不是强制的限制,而是系统逻辑的必然要求,原因有二。
其一,身份由全部有序消息定义。如果消息存在阅读权限区分,不同的信息获取者看到的消息集合就不同,对同一身份的认知就不同,身份作为公共可验证对象的基础就被破坏了,系统赖以运作的前提就不成立。
其二,阅读权限控制(如仅好友可见)建立在一个不可保证的前提之上——他人能够为你保守秘密。在去中心化的环境中,没有任何机制能够强制执行这种约束。一个不可保证的功能是不必要的。
在本系统中,所有发布的内容都是使用者希望公开的内容,不希望公开的内容不应通过本系统发布。系统内不存在”实名”这个概念——所有身份天然就是公钥身份。至于公钥与现实身份之间的关联,那是系统外的行为。在系统内部,我们只能通过同一公钥的签名证明一组消息来自同一个源头,证明不了其他的。某人可以在系统外录制视频声明某个公钥属于自己,但这种关联的建立和验证都不属于本系统的功能范畴。
如果使用者确实需要私密通信,可以利用系统中已知的发布者公钥,在系统外进行点对点的加密通信。但需要注意的是,这种私密通信不属于本系统的功能,应避免使用系统中的消息格式,以免被错误惩罚。
作为点对点的社交网络系统,我们欢迎第三方服务的存在,但并不依赖于任何第三方服务。第三方的服务可以基于系统中的公开消息,为使用者提供更加高效、便利的服务,也能够提供更丰富的与系统之外交互的途径。第三方服务在系统中扮演辅助角色,尤其在帮助新身份被发现方面可以发挥重要作用,但不具有决定性地位。
| 服务 | 说明 |
|---|---|
| 信息检索 | 基于公开的消息,具备尽可能大的可见用户范围,校验信息完整性,是否存在冲突,并对外提供消息检索接口。可帮助新身份被更多潜在互动者发现。 |
| 消息传递 | 基于发布者身份,对外提供用户间点对点的加密消息传递服务。 |
| 数据统计 | 基于公开的消息和发布者身份,统计消息的互动情况,计算信息传播程度。 |
| 广告平台 | 基于发布者身份及信息传播度,连接发布者与广告主。 |
| 其他服务 | 因为发布者身份具有成本,因而可以推行的服务,如投票等。 |
本系统的核心功能不依赖加密货币。区块链是系统具备身份基础后可以支持的扩展功能之一,正如货币对于人类社会不是天然的——早期的人类社会以物易物的方式存在了千百年。
在当前系统中,可以实现基于区块链的加密货币。将区块链中的一个区块包装成消息形式,由矿工作为信息发布者向外广播。
不同于传统区块链,社交系统中的发布者身份已经具备一定的意义。因此,可以选择更高效的共识机制,而不必单纯依赖算力。系统可以利用发布者身份来替代质押,限制矿工或验证者的范围,而非通过成功出块来扩大发布者的被接受程度,以避免扭曲当前系统的激励原则。权益证明(PoS)、委托权益证明(DPoS)、权威证明(PoA)以及雪崩(Avalanche)等共识机制都是相对合适的选择。
加密货币的实现也可以被视为由多个发布者组成一个更高层级的发布者。区块链由这些发布者共同参与,构成更高层次的全序消息队列。在系统内实现的区块链可以通过引用列表中的特定位置来标识区块消息的全序。
我们提出了一个无需依赖任何第三方服务即可实现的点对点社交网络系统。系统同时追求信息传播的两个根本目标:自由地发布信息与有效地获取信息。系统不试图从系统层面消除垃圾信息或恶意账户,而是通过每个信息获取者的独立筛选,将恶意行为的影响控制在有限范围内。
系统将传统的用户拆分为信息发布者与信息获取者两个独立角色。发布者的所有行为形成不可篡改的全序消息链,构成身份的定义。维护全序是发布者自身的责任,消息链出现分叉意味着身份定义的破坏,将导致该身份被忽略。获取者通过自定义的过滤规则构建可见身份集合,在自己的视界范围内实现信息的有效筛选。只要是由全序事件构成的合法身份,无论其背后是真实的个人、组织还是人工智能,都具有同等的系统地位。
系统中所有消息都是公开的。身份由全部有序消息定义,阅读权限的区分会导致不同获取者对同一身份的认知不同,破坏系统的基础。系统内不需要也不使用现实世界的个人信息来定义身份,因此从根源上消除了中心化平台泄露用户隐私的问题。
从系统整体来看,有效信息因为被更多获取者接受而传播范围更大,垃圾信息因为在传播路径上被大量信息获取者屏蔽而传播范围自然收缩。系统不需要任何统一的裁决机制,信息质量的筛选是所有参与者独立行为的统计性结果。与传统的中心化社交网络不同,每个获取者的可见发布者范围不同,这不是系统的缺陷,而是去中心化系统的必然特征。
基于该系统,还可以移植现有的主流区块链共识机制来实现加密货币等扩展功能。由于系统中的发布者身份具有时间积累的成本,可以对一些需要质押限制的共识机制进行优化。