天天看點

解讀Nostr:抗審查的中心化社交協定

把資訊儲存一億年左右的方法,他們強調,這是目前已知的唯一可行的方法,它就是——”羅輯把拐杖高舉過頭,白發長須舞動着,看上去像分開紅海的摩西,莊嚴地喊道,“把字刻在石頭上!”

—by《三體》

背景

資訊如何流傳下去?有着前言中的那句振聾發聩的聲音:把字刻在石頭上!

資訊如何不被阻斷?那可以刻在更多的石頭上,越多越好。

資訊如何證明所有權?基于橢圓曲線那樣優美的函數,在數學理論上的無限與唯一對應。

這是被串公鑰刷屏一周,無論是在朋友圈還是推特Facebook,關鍵性事件就是Twitter 前首席執行官 Jack Dorsey 發推稱,基于去中心化社交協定 Nostr 的社交産品 Damus 和 Amethyst 已分别在蘋果 App Store 和谷歌 Google Play Store 上線,同時網頁端 snort.social 也正式開放,其中Damus短短數日使用者數已經突破72W。

雖然一句話裡涵蓋了很多産品的名詞,不過其實關系很清晰,Nostr 本質是去中心化社交場景的資訊傳輸協定,Damus 、Amethyst、snort.social則是根據該協定開發的第三方應用。

為什麼會有Nostr的需求場景?

經曆了反壟斷之年的網際網路群衆們,即痛恨于中心化機構對資料的濫用與侵犯,又無力脫離優秀的應用體驗以及并無選擇性的市場,歸根究底在于社交産品背後是公司為機構在營運,是公司就有接受監管與審查的義務,他所有負責的對象是股東以及注冊地政府,本質上追求的是商業上的成功,而不是言論自由的理想。

而反壟斷的終局古往今來更多是屠龍勇士終成惡龍,既然中心機構做不到,也沒有立場去做,那麼對自由的向往便催生出使用代碼來保障自由的去中心化協定:Nostr

Nostr協定架構

其實Nostr非常簡潔明了,可以一言概況:

讓每個人都運作一個用戶端程式,要釋出什麼資訊時,用自己的私鑰對文本簽名,發送到多個中繼器上。想要擷取資訊時,則向各個中繼器問詢。用戶端再對得到的資訊,借助其公鑰驗證進而判斷真實性。

角色關系

協定中隻有中繼器和用戶端兩種角色

,作為中繼器可以有任意多個,使命是接受存儲用戶端上報的資訊,并依據用戶端請求傳回本地查詢結果。

 ,便是用戶端也可以有任意多個,存在使用者的裝置中,要做的核心是簽名與驗證。

從這樣簡潔的角色關系可以看出,使用者用戶端并不與其他使用者用戶端産生互動關系,并非是p2p的形式,而中繼器之間也無需互動他們之間無需資訊溝通,這也意味着不存在共識層面的問題。

綜合來講,屬于一種強用戶端,弱服務端(中繼)的結構,多個服務端可以互相替代,進而淡化其重要性,這也是抗審查的基礎,使用者之間對中繼有自主選擇的權利,進而能引發中繼器層面的競争,更大容量、更快速度、更好網絡激勵以及對垃圾内容的篩選能力。

賬号體系

Nostr 中的身份由公鑰和私鑰組成。是以沒有密碼或唯一的使用者名(或者公鑰即為使用者名),任何人建立新的公私鑰對都是毫無成本的事情,本質上都是已經存在的關系。

解讀Nostr:抗審查的中心化社交協定

不過與以往的去中心化社交産品顯著區分的是,他全程不上鍊,可以說與鍊本身毫無相關,隻是應用了區塊鍊上最正常的公私鑰賬号體系而已。

我們已經可以從很多場景都見到公私鑰的作用了,對于能接受自控私鑰管理風險的使用者而言,是絕佳的賬号武器,前有EOA為底,後有MPC為優化,更有合約錢包作為目前賬戶抽象AA的載體。

其次在廣大NFT玩家面前,也經常遇到各類白名單Mint,也是基于公私鑰簽名與解簽實作的

操作行為

Nostr的NIP是一個雷同于以太坊EIP提案的機制,而NIP-01 即說明了每個消息的内容。

咱們從使用者用戶端的視角出發,可以進行下列操作

操作1、簽名釋出資訊:EVENT

使用者想要釋出資訊時,則是用自己本地用戶端存儲的私鑰,對一串内容做簽名,最終生成如下的類型資料

這裡的id其實是基于目前内容組合後用哈希計算得出的,因為有時間戳的參與,是以正常情況下id是不會重複的。

操作2、訂閱目标事件:REQ

作為資訊傳輸,有來就有回,指令REQ需要向中繼器發送一個随機ID作為訂閱ID,以及一個過濾器資訊。目前協定可支援的設定如下,

從篩選條件來看,基本等同于關注這個功能,既不需要對方許可也能拉取到對方釋出的資訊(事實上本質都是公開的),而過濾器也隻是更好的定義,是誰在什麼時間段,釋出的那一條

當然出于中繼器這樣的設計,有可能部分中繼器并沒有存儲目标使用者的資訊,那麼使用者需要嘗試從不同的中繼器去拉取,一旦中繼器挂了,甚至全部相關聯的中繼器都挂了,那這塊資訊也就損失了。

操作3、結束訂閱:CLOSE

最後一種用戶端能對中繼器發起的資訊便是close指令,即關閉訂閱,那用戶端便不會持續持續擷取到最新的事件資訊了。

