A P2P Social Networking Service.
Parallel Digital Universe - A decentralized identity-based social network
摘要: 通常意义上的社交网络服务(SNS),如Facebook、twitter、微信,用户可以在其上创建身份,维护关系并进行信息传播、交互。但现有的SNS均依赖于某个第三方提供的中心化的网络服务,这使得其很容易被控制或封锁隔离。BitTorrent协议,能够实现P2P的信息传播,但其根本目的是提高对于已知内容的传播效率,其弱化的账户系统设计不利于使用者对未知内容有所判别。对于去中心化的系统,即便用数字签名能够证明每个信息的来源,但是因为缺少第三方验证(如手机号注册)来给予账户创建成本,即便无用的信息充斥整个网络也无法信息来源进行惩罚。
我们提出一种在纯粹P2P的环境下给予账户创建成本的方式,并基于这种账户系统,构建完整的P2P社交网络形态。首先,我们以引用构建有序,用以证明某个特定行为发生于某行为之后,即时间证明。然后,规定新账户的创建必须由多个已存在的合法账户联合确认且同一账户的此类确认需满足的时间间隔。每个账户系统的使用者(包括非用户),都可以DAG的结构维护部分或全部账户之间的关系拓扑,并随时可以根据自己获知的消息,对新的账户进行验证增补,同时也可因作恶行为对某些账户及关联账户进行惩罚。使用者并不需要对所有行为产生共识,也无需维护同完全一致的信息。
现今互联网上的信息传播、交互大多依赖于一个强大可信的第三方中心化服务,如Facebook、Twitter、微信、微博等社交网络服务。其存在毋庸置疑给使用者带来了极大的便利,但随着其逐步发展,中心化社交服务的问题也逐渐显露。
但即便如此,由于对于三方中心化服务的依赖,很多用户依然不得已选择继续使用发生问题的服务,而非迁移自己的数据。因为对于大多数用户而言,离开某个平台虽然不会损失自己的数据信息,但却失去了在此平台上长期积累的用户关系和自身在此平台信用值。
本质上来说,这个问题根源在于用户群体自身并不能构成一个脱离某第三方的网络,所以用户的关系信息归属于平台而非其自身。
我们提出一种新的基于去中心化账户系统的社交网络(PDU)的本意也并排除第三方的中心化服务,而是希望能够通过去中心化账户系统(DID)的实现,能够将用户身份确认及关系拓扑脱离于某个特定平台,用以消除用户对于特定第三方中心化服务的依赖,让用户的身份及社交关系真正归属于用户。
如同双花可被认为是去中心化的货币系统需要解决的根本问题,一个去中心化的账户系统要解决的根本问题是如何给账户的创建赋予必要成本,使其可控。
我们仿照自然及社会,首先引入时间证明的概念,并以此为基础订立自然法则。符合自然法则创建的新账户才有可能被系统中的其他用户(部分用户)所接受。每个用户自身都可用有向无环图(DAG)的结构来维护自身所承认的所有用户及其构成的亲源拓扑关系。任何违背自然法则的消息都会作为证据在网络中传播,让消息接受者可以根据本地的亲源拓扑对作恶的用户进行惩罚。惩罚的账户亲源深度、广度由接受者自行决定。
与传统中心化服务的账户系统不同,PDU的自然法则还基于时间证明定义了账户的生命周期,使得不被使用的账户可以被自然淘汰,账户的总数量呈线性增长(受时间流速的影响会),而当前生命周期内的用户数量会近似恒定。
时间证明是PDU中用户一切行为成本控制的基础,但因为PDU中没有强制的共识,取而代之的是用户自身的选择,所以完全可能有多个不同的时间证明的存在。PDU接受这种情况的存在,就如同平时存在的多个时空,甚至每个时空可以设定不同的时间流速来影响本时空中的行为成本。同时,任何用户也可同时存在于自己选择的多个时空当中。
消息(Message)在PDU中特指附带数字签名的信息,这种简单的结构是构建P2P网络结构的基础。
账户(及其使用者)能且只能通过发送消息这唯一形式来实现所有的网络行为。如果单纯从信息传播的角度看待这个网络的话,那么一个账户的实时价值可由其每生产一条消息的到达范围(被多少个账户所接受)所衡量。
每条消息是否能够被某个账户所接受(不同于接收到信息,接受表示接收到的信息通过验证,被认为合法),完全由接受者决定。所以,每个账户通过对于所接受信息的选择,构建了自身视角中的整个PDU网络。或者说,账户自身所接受的信息范围,确定了这个账户所存在的时空。
消息的内容可以包含其他的一个或者多个消息,甚至多层嵌套,我们称之为引用。
既然每个账户所生产的信息是否被接收,或者说其传播程度完全由接受者决定,而并非存在一个特定的中心化三方平台来保证消息的传播,也不存在共识机制来保证整个P2P的网络都认可接收或拒绝接收某个信息。那对于是否接收某个新的消息的判断依据,来源于自身主观认定的消息来源账户的信用度和那条消息本身的可信程度及实时性。而信息的生产者,为了所生产的信息有更大传播范围,自然会去尽力符合PDU系统规则(取悦受众),以提高消息可信度。
由于数字签名技术的存在,即便在P2P的网络环境中,账户之间依然能够很容易确认信息的来源,但如何确定信息的其他属性呢?我们发现在真实的世界中,我们对于信息的判断往往会有一个下意识的辨别条件,就是时间。当一个个体分别与两个个体产生两个相互冲突的约定时,我们会以先发生的约定为准,并判定造成冲突的个体不可信。当我们收到关于某个件事的多个信息时,我们会根据最新的信息来更新我们所认为的事件当前状态。我们习惯于如此判断是因为时间具有单向性,这种性质给予信息一种有序性,而我们的判断本质上则是依托于此。
首先PDU中并非所有消息都必须是有序的,也并非每个账户都需要将自己所生产的消息构建为有序的形式。但作为整个PDU来讲,因为消息本身的内容可以引用其他的消息,所以当上述情况发生时,自然就会为消息赋予有序性,我们可以认为被引用的消息一定发生在引用他的消息之前。
当在PDU中,一个账户的每一个新的消息,都引用本账户的前一条消息时,自然会构成一个本账户的消息队列,我们称这样一个消息序列为具有自证有序性。但这样产生的问题是,新的消息会包含以前所有的全部内容,造成消息内容越来越庞大。在实际应用中,我们可以用消息内容的hash值来代替消息内容进行引用。
在现实世界中,我们如果想证明某件事发生在某个时间之后,最简单的方式是找一张当天的报纸,然后一起拍照。公布这张照片,对于大众而言显然比公布你的日记更有说服力。所以在PDU中,任何消息也可以引用其他账户(更被信任)的消息,来证明自身所发布消息的有序性。我们可以称这种方式为他证有序性。
因为每个消息都可以引用多条消息,所以为了提升自身的有序性可信度,一条消息中可以包含自证有序的引用和多条他证有序的引用。
严格来讲,任何账户发布的任何消息都可以都可以作为时间证明被其自身或者其他账户所引用。但在实际使用过程中会有如下的问题:
对于第1点所述情况,账户的拥有者很容易控制自身的消息发布频率,如果其期望成为一个更为被广泛接受的时间证明账户,则提供稳定的服务,按照固定的周期频率来发布消息。(有利于使得本账户被更广泛的接受,提高消息到大范围)
对于第2点所述的影响,我们将在下一个章节中叙述。
对于第3点,账户的拥有者自身应该提出某些消息指定的机制来让其他账户相信自身发布的消息更具有随机性。例如,提供一个对外的接口,任何使用者可通过其提交数据,而账户拥有者将在N到N+1时间内所受到的所有信息放入到N+1时刻发布的消息内容当中。
不同的时间证明将用于构建不同的时空(spacetime),所以即便是同一消息包含的多个时间证明的引用,其目的只是用来让此消息在多个时空中均合法,而不意味着多个时间证明之间有怎样的关系。同时,时间证明也未规定相邻两个块之间的真实时间间隔。
时间证明的选择权在每个使用者,用户可以在行为(消息)中选择一个,多个,或者完全不选择任何时间证明,也可以在自己的多条消息中选择不同的时间证明。但推荐用户尽量选择可信度高的时间证明来为自己的行为设置时间证明,以防止由于发出时间证明的账户的不稳定或者作恶行为影响自己所采用的时间证明的公信力。
对于时间证明的发布者而言需要注意:
账户系统是用户在社交网络中一切行为的基础。基于账户,社交关系才得以建立,认证行为能够以发生,用户也才会因为自身的行为而得到奖惩的反馈。当账户系统由一个中心化的平台进行维护的时候,账户的创建过程,使用过程都基这个平台,所以很容易进行控制并有效的限制一些恶意的行为。比如为应单个使用者创建大量账户的行为,平台可通过手机号验证等绑定真实世界信息的方式来增加创建账户的成本。为应对身份冒用,盗取的行为,平台会在注册过程中强制要求用户使用更加复杂的密码,缩短登录的过期时间,加强自身平台的安全等级等方式。为应对用户的恶意行为,平台会指定一些规则条文,当用户触犯某些规则的时候,由平台对用户进行惩罚,这些惩罚的方式并不一定被用户所知晓,比如仅仅减少其信息的露出概率,又比如彻底删除其所有的信息。可见,对于账户系统的控制权利,完全在于其依赖的平台,当此平台完全可信的时候,这是一个很好的解决方案,但是否存在完全可信的中心化平台,答案是显然是否定的。
由于数字签名的存在,即便在一个完全P2P的网络环境中,对于信息的认证,保密等均不存在问题。用户的身份基于一个非对称的秘钥对,信息生产者利用私钥对信息进行签名,信息接受者用生产者公钥验证信息来源的真实性。对于加密内容,生产者可以接收者的公钥进行加密之后,再用生产者自身的私钥进行签名,信息接受者收到信息,先用对方公钥进行验证,再用自身的私钥对内容进行解密。
但由于作为身份基础的非对称秘钥对创建容易,单一使用者也可以在短时间内创建大量的秘钥对。为在P2P网络环境中,为了控制基于秘钥对的合法账户的数量,增加账户的创建成本,我们基于时间证明,首先提出亲源关系和生命周期两个概念,并在此基础上定义了多条自然法则。P2P网络中的每个用户,都可以依照其对于其他的用户进行判断,选择自己是否接受对方的存在。
亲源关系是指两个账户之间的关系,在PDU中,每个节点所承认的单一时空的所有合法账户都存在直接或间接的亲源关系。除创世的两个账户之外,所有的账户均有且只有两个属性不同的父级账户。整个账户体系所构成的关系拓扑是由两个创世端点启始的有向无环图(DAG)
每个账户有其自己的以时间证明为基础的生命周期,这个账户的生命周期起始于两个异属性节点完成签名,并广播此事件的时间证明。一个账户只有在其生命周期之内生产的消息才能被认为合法。(由于接受信息的节点会更倾向于时刻新且可信度高的消息,所以在生命周期结束以后,伪造历史消息进行广播的意义并不大。)
生命周期的长度跟父级账户相关,但不低于某个特定值,那个特定值就是最低生命周期。
签名所产生的行为也属于一般消息(Message),其形式,传播方式及可信任程度均同于消息。
图例待补充……
创建账户的过程中,生成新账户基本信息的过程通常不会被构造成消息在PDU中传播,因为此时待建账户并不合法,其他的账户不会接受此类消息。cosign过程所需的两个账户,有先后顺序,系统只要求后签名的父级地址将待建账户信息和叠加了两次签名的内容构造成消息(Message),在网络进行广播,第一个签名的地址不必须广播签名消息。但因为两次签名都必须带有时间证明,所以即便某账户在创建账户的过程中为先签名的账户且并没有发出过消息,如果被发现其两次创建账户的签名时间,小于1/4个最低生命周期,依然会被作为证据消息(Evidence Message)进行广播并处罚。
账户的创建过程如以下步骤:
关于同一个公钥被多个私钥分别签名的情况,系统中也是允许的,相当于创建了多个同密码账户。
对于一个从自然社会抽象出来的网络系统而言,货币系统显然是一个非常重要且必要的子系统。但一个基于去中心化的账户系统的社交网络显然不能依赖于某种中心化的货币,而谈到去中心化的货币系统,首先被想到的必然是以比特币为代表的区块链所构建的点对点的电子货币。本节主要讨论在PDU中所构建的货币系统和一个完全独立的货币系统的异同及PDU中货币系统的构建方式。
现实中的货币都是存在作用域的,通常一个国家或地区会发行、流通某一种货币。比如在美国可以使用美元,在欧洲的大部分地区使用欧元,在中国使用人民币等等。虽然美元等主要货币在众多国家均被承认,但使用过程中通常也需要兑换成当地货币。除了地域上的作用域,时间上的作用域通常会被我们所忽视,几百年前的货币在现在基本都不被承认,即便其作为文物可能具有更高的价值。
在PDU中,构建一种货币系统之前,我们需要明确以下几点:
由上面三点很容易推导出:一个有区块链所构成的货币系统,其作用域是所有区块生产者所在的时空及由其分裂的时空。
一个公钥可以在同一个时空当中生成多个账户地址,且多个账户地址的消息均被同一个私钥所控制。货币系统中的权益也是归属于私钥拥有者,等同于权益归于在有效的时空范围内,被这个私钥控制的所有账户。如果不考虑矿工接收消息的来源,则可更广义的认为,只要拥有对应私钥,就拥有私钥所对应的货币控制权。
在PDU中所构建的货币系统所对应的账户地址也可以不同于PDU的账户地址,而仅对应于某个特定格式的私钥,其加密方式可以由货币类型所确定。在这种情况下,我们将地址看作是信息的一部分,而不再是PDU地址。经过签名的交易信息可以由任意的三方发布。具体他步骤如下:
DPOS是一种共识机制,被EOS等区块链项目所采用,其本质更接近与现实社会中处理事务的方式。由利益相关的群体,按照某种方式定期的选举出代表,并由这些代表相对中心化的处理事务。而利益相关的群体可以进行监督,并定期更改自己的选择。为避免过于中心化,在DPOS中还规定了代表的数量及运行方式。相比POW的共识机制,其效率更高。
但在完全独立存在的区块链系统中,因为并不存在账户的创建成本,所以在选举过程中,对于选票数量的衡量标准均为其持有货币的数量(可根据持有时间加权)。但这样的操作方式存在的问题是,只有货币的当前持有者,能够决定代表的产生,货币的流通性和代表的稳定性会成为矛盾,希望有稳定货币系统的潜在用户无法表达建议,而短期的货币持有者可能并不关心货币系统长时间的稳定。
在PDU中,由于账户创建成本的引入,使得DPOS共识能在选举这个根本问题上有所改善,其含义并非完全抛弃货币拥有量所计算的票数,而是增加了账户这个维度,使得代表选举的过程可以在从一人一票到一元一票的直线上任意去选择最优的配比,找到适度的平衡点。或者在同一时空中建立多个不同的货币系统,供用户选择。
POW的区块生产者并不需要身份验证,所以任何账户都可以将一个区块的内容作为消息发布。所以无论是在一个时空中构建一个新的POW共识的区块链,还是引入现有的比特币(特指当前的比特币主链,最长链),其只需要满足一条链上的所有区块消息,都能够在这个时空中被找到(或者被认为能够找到)即可被认为此链有效。
在PDU的系统中,用户的一切行为都是通过消息来实现的,而网络(Network)则是消息传播的路径选择。
再进一步讨论之前,我们先需要明确时空对于账户和消息的影响。当一个账户a被创建时,其parents在cosign的过程中引用了几个时间证明,并被验证合法,则新账户存在且仅存在于这些时空当中,我们暂时称之为时空集合A。这个账户a所发布的每一条消息,都可以引用时空集合A中的全部或部分的时间证明作为引用,同时也可以同样存在于时空集合A中某一个或某几个时空的账户b所发消息作为时间证明。a甚至可以在自己的消息中引用和时空集合A无交集的账户c所发布的消息(但这样做是毫无意义的,因为a并不存在于c所在的时空)。可见,任何一个账户或者消息,都可能同时存在于多个时空当中,而属于多个时空的情况可以看作多个单一时空的叠加,而逐一进行处理。
在创建账户成功之后,根据创建消息可计算出一个哈希值(sha3-512),作为账户的地址。而这个账户在其所有的合法存在的时空中,会共享这个地址。这个地址也会作为计算账户方位(Account Location)的基础,来影响信息的传播。
在一个P2P的环境当中,每个账户都是完全平等的,并不存在本质上的区别,所以需要基于账户地址计算出账户在网络中的位置,以满足如下条件:
实现上述特性的最简单方式就是将低维的空间映射到高维空间的一个球面上,而维度与尺度都可以由每个账户自行选择。在网络传播过程之中,如果账户在维度不变的情况下,选择连续变化的尺度,则会看到一个逐步膨胀或收缩的高维空间,且临近位置的账户会随着空间的变化而移动。如果账户选择维度的变化或者不连续的尺度变化,则临近位置的账户会产生跳跃似的变化。
例如:假设某账户的地址仅仅是一个十进制的数字2418,为计算他的位置,我们选择维度是2维。首先,可以将它投射到一个二维平面上,x轴坐标为24,y轴坐标为18。接下来选择球面的尺度,假设是最大周长为7的球面,则可以认为这个账户的地址映射到球面上(3,4)这个位置。我们可以按照同样的维度和尺度,计算出所有已知账户地址的位置,然后将我们之间坐标距离小于1的作为临近地址,来实现消息的传播。
上面举的是二维的例子,但在真实的应用中,我们可以选择更高的维度来进行位置计算。
消息的距离(Message Distance)同常被消息的接收方用来判断是否会进行根据临近账户的转发。(跟用户看到某条消息,觉得感兴趣,因而转发无关。)
消息的距离^2 = sum(某个维度距离^2) - (vt)^2
其中v可根据账户自己对于消息实时性的敏感度而设置。
完整消息传播过程有如下几个步骤:
如果在第4步中,发现某条消息违反自然法则的证据,则对于相关作恶的账户进行惩罚,如拒绝接受这个账户在此之后的消息,并广播作恶证据。也可以根据关系图谱处罚相关的其他账户的。
一个节点(Node)通常指一个信息转发节点,跟账户没有硬性绑定的关系。一个账户可以同时通过多个节点来发布信息,一个节点也可以同时转发多个账户的信息;节点可以只提供单个时空的信息,也可以提供多个时空的信息。简单的说,我们所说的节点是一个可以响应请求提供消息的三方服务,类似于互联网中DNS服务。
系统中会存在多个时间证明服务器节点,节点上可以保存多个不同流速的时间证明的完整信息。账户可以从服务器上获取自己所在时空的最新时间证明,加入自己的消息当中。也可以获取某个时空的历史时间证明,用以验证第三方信息的合法性。
针对单一或者多个时空,维护最新的,最完整的账户信息,包含合法的账户信息,收集账户的作恶证据等,帮助用户在接收到一个未知来源的消息时,完善本地的账户亲源关系拓扑图。
维护节点的当前状态,是否在线,监听端口等信息,使得用户可以在P2P的环境下直接跟对方进行交互。
收集和维护消息,每个消息节点都根据不同的主观意愿(算法)来决定自己所转发(广播)的消息内容。消息节点相当于当今互联网上的众多网站,区别是其中消息(内容)的归属权为消息生产者。
PDU账户系统的创建发展过程通常会经历一下的几个步骤:
待补充图……
本文中我们提出了一种基于去中心化账户系统的社交网络的构想。通过有序引入时间证明,直接或间接的给予P2P的网络上所有用户行为以成本。用户可以按照自己的意愿,选择自己所存在的网络时空。通过此种方式,我们将用户的身份及社交关系归还于用户本身,而非必须依存与某个特定的三方社交网络服务。
不同于以比特币为代表的去中心化数字加密货币,PDU并非用共识强制全网接收并维护唯一的一致数据。用户可按照自己的意愿去选择接收整个网络中对自己有意义的那部分信息。同时允许用户对作恶行为进行惩罚并传播证据信息。依靠DAG结构的亲源关系,甚至可以进行关联惩罚,进一步提高作恶成本。
一个已知的系统很难同时满足去中心化,效率及整体一致性,因为货币系统本身的特点,比特币选择了去中心化和整体信息的一致性,而根据信息传播的特点,PDU选择了去中心化和效率。我们认为在信息的传播过程中,单个节点无需实时获知全网的所有完整信息,也能够容忍由某账户恶意行为所产生的错误信息。