01摘要
本文將討論,如何使用Nostr協議構建一個既安全又促進去中心化的基礎”社交網絡”應用。
基礎的應用程序:
假設一個基礎的”社交網絡”應用就像Twitter一樣。在twitter上,人們有3個page。
主頁動態:顯示你關注的每個人的動態。
個人Profile:個人資料視圖,顯示該用戶的所有動態。
回复:顯示對某一特定動態的所有回复。
一些Nostr客戶端可能還想提供另一種體驗,即顯示所有人posts的全局流(Global Feed)。
中繼(Relays)的簡單分類:
假設現有的中繼可以分為三類:
- 充滿垃圾郵件的中繼:任何人都可以發布任何類型的內容,沒有過濾;
- 安全中繼:存在一些進入障礙,例如需要付費或需要一些繁瑣的用戶註冊過程,垃圾郵件發送者或發布不良內容的人被禁止- 但這仍然是一個基本上對任何人開放的中繼;
- 封閉式中繼:只有特定類型的人才能進入,例如,一群朋友或封閉式在線社區的成員。
如何關注和查找特定人資料中的帖子:
當一個用戶開始關注某人時,可以通過4種不同的方式進行。
- 從應用程序中看到這個人
- 使用nprofile URI
- 使用一個NIP-05地址
- 使用一個Bear的pubkey(’npub’)
情況1
當一個用戶開始關注某人時,可以通過4種不同的方式進行。
- 發生在你或其他人的帖子的回復中
- 全局feed帖子中
- 從其他人引用或重新發布的帖子中看到該人
當這種情況發生時,預計引用(在e和p標籤中)包含中繼的URL,以便在第一次接觸時將該人與一個中繼URL聯繫起來。
情況2和3
在情況2 和3 中,nprofile 和NIP-05 地址都應該包含該人的首選中繼列表,因此我們可以基於此為該人引導中繼列表。
情況4
在情況4 中沒有中繼列表,因此要么通過彈出窗口或其他方式提示用戶,要么嘗試在已知的中繼之一中搜索該公鑰。這仍然是備選方案。
一旦有了給定配置文件的中繼URL,就可以使用這些中繼從該公鑰查詢註釋。隨著時間的推移,該用戶可能會遷移到其他中繼,或者可能會知道該用戶也正在向其他中繼發帖。為了確保發現這些東西,我們必須注意在任何地方看到的所有事件的標籤中發送的提示- 來自任何人- 以及類型2 和3 的事件,並相應地升級我們擁有配置文件和中繼之間關係知識的本地數據庫。
實現應用視圖
根據我們目前收集到的信息,我們可以輕鬆呈現主頁和個人資料視圖。為此,它僅使用有關配置文件和中繼之間關係的本地信息並獲取註釋:
- 對於主頁,來自我們關注的所有人
- 對於個人資料視圖,僅來自該特定個人資料
由於我們要從中繼獲取非常具體的數據,我們並不關心是否安全的,因為我們可以選擇過濾垃圾郵件的中繼。
現在,每當用戶點擊一條動態時,我們都希望顯示回复狀態。在這種情況下,我們將只查詢安全和關閉的中繼,否則垃圾郵件可能會注入到應用程序中。相同的原則適用於全局feed。
其他啟發和極端情況
本文並沒有涵蓋許多極端情況。這只是為了描述一種對於去中心化的Nostr 來說足夠穩健的方式。
例如,如何顯示某人引用的筆記?如果它有中繼提示,我們查詢該中繼。如果沒有,我們可以嘗試與剛剛提到它的人相關聯的中繼,或者我們剛剛看到提到它的註釋的同一個中繼——因為,當提到它時,有人可能直接將它發佈到自己的中繼——等等。
最後的想法
比所有這些更重要的是,我們必須牢記,Nostr只是一組非常鬆散的服務器,它們之間基本上沒有任何联系,沒有任何保證,而與他人保持聯繫和尋找內容的過程必須通過許多不同的Hackers嘗試來解決。要編寫Nostr應用程序和使用Nostr,就必須接受現在的混亂。
致謝
DAOrayaki DAO研究獎金池:
資助地址: DAOrayaki.eth
投票進展:DAO Committee 3/0 通過
研究種類:DAO, Governance
貢獻者:DAOctor@DAOrayaki
審核者:Yofu @DAOrayaki
原文:A vision for content discovery and relay usage for basic social-networking in Nostr