從技術角度看,此協定使用了訂閱ID的模式這意味着中繼器會建立起持續的連結,一旦此中繼器收到被關注使用者的資訊,就會主動向訂閱方的用戶端發起請求來同步,這種模式雖然對中繼器而言負載更高,但同時也能得到實時被關注數這樣的資料,是一種能激勵使用者釋出更有價值資訊的方式。

并且協定出現多個”e“、”p”,這類資訊雖然并不是必選項,但他能讓各個中繼位址在用戶端之間裂變,傳播,是提升抗審查性的關鍵。

Nostr的困境與破局之道

通過上文對Nostr協定中角色關系、賬号體系、操作行為的梳理,我們已經可以基本了解這樣精簡而優雅的一套傳輸協定的運作原理了。

但是,相比大家同樣也冒出了和十四君一樣的疑問,就這麼簡單嗎?是啊,筆者梳理的過程就仿佛在做大一時候初學計算機網絡的程式設計課作業一樣,實作個區域網路的聊天軟體。

Nostr的爆發本質上是哲學理念的成功。隻定義了最小的必要元素,而放開了控制能力,任何開發者哪怕是大一二的計算機學生都可以去開發一個中繼器服務,低接入門檻帶來的是巨大的體驗競賽。

從文末的拓展連結中可見,截止發文已經出現228個github開源的實作案例,本次并且部分在探索商業化上也展現出十足的創意。

社交場景素來被認為是護城河最深的網際網路品類。其中很多的訴求是需要基于Nostr進一步優化後才能解決的。

困境1、社交隐私問題

目前的Nostr 中繼器隻是簡單 JSON 資料的轉儲。用戶端通過過濾器擷取。這使得 nostr 成為用戶端之間的通用資料共享平台,那對于有隐私資訊傳遞需求的場景而言,如何解決呢?畢竟即使是推特這樣的社交廣場也會有私信的需求存在。

目前較優的解決方案是,DH算法(迪菲-赫爾曼密鑰交換),這套1976年問世的算法。它是第一個實用的在非保護信道中建立共享密鑰方法。隻要得到共享密鑰,使用Nostr的雙方均可以釋出加密後的資訊,進而實作點對點的隐私通信。由于隐私常有閱後即焚的訴求,是以其中的伺服器存儲成本還能進一步降低。

困境2、抗DOS問題

會受到攻擊的是中繼器這一層,目前Nostr協定并不直接指導和确定如何讓中繼器抗擊DOS攻擊和垃圾資訊,是以也是衆多中繼器實作的重點。

從付費出發,因為中繼有着極高的自主性,那麼他可以設定付費條件,即某些中繼服務隻允許完成付款的交易才能釋出在上面,有了金融成本便是最好的垃圾資訊過濾器。

從工作量證明出發,也可以提高單次釋出資訊的挖礦成本,雖然Nostr和區塊鍊基本無關,但是基于公私鑰以及簽名的賬戶體系,可以讓其在釋出的事件中,附帶上要求,比如釋出某條id(基于哈希計算的結果)要達成怎樣的難度(如前5位為0),這樣就是一種既持有資訊,又帶有工作量證明的釋出方式。

困境3、高成本存儲與垃圾資訊篩選問題

雖然中繼器中間并不需要共享任何資訊,但是他們有着共同的訴求即符合使用者意願,提升使用體驗,那麼他們會很樂意共享一些黑名單,以及互相通信收集更多使用者釋出的資訊,讓自己的庫存越來越大。

對于付出成本的一方,必然有着利益收取的一方,因為網絡視訊圖檔等資源的成本高,且無法看到輕松降低的能力,必然會出現的是基于收費模式的小網絡,最終Nostr是一個個資料孤島,即是可到達的也是需要付出成本的。

最後

雖然眼前Nostr爆火,但筆者依舊認為建立去中心化媒體平台的核心問題不是技術難題,而是社交困境。

社交是明珠,是網際網路各賽道護城河最深的品類,這是因為他具有強大的網絡效應,社交圖譜帶來的寡頭效應是特别明顯的,比如包括探探、陌陌等在内大多數社交應用的社交終點其實是微信,讓任何人都很難離開微信沉澱的社交關系。而網絡效應和壟斷優勢很大程度來源于封閉和許可,使用者建構起屬于自己的圈子後,使用者退出這些平台的代價十分高昂,因為不能帶走社交關系和圖譜。

而社交産品十分害怕的是失去聯系,Nostr實作了抗審查的中繼器邏輯,卻也帶來了不确定性,消息從釋出端到接收端有了一層割裂,3次握手4次揮手的http穩定連接配接建立條件,不可能由使用者手動實作。

社交的訴求中,多數使用者資料的掌控訴求恐怕會弱于使用者的内心需求,早些年QQ空間風靡一時,後來轉入移動互聯的時候,與微信朋友圈之間巨大的差異是點贊與評論兩大功能上,熟人可見與全員可見泾渭分明,并且後續的結果也有目共睹。

還有更多web2社交平台的優勢就不一一列舉了,目前基于Nostr實作的Damus等雖然名燥一時,但整體看充斥着各種bug,良好體驗之路還有很長一段路需要追趕。

參考連結:

https://github.com/nostr-protocol/nostr

https://github.com/nostr-protocol/nips/blob/master/01.md

https://bips.xyz/340

https://zh.wikipedia.org/wiki/迪菲-赫爾曼密鑰交換

https://github.com/aljazceru/awesome-nostr

【十四君-原創回顧】

繼續閱讀