刘果 | Guo Liu
刘果 | Guo Liu

“To change something, build a new model that makes the existing model obsolete.”

聯邦制社交協議:Nostr,Secure Scuttlebutt,Farcaster,ActivityPub

(編輯過)

Nostr 最近引起很多關注。獲得了Twitter 前CEO Jack Dorsey 的支持,客戶端Damus 一度進入Apple store 下載前十,註冊用戶據說已經超過一百萬。前幾天在Web3 101 播客聊了聊它和Farcaster、Secure Scuttlebutt、ActivityPub 這幾個聯邦制社交協議,正好把一些背景和想法記下來。

聯邦制(federated)網絡結構。網絡由許多自由加入的服務器組成,用戶通過自己的客戶端和一個或多個服務器相連。

Nostr

Nostr 由比特幣社區的匿名開發者發起,早期開發者和使用者很多都是比特幣支持者,一些客戶端也整合了比特幣的閃電網絡。這導致有人誤以為Nostr 是基於比特幣網絡,也讓不少人開始關注起比特幣生態。

Nostr 形成的網絡結構是聯邦制的(federated),和另外幾個協議形成的結構一樣。聯邦製網絡由許多自由加入的服務器組成,用戶通過自己的客戶端和一個或多個服務器相連。電子郵件系統就是一個聯邦製網絡,區塊鏈其實也是,不過各個系統中對服務器的叫法不同。 Nostr 中叫relay,Farcaster 中叫hub,Secure Scuttlebutt 中叫pub,ActivityPub 中叫instance。

Nostr 的設計極為簡潔,不惜以靈活性為代價。基本思想是,客戶端之間的通訊以中繼服務器(relay)為橋樑,通過密碼學確認彼此身份。中繼服務器替用戶24 小時在線,但因為身份由公鑰得來,用戶替換服務器非常容易,並且可以同時使用多個。

它最特別的地方是,服務器之間不進行通訊。這意味著,兩個用戶只有在用同一個服務器時才能相互通訊。這一方面簡化了協議,不需要全局共識,也不需要服務器之間的信任。另一方面,這也意味著服務器會有很強的馬太效應,因為人們在共用同一個服務器時才能溝通。

相比Nostr,另一個最近興起的協議Farcaster 就要復雜很多,想解決的問題也多很多。

Farcaster

Farcaster 中,服務器之間以流言協議( gossipsub protocol )通訊,通過更新delta graph共同維護社交網絡的狀態。 delta graph 是一種Farcaster 設計的數據結構,也是一種新的共識算法,讓整個網絡具備一致的狀態,同時每個服務器只需要保存部分數據。

除了delta graph 之外,Farcaster 另一個有趣的地方是它的身份系統。通過與以太坊整合,Farcaster 中用戶身份由以太坊地址和類似ENS 的域名系統組成,同時還有一個Farcaster 智能合約中的ID。這個ID 的設計是為了讓用戶丟失私鑰時,能夠通過社交關係等方式找回自己的身份。

Farcaster 中不管是新的共識算法,還是內置找回機制的分佈式身份,都很有野心,但實際效果也都還未知。另一個協議Secure Scuttlebutt(SSB),在Web3 概念出現之前就已經逐步成熟了。

SSB

SSB的設計非常優雅巧妙,受到許多開發者的喜愛。它主要為了點對點通訊設計,網絡節點都是用戶的客戶端,在本地存儲用戶和朋友的信息,並通過流言協議發送和獲取信息。實際使用中,用戶常常與被稱作“ pub ”的超級節點相互關注,pub 為用戶中繼信息、發現新的內容。這實際上形成了和Nostr 類似的聯邦結構,只是用戶仍然可以點對點通訊。

SSB 針對點對點通訊的設計使得它比Nostr 複雜,這一方面增加了客戶端的門檻,另一方面對聯邦制的使用場景增加了束縛。比如,如果客戶端是網頁型態,就需要大幅改動SSB 客戶端本地優先的思路。那些SSB 真正不可替代的場景,都比較極端,比如當互聯網完全無法使用時,它的點對點通訊仍然可用。

SBB 第一個版本14 年發布,許多年來一直有穩定的用戶群體,並且是在進行真實的交流,而不是只關注使用的產品和協議。不過從落地場景和使用者的角度,更為成功的協議是ActivityPub,特別是採用ActivityPub 的軟件長毛象(Mastodon)。

ActivityPub

