上週,CKB 社區成員 Retric 提出了 Nostr 綁定協議(Nostr Binding Protocol)。
Nostr 綁定協議用在 Nostr Event 和 CKB Cell 之間創建一對一的映射關係。普通用戶可以基於該協議在 Nostr 社交網絡中創建和分發原生資產, 通過 RGB++,這些 Nostr 上的資產也可以由比特幣地址進行控制。客戶端開發者則能夠在其上構建產品,不同於 ETH dApp 分成兩個系統(一個是鏈下伺服器,另一個是鏈上智能合約),Nostr 綁定協議為 dApp 帶來新的開發範式,它使用一個具有不同數據級別的一致系統來構建 dApp。據悉,Nostr 綁定協議未來可以無縫集成到 CKB 閃電網絡,解決社交網絡中原生支付問題。
Nostr 是一個基於公私鑰的、極簡的信息傳輸協議,致力於創建一個抗審查的全球社交網絡。Nostr 使用 Relay(中繼器)來存儲社交數據(比如帖子)並將其傳輸給用戶,用戶運行的軟件稱為 Client(客戶端)。
今年 3 月 9 日,在由 Nervos Foundation 和 ABCDE 共同舉辦的首屆 Bitcoin Singapore 大會上,Retric 做了一場 “Nostr 生態發展現狀及問題” 的主題分享。以下是根據 Retric 的分享整理的內容,可以幫助大家更好地了解 Nostr 協議。
這個 Nostr 協議應該是今天這個會議裡面最簡單的一個東西。相比其他人講的一些技術或者一些協議,它是最容易理解的,因為它本身也非常簡單。Nostr 一開始想要做的其實是一個 “推特”,但這個推特不是由伊隆・馬斯克控制的,而是一個更去中心化的推特,它不會去做一些壞事,不會去封鎖別人,有一些言論自由。它想要做這個事是比較現實的一個出發點,就是想要做一個這樣的軟件,為此提出了一個社交網絡上的去中心化的協議,叫 Nostr。然後發展到現在,大家開始意識到這些東西其實不只是可以去做一個推特,更像更好的互聯網結構,我們可以在上面做各種各樣的應用。
Nostr 這個協議我先簡單介紹一下,它其實可以用一句話就把這個協議講完:這是一個數據,通過一個私鑰來簽名,這個數據在不同的 Relay 或者叫中繼器上去進行傳播,然後發給客戶端。 本質上就是我簽一個固定格式的數據,簽完之後發到一些中繼器上,然後我再讓其他用戶通過客戶端從這些中繼器上把這個數據拉下來進行讀取。
Nostr 的核心東西是一個 Jason 結構,會有不同的字段,每個字段代表一個意思。比如說 pubkey 就是我簽名發送數據是哪一個公鑰去做簽名的,比如它有 content 這一欄,這個代表說我簽這條數據它的內容到底是什麼,它可以是任意的一個字符串,可以是我發的一條推特,也可以是一個數字或者說一個加密的東西,協議上是不做限制的。這邊也會有個簽名,就是說我對我發的這個數據做了一個保證,保證這個數據確實是從我這邊發出去的。
所以 Nostr 的核心就是這麼簡單,它其實只是代表說我在本地通過某一把私鑰去對某一段我自己寫的數據做了一個簽名。這個數據發到網上之後,Nostr 網絡結構也很簡單,就兩個結構,一個叫 Relay,一個叫 Client。
Relay 就是一台伺服器,是每個人都可以架設的一台伺服器。這個 Relay 的作用是它一直在網上跑,去監聽有哪些人給我發了我剛才說的這個數據,然後把它接收下來,把它存下來,如果有客戶端向我要某一些數據的時候,我再給他。
第二部分是這個數據怎麼去傳播,即傳播的一個規範,這裡面其實會有大量的細節。比如說我把這個數據傳給 Relay,Relay 跟 Relay 之間他們互通嗎?或者說我傳給 Relay 之後,Relay 是不是會幫我把這些數據完整地保存下來,然後任何時候找它要,它都會給我?其實有這種細節問題。Nostr 的答案是 “我不管,你們自己去想”,不管其實是有點奇怪的一個反應,但是有時候我覺得 ** 不管是一種比較高明的策略。** 有時候好像不管在現實世界還是在網上,有時候因為管太多反而去傷害一些事情,所以我覺得它不管其實非常有意思。
比如說我舉個簡單例子,我們在用比如說傳統的中心化社交網絡的時候,那個中心化伺服器會默認把你所有數據都存下來。然後你找我要的時候,我任何時候都可以給你,但因為 Nostr 是不管的,所以這裡面會出現什麼情況?有些 Relay 的運營者想要做大做強,他想要把所有消息全部保存下來,這是一種。還有一種我是個愛好者,我只想搞一個很小的節點,我只對我喜歡的那些用戶去接受他們的數據。還有一些是我願意接受你數據,但是我接收後可能 30 分鐘後我就不想要了,我要把你刪掉,因為我伺服器的那個磁碟可能是有限的,我不願意保存那麼久。
** 所以它其實會演化出很多不同的角色,這些不同角色可能就會有不同分工。** 比如說有些真的想要去把它當做一個生意來運行的話,那我就會去做一個專業的服務節點,盡可能給大家提供比較穩定比較長時間的服務。也有一些愛好者,他也可以跑那種局域網一樣的東西,所以它會演化出不同的這種分工。
普遍的一個現象是,大部分 Relay 節點它願意接收你的一些消息,但是它不能保證會長時間給保存下來。這種結構其實它好像更適合我們真實人類社會中的一些社交模式。真實的社交模式,比如說我今天在這裡跟大家聊天,我一說話,你們能聽到,你們也知道,然後離開會場。過兩天之後,有些人記憶不太好就已經不記得我在說什麼了,但是有些人在這會場買個錄音機,把你說的話每個字都記下來,這個就代表說你這個消息是不是會一直保留下來。
這其實就很像我們現實中在發生的一個事情,這個事情能發生就是 ** 因為 Nostr 對很多細節或者很多其他事情並不去做規定,並不管,** 包括 Relay 跟 Relay 之間到底需不需要通信,它們需不需要同步彼此擁有的消息,它是不規定需要,但它並沒有說你不能。所以也有很多 Relay 會把自己假扮成一個 Client,它也會去找其它 Relay 要它的數據,把所有數據同步下來。但是它不去做強制性的要求,說你必須通信,它的一個理由是如果我做了這個要求,你必須要通信,那就會變成每個 Relay 都必須保存全網每個用戶的數據,那樣的話對運營 Relay 是一個非常大的考驗。可能只有那些專業服務商才能運營,個人愛好者可能就不會去跑。所以這是它做這個簡單協議的背後的一些考量。
總結一下,我覺得 Nostr 協議非常簡單。另一個,它有趣的地方其實是在現在這麼一個節點,就我們有了比特幣,有了 blockchain 之後,想要有的共識是,就好比我們大家都坐下來說,我們今天用一種統一的格式、統一的協議去做一些社交網絡或者做互聯網的一些產品,它其實出現在很有意思的一個節點。但現在這個節點我覺得有這麼一個想努力的方向,就是 ** 統一用一種很簡單的數據結構,很簡單的交換協議去做一些微信、推特等在做的事情。** 所以我覺得它可能協議上你看一眼會覺得很簡單,好像沒什麼意思。但如果你去想它背後出現的時間,出現的這個意義會覺得有意思一些。
另外一點是因為它這套結構,它其實大量的一些驗證是發生在這個客戶端的。這裡面其實就一件事的驗證,你發布的數據是不是真的由你聲明了那個公私鑰對發出來的,只做這個驗證。為什麼做這個驗證,因為比如說我如果發了一條推特,說了些不該說的事情,這條會發給 Relay。Relay 再負責發給別人,那 Relay 如果不做驗證,Relay 可以說我偽造了你說的一句奇葩的話發給其他用戶。因為我在發數據的時候是有簽名的,所以拿到那個數據的客戶端它可以做一次驗證,說確實他簽的這個簽名跟他說的這個話是完全匹配的,這樣 Relay 就騙不了別人。
所以它的一個驗證是做簽名的這個校驗,這個簽名的校驗實際上是把過去我們中心化的互聯網比如說微信,微信上的伺服器它是自己控制的,它可以在伺服器上寫任何東西,你沒有辦法去確定說它有沒有騙你,因為所有的數據所有的權利都在伺服器上。但只要有最簡單的一個驗證,我們實際上可以把權利從伺服器那邊剝離出來,交給擁有帳號的這個用戶。 只要你有一個公私鑰,你就可以讓你的朋友去做驗證,確定說不是其他人要冒充我或者說一些什麼其他不對的話。
那 Nostr 的發展到底怎麼樣呢?這是我 3 月份翻到的一些數據。因為這是一個分佈式的網絡,所以它的數據其實是不太好統計的,這是我從 nostr.band 網站獲取的數據,Nostr 總用戶可能是 37 萬左右,日活可能就 12,000。總共的 Relay,出現過的 Relay,有多少人去跑過這個節點,可能有 2000+。但實際上一直在線的這些節點有多少,可能在 200 個以下。 大概是這麼一個情況,所以用戶還是比較少。
作為對比,你看它跟 BlueSky 協議的一個對比。Bluesky 應該是去年底就說他們達到 200 萬用戶了,右邊那個數據是有人統計的從推特出走的那些用戶他們去了哪裡,你也可以看到,Mastodon 排第一個,Mastodon 是一個比較老牌的一個協議了,然後也有人去了 ost news,也有人去了 BlueSky,Nostr 其實是屬於第五梯隊,就比較小的那一部分。
這是它大概的發展情況,當然 Nostr 背後有很多其實這種數據看不到的一些東西,比如說對協議提交了一些提案,開發者去給它提交了一些 PR。這些開發的活動或者一些討論,這些數據可能沒辦法統計到,但如果你點進去這些鏈接的話,其實可以看到發生的這些事情還是很多的,有大量的人在想要為這個協議做貢獻。這個是大家用 Nostr 去做的一些東西,就不只是說我真的做一個推特,也有很多做一些音樂類的應用,做這個 YouTube 類型的應用,也有做博客類的應用。
所以我來總結的話,現在我們覺得大部分的用戶其實還是 developer 或者 maker。 他們對協議本身感興趣,想在上面開發東西,或者我是個想要做一些東西的人,我會在你協議上,可能普通的那種 users 會少一些。
為什麼 Nostr 這麼簡單,願景看起來不錯,但發展不是非常盡人意,我覺得也是因為有遇到三個問題,我其實在寫這個 PPT 的時候發現其實有非常多無數的細節的小問題,比如說客戶端,一些產品體驗上的一些東西。但是這種東西其實是很難去把它講清楚,所以我就舉了三點我覺得比較重要。
第一個大問題是你怎麼在 Nostr 這個網絡裡面去找到某個用戶發的內容在哪兒, 因為我們前面說了整個 Nostr 協議的運轉是我在本地簽東西,然後可以發給無數的 Relay 們。其他用戶可以從這些 Relay 裡面抓取我發的數據來閱讀,這麼一種模式。但是這個模式有個問題,就是我這個數據發給 Relay 之後,我的朋友想要讀這條消息的時候,他怎麼知道我這個消息是放在哪些 Relay 上,他得知道哪些 Relay 有我這個數據,他才去讀。所以現在一個很大的用戶體驗問題是,很多人在用 Nostr 的時候會問他朋友:“嘿,你用的是哪些 Relay,我要跟你設置一樣的 Relay,這樣我們才能共同去交換這個數據。” 這是一個很笨的方法。
當然到現在也有很多開發者提出了一些詳解的方案,比如說有一個 NIP-65 的提案,它大概意思是我把我的數據會放到哪幾個 Relay 上這一條信息我也放在 Relay 上。然後我把這條信息盡可能傳播給所有的 Relay,這樣的話我的朋友首先會去找 Relay 問一個問題,我這個朋友他平常把他的消息發在哪些地方。拿到這個信息之後,他再去找我常發布的那幾個 Relay,找他們要這些數據,這是一種方法。
它分得比較細的兩種模式,一種叫 Inbox,一種叫 Outbox。比如說像 Inbox,它讓用戶定義我會從哪幾個 Relay 裡面去讀關於我的一些消息。如果你想要在 Twitter 上 @我或者想做其他事,你可以往這個 Inbox Relay 裡面去發這個信息。另一個是 Outbox Relay,指明說我會往 A、B、C、D 的好幾個 Relay 裡面去發我的一些消息,大概意思就是我把我常發布的一些 Relay 信息,首先也發在 Relay 上。
但是這有一個技術難題誕生了,就是我怎麼知道這個消息是在哪兒。所以這其實也會有這個問題,還有一些解決方案是說我通過一些算法,我盡可能在全網去下載盡可能多的一些信息。然後從別的人發的一些信息裡面提到的一些 Relay 隱藏的證據,去嘗試把一個人他發布的數據出現在哪幾個 Relay 上的概率做一個計算。通過這種概率的計算去盡可能找一些 Relay 要數據,然後去滿足別人想讀你的數據的時候能找到你的數據。還有一些也是讓用戶去定義自己會使用的一些 Relay,做一些分組,也是讓其他用戶通過這些分組去找到你,這是現有的一些改善的方案。
第二個問題也是比較嚴重的,叫 Content Governance。不管是內容產品或者說社交網絡上有很大的一部分精力是需要放到你怎麼去維護這個社交網絡上的內容。比如說你肯定不需要刷推特的時候刷到一個別人砍頭的視頻,對吧,這是非常糟糕的體驗。就這種那些公司背後會做大量的運營,它需要有很多人去過濾這些內容,或者去用算法去做一些內容匹配,這部分當中,市場上是比較空白的。這個有好幾個方面的原因,有一個原因是大家在這個平台上會非常排斥算法。因為覺得好像不管是 TikTok 還是 Youtube 都是算法來控制我們,但實際上我們確實是需要算法,只是說我們需要的是我可以切換算法。
我不希望說我只能接受用 Youtube 或者 TikTok 給我的強制性的他們要推廣廣告的算法,我希望是我有很多算法可以隨時做切換。我如果不喜歡這個算法,有選項我可以退出,這個觀點其設計也在慢慢接受。只是說現在這塊,不管是包括人工的那種或對內容做的一些運營,還是說在算法技術上做的一些事情,這些都還比較欠缺。所以這部分主要問題是我們這網絡是所有人共同組成的,它需要有個機制去決定哪些內容是好的,哪些內容是不好的,哪些內容是你會感興趣的,哪些內容可能是你不感興趣的,這其實是內容治理的一個問題。
下面這邊是我列的一些現有的改善方案,比如說第一個 labeling data。在這個 Nostr 上有一種專門的數據,是可以讓用戶自己去標記某一些數據它屬於什麼類型,或者說它的屬性有什麼。就通過這種 labeling 去給一個數據做一些標註,但是這個應用並不廣泛,因為很簡單,沒有人願意去幹這個事情。沒有人願意去充當你的這個 social member 去幫你做一些這種苦力活,很早期的互聯網社會有這種建設精神。現在其實大家更多可能作為消費者去使用,當然也有人提出說我可以做 API。我專門跑一些服務,我去搜集全網的一些公司的數據,然後我去做過濾或者做分類,去拿更可能好的一些消息發給用戶。這種方案是非常好做的,但是它有個巨大問題,就是這樣做著做著我們又回去了。就會變成說我不找 Nostr 這個協議要數據,而變成說我專門找一家工作得特別好的 API,找這個 API 的這個伺服器要數據。那這樣協議做著做著變成這個 API 後面又是另一家推特或者又是另一家微信,所以這個方案非常好。問題是大家不喜歡,你要是做這個的話所有人都會噴你。
還有一種方案叫 DVM,它想做的是通過 Nostr 協議去做一些使用協議規定好的接口去做這個數據的分類或者算法。它的大概意思是你給我一些閃電網絡的聰,然後我會返還給你你想要的數據,你規定好數據格式,但這個也有一些問題。
另一個是 Noscript,它是另一個想法,是我們直接把這些過濾的算法或者一些分類需要用到的技術把這些代碼直接也作為內容,直接放到 Nostr 上,讓 Relay 去存儲。然後客戶端直接拉這些代碼下來,在本地做一些本地能做的一些過濾或者做一些推薦。當然這個的話就發展得更不好,因為現在還只是有些 Idea,有些人在討論。
第三個比較嚴重的問題其實是一個創業的問題,PMF。現在 Nostr 的大量產品或者開發者他們找不到 PMF,因為他需要面對大量競爭。一方面是中心化的傳統的那些產品,另一方面可能是 Web3 區塊鏈這邊的。他們不發 token 也不幹嘛,所以它其實缺少一些商業模式,也面臨網絡效應這個問題。因為越少人遷過來,那就意味著更少人會繼續遷過來,所以 PMF 是一個很好的問題。
裡面最大的一个客戶端叫 Damus,不知道大家有沒有用過,它的開發者去年年底發了一條推,說 2024 年可能是 Damus 的最後一年。因為他快沒錢繼續再做下去,如果 2024 年還做不起來,還賺不到錢的話。所以這也是要給社交網絡的公共物品找到可持續發展的一個方向的問題吧。
其實這裡面所有問題,我覺得也是機會。 比如說像最後 PMF 這個,我覺得如果我們能有更多跟區塊鏈結合的一些地方,能有更走得通的一些商業模式,去跟區塊鏈基金做一些結合,可能可以解決這種公共物品的一個融資問題。
最後,我覺得 **Nostr 是一個新的開發 alternative applications 的一種方案。** 如果你想要做一些替代性的產品的話,可能不是只有兩個極端,一個極端叫 blockchain,一個極端叫 Twitter。不是只有這種,可能有個中間地帶叫 Nostr,它不是基於區塊鏈的,但它也不是專屬軟件。謝謝。