撰文:git-sgmoore 和fiatjaf(nostr)
編譯:DeFi 之道
注:近期一個名為nostr 的去中心化社交協議獲得了比特幣社區的追捧,這引來了Twitter 現任CEO Elon Musk 爭議性的封殺政策,同時讓Twitter 前任CEO Jack Dorsey 自掏14 BTC 為其提供資助,那nostr 到底有什麼魔力?
Twitter 的最新禁止政策
根據介紹,nostr 是一個最簡化的協議,它能夠一勞永逸地創建一個抗審查的全球“社交”網絡。
nostr 不依賴於任何受信中央服務器,其基於密碼學密鑰和簽名,並且不依賴於P2P 技術,它也不會發行token。
那它的運作原理是怎樣的呢?簡單來說:每個人都運行一個客戶端,這可以是本機客戶端、Web 客戶端等。要發布某些內容(比如一個帖子),你要用你的密鑰對其簽名,並將其發送到多個中繼器(由其他人或你自己託管的服務器)。要從其他人那裡獲得更新,你可以詢問多個中繼器是否了解這些其他人。任何人都可以運行中繼器,這是非常簡單的,除了接受某些人的帖子並轉發給其他人之外,它什麼都不做。我們也不需要信任中繼器,簽名是在客戶端進行驗證的。
1、如何開始使用Nostr
2、Nostr 客戶端功能比較
3、基於Nostr 的項目列表
一、其他解決方案存在的問題
1、Twitter 的問題
Twitter 有廣告;
Twitter 使用奇怪的技巧讓你上癮;
Twitter 不會顯示你關注的人的真實歷史動態;
Twitter 會禁止某些人的賬戶;
Twitter 會使用影子禁令( Shadowbans ).
Twitter 有很多垃圾信息;
2、Mastodon 和類似應用的問題
用戶身份附加在第三方控制的域名上;
服務器所有者可以像Twitter 一樣禁止你,服務器所有者也可以阻止其他服務器;
服務器之間的遷移是事後才考慮的,只有在服務器協作的情況下才能完成。它在對抗環境中不起作用(所有追隨者都會丟失);
運行服務器沒有明確的動機,因此它們往往由愛好者以及希望將自己的名字附加到一個很酷的域名上的人來運行的。然後,用戶受制於一個人的專制,這往往比Twitter 這樣的大公司還要糟糕,他們無法遷移出去;
由於服務器往往是業餘的,它們經常在一段時間後被拋棄——這實際上等同於禁止所有人;
如果每台服務器的更新都必須痛苦地推送(和保存!)到大量其他服務器,那麼擁有大量服務器就沒有意義了;這一點由於服務器數量龐大而加劇,因此更多的數據必須更頻繁地傳遞到更多的地方;
對於視頻共享的具體示例,ActivityPub 愛好者意識到完全不可能像文本註釋那樣在服務器之間傳輸視頻;
3、SSB(Secure Scuttlebutt)的問題
它沒有太多問題,我認為這很棒。事實上,我打算以此為基礎,但是它的協議太複雜了,因為它根本就沒有被認為是一個開放的協議。它只是用JavaScript 編寫的,可能是一種快速解決特定問題的方法,因此它有奇怪和不必要的怪癖,比如簽署一個JSON 字符串,其必須嚴格遵守ECMA-262 第6 版規則;
它堅持從單個用戶那獲得一連串的更新,這對我來說是不必要的,而且會增加內容的臃腫和僵化程度——每個服務器/用戶都需要存儲所有的帖子鏈,以確保新的帖子是有效的。為什麼要這麼做?(也許他們有很好的理由);
它不像Nostr 那樣簡單,因為它主要是為P2P 同步而設計的;
不過,可能值得考慮使用SSB 而不是這種自定義協議,並僅使其適應客戶端中繼服務器模型,因為重用標準總是比嘗試讓人們使用新標準更好。
4、其他要求運行服務器方案的問題
他們要求每個人都運行自己的服務器;
有時人們仍然會在這些方面受到審查,因為域名可能會受到審查;
二、Nostr 的運行原理
Nostr 有兩個組件:客戶端和中繼器。每個用戶運行一個客戶端,任何人都可以運行中繼器。
每個用戶都由公鑰標識,每個帖子都有簽名,每個客戶端都會驗證這些簽名。
客戶端從他們選擇的中繼器獲取數據,並將數據發佈到他們選擇的其他中繼器。中繼器不與另一個中繼器通信,僅直接與用戶通信。
例如,要“關注”某人,用戶只需指示他們的客戶端查詢它知道的中繼器,以獲取來自該公鑰的帖子。
在啟動時,客戶端從它知道的所有中繼器中查詢它所關注的所有用戶的數據(例如,從最近一天開始的所有更新),然後按時間順序向用戶顯示該數據。
“帖子”可以包含任何類型的結構化數據,但最常用的數據將進入標準,以便所有客戶端和中繼器可以無縫地處理它們。
三、Nostr 如何解決其他方案無法解決的問題?
問題1:用戶被禁止,服務器被關閉
中繼器可以阻止用戶在它那裡發布任何內容,但這對用戶來說沒有影響,因為他們仍然可以將內容髮佈到其他中繼器。由於用戶是通過公鑰識別的,因此當他們被禁止時,他們不會失去他們的身份以及粉絲基礎。
不需要用戶手動輸入新的中繼器地址(雖然這也應該被支持),每當你關注的人發布服務器推薦時,客戶端應該自動將其添加到它將查詢的中繼器列表中。
如果有人正在使用一個中繼器來發布他們的數據,但想要遷移到另一個中繼器,他們可以向之前的中繼器發布一個服務器推薦,然後離開;
如果有人被很多中繼器禁止,以至於他們無法廣播他們的服務器推薦,他們仍然可以通過其他方式讓一些親密的朋友知道他們現在正在發佈到哪個中繼器。然後,這些親密的朋友可以向新服務器發布服務器推薦,慢慢地,被禁用戶的舊粉絲群將開始從新的中繼器中再次找到他們的帖子。
當中繼器停止工作時,上述所有規定也都是有效的。
問題2: 抗審查
每個用戶都可以將他們的內容更新發佈到任意數量的中繼器。
中繼器可以向用戶收取費用(目前費用的協商不在協議範圍內)以在那裡發布,這確保了抗審查性。
問題3:垃圾信息
如果垃圾信息是中繼器要關注的一個問題,它可以要求為發布付費或其他形式的身份驗證(如電子郵件地址或電話),並將這些在內部與公鑰相關聯,然後將其發佈到該中繼器或使用其他反垃圾信息技術(如hashcash 或驗證碼)。如果一個中繼器被用作垃圾信息載體,它很容易被客戶端取消,客戶端可以繼續從其他中繼器獲取更新。
問題4: 數據存儲
為了讓網絡保持健康,不需要數百個活躍的中繼器。事實上,它只需要少數幾個就可以很好地工作,因為在現有中繼器開始出錯的情況下,可以很容易地創建新的中繼器,並在網絡中傳播。因此,所需的數據存儲量在一般情況下,要比Mastodon 或類似軟件要少。
或者考慮一個不同的結果:其中存在數百個由業餘愛好者運行的利基中繼器,每個負責一小群用戶的更新中繼工作。這種架構也可以擴展:數據從用戶發送到單個服務器,然後從該服務器直接發送到將使用該數據的用戶。它不必由其他任何人存儲。在這種情況下,對於任何單個服務器來說,處理來自其他服務器的更新都不是很大的負擔,擁有業餘服務器也不是問題。
問題5:視頻等重內容
中繼器很容易拒絕大數據的內容,或者對接受和託管大數據內容收費。當信息和激勵明確時,市場力量很容易解決這個問題。
問題6:顯示方式
每個客戶端都可以決定如何最好地向用戶顯示帖子,比如使用人工智能來決定你將看到的更新的順序,到只是按時間順序閱讀它們。
四、FAQ
1、這很簡單,那為什麼以前沒有人這樣去做?
答:我不知道,但我想這與以下事實有關:創建社交網絡的人要么是想要賺錢的公司,要么是想完全沒有服務器就做東西的P2P 積極分子,他們都沒有看到Nostr 使用的兩個世界的特定組合。
2、我如何找到要關注的人?
答:首先,你必須了解他們,並以某種方式獲得他們的公鑰,無論是通過詢問還是在某處看到。進入Nostr 社交網絡後,你就可以看到他們與其他人的互動,然後你也可以開始關注這些人並與之互動。
3、我怎麼找到中繼器?如果我沒有和別人連接到相同的中繼器會發生什麼?
答:你將無法和那個人交流。但是可以使用事件提示,以便你的客戶端軟件(或你手動)知道如何連接到其他人的中繼器並與它們交互。未來也有其他的想法來解決這個問題,但我們永遠不能保證完美的可達性,任何協議都不能。
4、我可以知道有多少人在關注我嗎?
答:不,但是如果中繼器以額外的協議方式協作,你可以獲得一些估計值。
5、人們運行中繼器的動機是什麼?
答:這個問題具有誤導性,它假設中繼器是免費的,人們可以通過它們移動數據。是的,在這種情況下,激勵機制並不存在。這實際上也適用於所有其他p2p 網絡堆棧中的DHT 節點: 人們有什麼動機去運行DHT 節點?
6、如果中繼器只是在AWS 或Azure 上,那又有什麼區別?
答:今天,全球有成千上萬的VPS 提供商,而不僅僅是AWS 或Azure 這兩家。 AWS 或Azure 正是大規模的單一中心化服務提供商所使用的提供商,而對於較小的中繼服務器,任何VPS 都可以很好地完成這項工作。
協議規範
請參閱NIP,尤其是NIP-01,以獲得對協議規範的合理詳細解釋(提示:它非常簡短)。