ActivityPub 第一版是18 年發布,設計時吸取了Fediverse中GNU social 等軟件和OStatus 等協議的經驗,並作為W3C 的推薦標準。現在,僅Mastodon 的使用者就已經超過了6m,人們可以在上面找到圍繞各種話題形成的活躍社群。

ActivityPub 的思路很簡單直接,每個服務器(instance)類似電子郵件服務器,幫用戶收信、發信,並託管身份。它標準化了服務器之間的通訊,讓自由加入的服務器彼此之間可以聯通;它也標準化了客戶端與服務器之間的通訊,讓用戶可以在同一個APP 上接入不同的服務器。這給了服務器運維者和用戶都提供了很大的自由度。

ActivityPub 有個問題是,用戶的身份和數據與服務器綁定,難以遷移。服務器一般都是志願運行的,沒有商業模式,不太持久。服務器一旦停止,用戶的身份和數據也就丟失了。相比之下,其他三個協議都以用戶的公鑰為身份,並且在多個服務器中保存數據,遷移也比較容易。

ActivityPub / Mastodon 還有個特點,每個服務器就是一個社群;社群是非常有效的自組織方式,但服務器作為社群基礎,提高了創建社群的門檻,因為創建社群就意味著運維服務器。這導致Mastodon 上的社群多樣性還是不如Reddit、豆瓣小組等中心化的產品高。

不過,這裡提到的另外三個協議還沒有演變出社群的形態。理論上SSB 的pub 和Nostr 的relay 也可以當成社群使用,但這樣的話同樣會面臨社群門檻的問題。

什麼樣的協議對於分佈式應用有價值?

Matters 的團隊和用戶都提出過設想,如何將Matters 的社交網絡轉成邦聯制結構,讓用戶自行架設服務器加入。一個自然的問題是,不同服務器之間的人和內容如何交互。在Nostr 之前,最可靠的方式是ActivityPub,標準成熟,採用廣泛。

Nostr 則帶來了一條新的思路:不同服務器之間可以不交互。社交網絡被拆分成了許多重疊但又獨立的切片,用戶可以選擇自己想要的切片。那些需要全局狀態的地方,可以通過其他協議和技術來補充,比如通過內容尋址引用媒體文件,或者通過區塊鏈運行經濟系統、進行內容髮現。 Nostr 還沒來得及在實際應用中慢慢成熟,但設計上的高度簡潔,意味著有它有足夠大的演變空間。

不過,對於已經有用戶和社群的應用來說,似乎並沒有動力採用Nostr。採用Nostr,功能上的迭代受到了Nostr 現行標準和客戶端的限制,用戶更容易遷移到其他的客戶端或者服務器;與此同時,並未擴大原有的社交網絡,也不能為用戶增加新的功能。

另一方面,採用ActivityPub、特別是服務器間的通訊標準,是能夠擴大原有社交網絡的;因為能與其他服務器進行通訊,就能讓用戶觸達到更多的人。但為了實現一個用戶自主、方便遷移的全局身份系統和內容網絡,又必須要大幅改動ActivityPub,丟失了部分與其他客戶端互操作的能力。不過這些問題大都可以通過其他比較成熟的協議來補足,比如以太坊地址為身份、IPFS 指紋為內容ID。

ActivityPub 的設計思路來自Fediverse ,社交網絡伊始便已存在。這個思路也非常簡單:一群服務器組成分治的網絡,相互收發信息。這條思路從GNU social 到Mastadon 等不同的軟件,從OStatus 到ActivityPub 等不同的協議,積累了近二十年來人們探索分佈式社交網絡的經驗,有很強的可擴展性。

Nostr 的熱度只持續了很短的時間,而短短時間內出現的話題和內容,仍然沒有脫離Nostr 本身。不夠真實的使用場景,難以說明Nostr 多大程度滿足了需求。但短時間超過1M 人來嘗試,倒說明了許多人已經苦於傳統的中心化社交網絡,正在尋找新的選項。這是發展分佈式社交網絡的先決條件,也才是Nostr 出圈故事中最有意思的一點。

Nostr 本身的極端簡潔也讓這個實驗很有價值。不管最終能否形成新的社交網絡範式,它已經做到了Secure Scuttlebutt 的精妙設計和Farcaster 的資本投入都沒做到的事,給分佈式社交應用提供了一條極端簡潔的思路。

NO RIGHTS RESERVED 版權聲明

喜歡我的文章嗎?
別忘了給點支持與讚賞,讓我知道創作的路上有你陪伴。

載入中…
載入中…

發布評論