PDU - 如何實現P2P的社交網絡服務

PDU
·
·
IPFS
·
一個自然狀態的社交網絡應當具備兩個基礎功能,參與者能夠自由的發布信息,也能夠有效的獲取信息。第三方平台的存在,為實現以上兩個功能提供了極大的幫助,但其本身對於信息傳播的影響也越來越嚴重,限制用戶權限,屏蔽言論,擴大特定話題的傳播範圍。本文提出一種新的解決方案,完全基於點對點(P2P)的方式構建社交網絡服務(SNS)系統。希望能拋棄對於第三方平台的依賴,回歸由每個參與者共同決定信息傳播的自然狀態。

* github: [github.com/pdupub/documentation]( https://github.com/pdupub/documentation/blob/master/zh-CN/WhitePaperV2.md )

**摘要:**我們認為一個最接近自然狀態的社交網絡應當具備兩個基礎功能,任何參與者都能夠**自由的傳播信息** ,同時也能夠**有效的獲取信息**

第三方平台的存在,為實現以上兩個功能提供了極大的幫助。通過手機號,郵箱等身份認證方式,有效的防止了大量創建虛擬身份和無限制的信息傳播;利用推薦算法及用戶之間的關聯,提高了使用者獲取目標信息的效率。但同時,第三方平臺本身對於信息傳播的影響也越來越嚴重,限制用戶權限,屏蔽言論,利用推薦機制擴大特定話題的傳播範圍。我們並不否定輿論的引導在某特定事件上存在的積極意義,只想表達對於**信息非自然傳播**的擔憂。

本文提出一種新的解決方案,基於點對點(P2P)的方式構建社交網絡服務(SNS)系統。系統中所有信息均由簽名確定其來源,稱為消息。通過消息間的引用,同源消息可以構成全序關係,異源消息構成偏序關係。又以同源全序消息為基礎,定義賬戶。任何賬戶都可以自由的創建社區規則,並基於自我認同,邀請其他賬戶加入自身所屬社區。社區內的賬戶均存在偏序關聯,可以基於這種關聯關係,對賬戶和信息行篩選,以實現信息的有效獲取。

## 簡介

### 現狀

在人類產生了**語言**之後,便開始了最原始的信息傳播,即口耳相傳。將見聞、感受通過語言的形式依照自身意願傳遞給他人。如此過程反复,信息便在群體中擴散。 **文字**的發明進一步在時間和空間兩個維度上拓展了信息傳播的邊界。當今,隨著**網絡**的發展,信息傳播的效率有了質的變化,基本擺脫了時間與距離等物理條件的桎梏。

如同古代信件的傳遞依賴郵政系統,現今網絡中信息的傳播大多依賴於某個強大的第三方中心化服務,如Facebook、Twitter、微信、微博等社交網絡服務。這類服務的存在毋庸置疑給使用者帶來了極大的便利,但問題也逐漸顯露。這個中心有能力按照其自身的意願,對信息的傳播做出決定性的影響,比如有傾向性的增大或減小某個類別信息的傳播受眾,直接禁言或刪除某些用戶,同時對於另一些單一信息來源的大量用戶無所作為等等。諸多問題最終可以歸於一點,即第三方平台完全有能力影響信息的自然傳播,其影響的程度只受控於平台自身的行為準則和意願。

信息傳播中對於第三方服務的依賴和所受影響是必然共存的,如果希望信息傳播能夠回歸其本身的形態,更接近於自然傳播,那必然需要拋棄對於第三方平台的依賴,也等同於需要實現**在點對點的環境中,對於信息及用戶的有效篩選**

### 目標

我們認為,一個自然的信息傳播系統應具備兩個基礎功能:

1. 任何參與者都能夠**自由的傳播信息**

2. 任何參與者都能夠**有效的獲取信息**

本文參照現實中原始的自然的信息傳播方式,提出一種新的解決方案,使得信息傳播的過程能夠擺脫對於第三方中心化服務的依賴。首先,系統中的每一條消息必須附加數字簽名,以鑑別信息的來源。消息之間通過引用,可構建出全系統的一個或多個偏序關係。同時,來自同一私鑰簽名的所有消息通過引用構成全序關係。我們將同源且具備全序關係的消息序列視為單一賬戶,以簽名鑑定其身份。賬戶通過發布特定類型消息可以自由創建社區,並指定社區規則。屬於某個特定社區的賬戶,均可通過特定類型的消息以邀請的形式為自身所屬的社區添加成員。社區中賬戶之間存在的邀請關係,將成為賬戶及信息篩選的主要形式。

### 前提

對於本文後續所述的信息傳播系統,我們需要指出兩個前提:

1. 系統中所有信息都是公開的。我們可以簡單的理解為保密信息的傳遞不是本系統所嘗試解決的核心問題,但可以基於本系統解決。

2. 系統的參與者都以信息傳播的程度為唯一利益衡量。這裡所說的傳播程度,即包含時間尺度,也包含空間尺度,使用者希望信息在更短的時間內被更多的受眾獲取。

## 消息

消息是系統中最基礎的數據結構,也是點對點之間交互的唯一數據類型。系統所涉及的其他數據類型,如賬戶、社區等,均可由消息為基礎自行構建。消息包含3個組成部分,消息內容(Message contents),引用列表(References),簽名(Signature)。

**消息內容**是消息的主題,有消息類型和多個內容片斷構成。目前系統中包含5種消息類型。

* 一般信息消息/Info: 主要的消息類型,用於發布信息。內容可以包含文字,圖片,音頻等不同格式的內容片斷。

* 個人資料設定/Profile: 用於使用者設定自身屬性,對於同一屬性,後續設定可以覆蓋之前的設定,表示屬性的更新。

* 社區屬性定義/Community: 用於設定新的社區規則,比如邀請限制等。

* 加入社區邀請/Invitation: 用於邀請其他賬戶加入社區。

* 結束生命週期/End: 用於當前賬戶因某種原因(如私鑰洩露),希望系統能夠忽略其後續消息時使用。

**引用列表**中可包含多條消息的簽名,用以確定消息之間的有序關係。

消息可將任意已知的消息簽名放入本消息的引用列表中,再計算hash後添加簽名,用以證明本消息必然發生於被引用的消息之後。如果當前賬戶以簽發過消息,系統要求在引用中**必須**包含此賬戶之前簽名的最後一條消息。在使用過程中, **推薦**在消息體中至少包含一條比較新的消息,目的是給本消息一個更精確的可信範圍。

同一來源的消息,應確保通過引用的方式,使得所有消息間構成全序關係,使得任意兩條被同一賬戶簽名的消息,都有確定的先後順序。不同來源的消息可藉助相互的引用,構成一個或者多個偏序關係,可用有向無環圖(DAG)表示。

**簽名**的存在首先可以對消息來源進行身份認證,同時確定消息內容的完整性。消息簽名還可以替代hash值,被放入後續消息的引用列表中,表示有序關係。

消息的構建及引用關係


## 賬戶

系統中所有的消息均附帶簽名,用以對其來源進行身份驗證,而這個身份即是賬戶。賬戶與私鑰是一一對應的關係,但二者並不等同。由於一個系統的使用者(自然人)可以創建多個賬戶,或者多個使用者操作同一賬戶的情況存在,所以賬戶與使用者之間也沒有必然關係。我們認為,本系統中**賬戶**是一個以信息傳播最大化為唯一目的的主體,由一系列具有全序關係的消息所展現,能夠感知外部獎懲而修正未來自身行為的最小的單位。

同源全序消息構成賬戶


在系統中,單獨消息可以被看做是一個已經存在的孤立客觀事件,其本身的內容不會因獎懲的影響而改變,也無法表現出對傳播的渴望。我們將系統中由同一賬戶簽名的所有消息及未來可能發布消息的預期進行有序合併,作為賬戶,即行為主體來實現自身的目的並接收外界的反饋。

對於從系統中獲取信息的使用者而言,可以通過對於賬戶的區別對待,來表達對於信息發布賬戶的獎懲,使用者會更積極的獲取和傳播自己喜好的信息並關注其賬戶未來發布的消息。反之,也可以通過屏蔽賬號等方式,減小此賬戶的傳播。對於賬號擁有者而言,由於信息接收者可以根據賬戶身份來屏蔽信息,所以生產大量無意義的信息雖然未被禁止,但卻因無法被傳播而失去了意義。

我們認為由於私鑰創建的不受限及匿名等特性,賬戶的存在不會妨礙使用者信息發布的自由,即積極自由。同時賬戶的存在為信息篩選提供了標記,是支持系統使用者有效獲取信息的基礎,一定程度上保障了使用者的消極自由。

## 社區

### 規則

社區作為賬戶之間關係的基本組織形態,是去中心化社交系統的必要部分。借助社區,系統使用者才能在沒有信息發布限制的同時篩選有效信息。前面我們以簽名為標誌在消息間建立聯繫,並將之視為賬戶,用來篩選消息。本節中的社區就是通過由邀請關係在用戶間建立聯繫,並將構成的用戶集合視為社區。需要說明的是,社區的存在主要目的就是幫助系統參與者對於可能感興趣的賬戶進行篩選,並不直接作用於消息傳播的過程。

社區的創建及使用過程應符合以下規則:

1. 每個賬戶都可以按照自身意願定義任意多個社區規則,每條發布的規則定義消息代表創建一個社區。

2. 規則包含社區內每個賬戶有效邀請次數限制,外部賬戶加入社區必須收到的最少邀請次數及社區的初始賬戶等,創建者默認為社區內賬戶。

3. 加入社區,只能通過現有成員賬戶邀請的方式,並達到社區定規則的最低要求。

4. 社區的存在只是賬戶篩選的基礎,系統使用者可以自主的屏蔽任何社區中的任何賬戶,以維護消極自由。

### 說明

我們認為傳統的第三方平台不僅是提供社交網絡服務的技術平台,更重要的是提供了一個中心化的權威,由其定義規則標準,並依照這些標準對於用戶進行評判。比如對於接受哪些用戶的註冊,平台往往會定義一些可驗證的規則,比如手機號驗證,郵件驗證,或者KYC等。與此相似,在系統內部的組織結構中,也有設計類似的權威。在微信群中,會有管理員的身份;在reddit中會有版主。這類用戶都具有超越其他用戶的權限,使之能在權限範圍內對其他用戶進行懲罰,比如踢出群聊或者禁言等。我們認為,首先這種不平等不應當屬於系統的最基礎的賬戶間關係,其次我們認為基於自身主觀認知而代表群體對他人進行處罰是不公正的。

與傳統平台中的群組關係不同,在我們提出的去中心化社交服務系統中,社區並不存在任何單一的判定權威,社區內的賬戶身份是完全平等的。包含創建者在內,任何賬戶均沒有任何特殊權力。任何賬戶都可以同時屬於多個社區,每個社區中的賬戶都基於其自我角色認同,邀請賬戶加入。舉例來說我的賬戶x可以同時加入了籃球運動社區A和電影愛好者社區B,當我通過瀏覽消息感覺某個賬戶y非常喜歡籃球,我可能會對其發出加入籃球運動社區A的邀請,但並不會邀請他加入電影愛好者社區B。需要強調的是,當這個賬戶y獲得了足夠的加入籃球運動社區A的邀請後就會被認為已經加入此社區,但這只表達了這個社區對此賬號的認同,並不表示這個賬號對於此社區的認同。還有要說明的是,社區是對於賬戶的界定,而非消息,所以即是y加入了籃球運動社區A,依然可能發布電影或美食相關的信息,或不再發布籃球相關消息。

對於消息發布者而言,被邀請加入更多的社區表示自己被更大範圍的承認,有利於自身的信息傳播。對於信息獲取者而言,社區的存在給予其更好的信息篩選基礎,結合由邀請關係構成的社區內賬戶間關聯,能夠有效的屏蔽過濾冗餘賬戶及其發布的信息。

## 網絡傳播

社交系統應具備兩個基本功能即**自由的發布信息****有效的獲取信息** 。在傳統的中心化服務中,消息的發布及獲取都是以用戶身份為基本單元,但是在去中心化的社交系統中卻略有不同。賬戶為每個消息為每條消息添加對應的簽名,成為發布信息的基本單元。而節點被作為獲取信息的基本單元,並通過相互的連接構成網絡,實現信息的自然傳播。

節點和賬戶不存在任何強制性的綁定關係,信息的獲取者無需任何賬戶均可以使用或構建節點。節點的作用在於可自由選擇如何處理收到的信息,如接收(保存),拒絕(屏蔽)或者傳播(轉發)。每個節點可以保存任意部分消息而非全量。傳播過程支持平台化節點的存在,他們可以存儲更多的消息,並為使用者提供消息查詢、搜索等服務,但區別於中心化的第三方平台,消息屬於發布的賬戶,所以可以自由的使用任何一個第三方平台而獲取到相同的信息。當然,任何節點也有對特定消息按照自身意願屏蔽的自由。

通常對於節點是否接收某個消息,取決於以下兩點:

1. 消息簽名者是否被屏蔽。

2. 消息引用所代表的時間,傾向於時間更近的。

對於節點是否轉發某個消息,取決於:

1. 對消息內容,某種意義上類似於傳統三方平台點贊和評論的行為影響。

2. 自身的轉發規則,傾向於未被廣泛擴散的消息。

需要注意,消息的傳播過程是一直在動態變化的,系統中的每個節點都可能在任何時刻傳播,存儲或刪除任何消息。

## 獎懲激勵

我們認為一個可持續運行的系統應該包含兩個要素,即**必要的共識規則****合理的利益驅動** 。所有參與者對於規則的認同,是構成系統的基礎,或者說任何系統都是由認同某些同樣規則的個體所組成。而合理的利益驅動則是系統參與者行為的原因,其不會改變,規則只有順應參與者的利益驅動系統才能持續。以上兩點並非特指去中心化的系統。通過定義**消息****賬戶****社區**的概念,我們已經為構建去中心化的信息傳播系統提供了足夠的規則。本節中我們進一步解釋,為何基於這些規則,系統能夠符合參與者的利益驅動,使得系統持續的運行。

在[簡介](簡介)中我們提出過一個前提設定,即係統的參與者都以信息傳播的程度為唯一的利益衡量,所有在本節的討論中,我們也會以此為基礎來解釋用戶行為對於互相之間的影響。我們認為一個系統的參與者對於其他參與者的獎勵以幫助其消息擴散的方式體現,反之,懲罰則表現為自身對其消息屏蔽。就係統整體而言,對於每個賬戶的獎懲最終會表現為消息傳播的速度與廣度的預期。就個體而言,獎懲完全取決於每個節點對其他用戶及消息的主觀意願,但由於所有節點擁有者都是平等的,即不存在某個節點有權力替代別的節點做出傳播或屏蔽的決定,所以此種主觀決斷並不影響信息的自然擴散。

需要特意指出,系統中還會出現一種可能被忽視的惡意行為,即通過引用關係,存在無法判斷先後順序的同源的消息。相當於由這個賬戶添加簽名的已知消息可構成偏序關係但卻無法構成全序關係。我們之所以將這種情況視為惡意行為,因為這種情況會使得系統失去將由此賬號簽發的系列消息視為單獨個體賬戶的理論基礎。對於這種情況,我們建議的處理方式如下:

1. 一旦發現出現這種情況,應屏蔽此賬戶,不再接收其後續消息。

2. 對於已接收的消息,盡量以先被本系統接收的不矛盾消息為準,但也可主觀選擇。

3. 在發布消息時,應盡量引用多個可信的異源賬戶發布的消息,避免這種情況對自身的影響。

4. 將已接收的包含矛盾引用的消息視為包含未知引用的情況進行處理。

社區作為用戶篩選工具,其存在對於消息傳播的影響,這種影響並不是直接的、強制性的,但卻是十分巨大的。總之,與傳統的中心化社交系統不同,我們將信息的篩選判斷的權利交給每個系統的參與和他們之間的關聯關係,每個系統參與者都可以有自己的選擇,而非只能接收某一個中心化的判斷,因為它提供了服務而不得不接受。

## 隱私

如簡介中所述的第一個前提設定,系統中所有的信息都是公開的,我們認為絕對的**隱私**並非真正存在。

任何傳播過的消息都會以某種方式留下痕跡,可能被一些節點存儲,或者被另一些消息所引用。而未留下絲毫痕蹟的信息,因為其並未對系統產生任何影響也就完全等同於並不存在。信息的傳播的速度和廣度取決於信息本身,所謂隱私只是公開程度限於某個暫時的,且無法保證的臆想。其後果往往不是信息的保密,而是扭曲後的繼續擴散。

保護隱私的偏好來源於思維方式的局限,認為整體的利益破壞在於整體對於隱私的探查,但我們認為不公來源於並非所有的消息都**同等**程度的完全**公開** ,現實中只有部分的個體的信息能夠被另一部分個體所知,反之而不可能。真正的隱私只有個體心中從未表達過的信息,其不需要任何系統以任何形式進行保護。而公開的,有過傳播的信息,都應該被準確的記錄、公開。

對於通常意義上的隱私信息,我們認為其不直接屬於這個系統。對於涉及隱私的文章,不推薦創建消息,即使是以加密的形式。因為在別人看來無意義的信息會影響賬戶其他信息的傳播。對於涉及隱私的通訊,可以以消息的形式公佈自己的聯繫地址,再通過其他方式進行聯繫。

## 計算

待補充……

## 總結

我們認為先單獨創建去中心化的賬戶系統(DID),再基於其上建立社交服務(SNS)的方式是不可行的。因為去中心化的賬戶系統創建過程無法附帶一個合理的且能被所有使用者驗證的成本。系統使用者無法像中心化平台一樣,驗證手機號,郵箱等真實身份的關聯信息。同時,系統也無法像比特幣等貨幣系統一樣以算力為成本,因為當算力不再作為整體衡量機製而變為個體創建成本時,無法避免其帶來的不公正。所以我們放棄了統一可驗證的賬戶創建客觀成本,而將其轉變為由發布的內容所附帶的主觀成本,據此我們可直接構建去中心化的社交服務系統。

我們利用數字簽名及相互引用,將消息組合為代表某個特定意志的賬戶,並基於賬戶的自我認同,構建出社區這種具備關聯關係的賬戶集合。通過這兩個層級關係,徹底解決了在點對點的信息傳播過程中,信息無法篩選的問題。使得系統使用者,在能自由創建消息的同時,也有能力在海量的數據中選取自己希望獲取的部分。點對點的系統本身就保證了用戶的積極自由,任何人可以依照自身意願發布信息。同時,這個系統也給與了用戶保護自身消極自由的權利,減少用所受冗餘數據的影響。

與現今主流的保護用戶隱私的想法不同,我們認為任何發生在不同個體間的信息交流,都會留下存在的痕跡。現今的問題根本上源於個體間信息披露的程度不同,當所有信息均被記錄和公開時,謊言將會消失,活在當下將成為過去,我們將完成“時間”這個維度的升級。



CC BY-NC-ND 2.0 授權

喜歡我的作品嗎?別忘了給予支持與讚賞,讓我知道在創作的路上有你陪伴,一起延續這份熱忱!

PDU尝试构建去中心化的社交网络服务