這是Web3社交基建”三位一體“系列文章的第二篇。系列文章從以太坊世界計算機時代講起,以幣安Greenfield 白皮書發佈為”新三位一體“時代的轉折點,講述去中心化計算、去中心化存儲、去中心化通訊三塊基石各自在Web3生態中的支撐性作用。其中,去中心化計算長久以來以L1、L2之爭位於中心焦點;去中心化存儲的潛力已在幣安的力推下昭告天下,而拼圖的第三塊,“去中心化通訊”,即將成為矚目的下一個體量相當的新生潛力點。本系列文章以此為線索,進行探索。
Nostr 前沿圖式:打開社交通訊協議的“眾妙之門”
在系列的上一篇文章中,我們回顧了以太坊初生時代的“三位一體”構想,並以幣安的Greenfield 為案例探討了去中心化存儲的現行方案與發展方向。在這篇文章中,我們將以去中心化通訊賽道首個現象級協議“Nostr”為起點和分析對象,探尋在極端克制、充分體現了比特幣原教旨主義精神的Nostr外,一個成熟的去中心化通訊將需要做好哪些準備。
在近一個月的沉澱後,Nostr協議上的最流行應用Damus(達摩)揚起的塵土又紛紛回到了原點。 Damus 成也極簡,敗也極簡,協議的無政府主義所帶來的相繼是理想主義者的歡呼、大眾彼此裹挾的湧入、和最終廣告氾濫的實況。在對Nostr 的各類研究進行再整理、同時潛入Nostr 開發者視角的各類文檔閱讀後,我們認定,**Nostr僅僅是社交通訊的始發站。 **作為實驗性質的通訊網絡,它的“號手”屬性遠高於實際應用屬性,這意味著它將去中心化通訊帶入了大眾的視野,卻因缺乏必要的技術和設計條件沒有完成它。綜合來看,Nostr 是一個不具備反脆弱特徵的通訊協議的原型。在Nostr吹哨之後,圍繞原型,我們相信成熟的開發者們可以鑄就新的下一代的通訊協議。在文章末尾,我們將嘗試探尋類似中繼網絡的更好解決方案。
Nostr 數據概覽
Nostr 生態數據
數據來源: https://stats.nostr.band/
Nostr 的核心:Dumb server, Smart client
Technical Basics
Client: 客戶端,承載各式社交任務。複雜並且可定制。
Relay:中繼服務器。與客戶端通信並進行存儲和索引。以其簡潔達成可互操作性(interoperability)。
Event:事件。 Relay 使用的基本對象/數據類型,便於Relay 與Client 之間發送和檢索消息。事件及其標籤的擴展性非常好,這使得開發者的自由度很高。
- sig:即簽名,保證事件真實性。在客戶端進行。
- tags:開放、任意標籤。如回复事件的行為會被加上“the e tag”。
技術實現流程:客戶端將事件發送到中繼服務器,事件中包含指向特定Relay 的指針。 Relay 隨後存儲並索引它們,其他客戶端可以與他們“知道”的中繼服務器通信,以請求它們已接收和存儲的事件。
所有復雜性都被留在客戶端,而中繼只需達成最小程度的共識標準,也因此給開發者留下了廣大靈活的空間和非常低的開發門檻。
*目前的客戶端,並非直接與中繼器進行通訊的客戶端,而是網站客戶端,仍然存在被攔截的風險。
自由跳轉的中繼(Relay):無限的任意門
“中繼”和以往所有服務器一樣,有可能會被spam填滿、有可能會收到有害信息,也有可能會惡意阻止某些並不具備傷害性的內容和用戶。 Nostr的解決方案並非是無限量增發Relay的數量、並給予用戶選擇符合其標準的Relay的權力(如Mastodon 正在做的),而是通過降低中繼的部署成本和用戶在中繼與中繼之間的切換成本,實現最小成本的動態自由**。 **
任意門永遠可以通往下一個中繼。一方面,中繼的低門檻部署方式保證中繼不可能是會被窮盡的;另一方面,跳轉中繼的便利保證用戶隨時有離開中繼並繼續打造社交關係的自由。離開中繼的機制如下:
1)向這個中繼發放對另一個中繼的推薦。原有中繼(舊中繼)的客戶端會自動識別並添加新中繼到它“認識”或“知道”的中繼列表中。這樣,其他人就不會因為某人換了中繼,而無法繼續得知某人的消息。
2)如果某人被很多中繼同時禁止,導致其中繼推薦沒有被廣播,ta也可以通過其他方式讓ta的朋友知道你所在的新中繼。
必須留意的是,中繼之間無法進行數據的自動遷移,這使得用戶無法在中繼之間無法無縫銜接原有的社交關係和既有數據。
Nostr與社交空間的拓撲學
“簡潔但堅實”是我們能夠對一個社交通訊協議的最好想像,也是比特幣原教旨主義在Nostr身上寄予的社交協議的優美設計理念。 “簡潔”要求犧牲所有多餘的技術細節,以恰到好處地達到“functional”。但Nostr在犧牲的捨取之中,並未達成平衡,而是以折損功能本身為代價:
“簡潔……”
為什麼Nostr是簡潔的?因為社交空間作為空間的一種,其本身即是簡潔的、完全被動的。 Relay的運營者只是看守者,而非“管理者”(Mastodon式的)。准入和准出構成了這個空間的所有功能,也定義了交集空間的邊界。
而除邊界性本身,空間中所有其他功能實現都由“客戶端”來完成。這使得Nostr協議更好接近真實世界的社交圖景:正如無限存儲不存在,無限檢索和無限觸達都不存在。存在的只有“共同空間”。 “共處”的概念即一種關係圖譜上的概念,和自然社交的所有過程保持一致:產生交集→進行追踪,同處一個交集空間則繼續深化交集;離開交集空間則該段關係不復存在。
Nostr的做法是對抽象興趣空間的物理落實。在微信、Telegram、WhatsApp或其他通訊平台上,群組的概念從根本上是抽象的,並非落實到某一個技術實體。但Nostr將群組和物理上部署的“Relay”綁定,直接落實到具體的節點服務器。
“但並不堅實。”
以上的做法帶來了一個重要問題,即存儲問題。由於Relay彼此之間互不通信,也就是不進行數據上的交流,“離開”某個Relay,或者被某個Relay驅逐,會像用戶主動離開/被驅逐於某個特定的Web2平台一樣,無法帶走已經產生的社交數據。用戶離開微信、Facebook或小紅書,無法帶走原有的社交關係,因為微信並不“與Facebook或小紅書”通信。 Nostr更接近於一個Web2而非Web3協議: Nostr的多個Relay本質上是將用戶社交數據做了多個備份(同時支持用戶自己備份),但並不保證備份本身的安全。
“Client”客戶端就是基於這些並不互相通信的備份,來進行不同功能的實現。這無異於是在一個非常不穩定的數據沙堡上建立新的建築,每一次建築都是對舊有沙層的一次新的調用,但是同時隨著用戶規模的擴大和時間的流逝,“永久丟失”從一個概率問題變成了必然問題。而這時的永久丟失,並沒有任何一個中心化機構可以為之背書。 Relay是匿名的,而我們不應假設每一個用戶為了自己的數據安全都親手部署Relay進行備份。
以缺乏數據互通性帶來的任意門跳轉,更接近於Web2平台發展最晚期的聯邦制,而非真正Web3網絡的雛形。
Dumb Relay,真的是中繼網絡最好的解決方案嗎?
以去中心化為前提,“中繼”在技術設計上可以有眾多不受限的形式。 “Dumb Relay”是其中的一種選擇,但還有一種選擇,那就是允許“Dumb Relay”發聲。 ”發聲“是共識的前提,只有中繼節點之間進行數據交流,才可能形成協議層面的數據同步。協議層面的數據同步並非任何程度上的冗餘,而是數據安全和預防單點故障的必要技術背景。 “共識”背後,是整個網絡的安全。
Nostr更像是通訊協議的一個“協議層Demo”,並非為大規模應用而準備。通訊協議永遠需要為下一個億級用戶做準備,而在這個用戶體量上,原本退居其次的數據安全和數據恢復問題,將成為每一個協議層開發者必鬚麵對的核心問題。
從Nostr的起點,到新一代通訊協議的下一站
綜上,我們可以抽像出Nostr目前暫不具備(或暫不完整),但下一代理想中繼網絡應當具備的幾個特徵:
- 具備節點間共識,防止單點故障導致的數據永久丟失;
- 擴容:由於採取“Dumb server, Smart client”的技術設計理念,盡力降低Relay 的部署門檻,Nostr 協議無法針對特定Relay 進行擴容;
- 抽象賬戶(而非無法恢復的公鑰私鑰對);
- 經濟激勵層,以支持在大規模用戶基數上的Relay節點數跟進。
以上標準並非無法同時達到。鑑於去中心化通訊協議佔據的重要生態位,及其所伴生的用戶價值和經濟潛力,現有的中繼網絡/去中心化協議必定會往上述方向演進。 PUSH, XMTP, Dialect, Notifi, Hal, Tenderly,還有部分繼承以太坊Whisper 遺產的Status,均是可以考慮觀察的對象。在下一篇文章中,我們將以案例研究的方式,介紹其中完成度相對最高和速度最快的一個通訊協議,作為去中心化通訊的參考樣本。
Acknowledgements
謝謝ArNostr 的圍脖, Unipass 的張騰驥George,Plancker DAO 的海綿Aaron對這篇文章的幫助。