Nostr 協議架構

深入分析 Nostr 協議架構,包含 relay 類型、存儲策略、客戶端選擇指南與隱私保護實作,含 Tor 整合與加密 DM 實作教學。

Nostr 協議架構深度解析:中繼器設計、客戶端實現、密碼學基礎與比特幣整合實踐

摘要

Nostr(Notes and Other Stuff Transmitted by Relays)是一個由比特幣開發者 fiatjaf 設計的去中心化社交協議,其核心理念是構建一個抗審查、無需許可的開放社交網路。本篇文章深入剖析 Nostr 協議的技術架構,涵蓋中繼器(Relay)網路設計與類型、客戶端實現與用戶體驗、事件模型與 NIP 協議規範、密碼學安全機制、隱私保護策略,以及 Nostr 與比特幣生態系統的深度整合。作為比特幣愛好者的首選社交協議,Nostr 在隱私保護與抗審查特性上的設計值得深入研究。本文旨在為比特幣開發者、密碼朋克與社交媒體研究者提供全面的技術參考。

1. Nostr 協議概述與設計理念

1.1 為什麼需要 Nostr

傳統社群媒體平台(如 Twitter、Facebook、Instagram)存在諸多根本性問題:

中心化控制

平台運營商可以單方面刪除內容、停用帳戶、決定演算法推薦。用戶的粉絲、內容與社交關係完全依賴於平台的善意。

審查風險

政治敏感話題、批評性言論、邊緣群體的聲音常常遭受平台審查。在某些國家,平台配合政府要求進一步限制了言論自由。

資料所有權缺失

用戶的社交數據、互動記錄、創意內容被平台據為己有,用於廣告變現,而創作者往往得不到合理補償。

鎖定效應

用戶難以遷移到其他平台,因為社交關係網路綁定在特定平台上。

Nostr 的設計目標是解決上述問題,創建一個:

1.2 協議設計哲學

Nostr 的設計極度簡潔,這是其成功的關鍵因素之一。協議核心只有兩個角色:

  1. 客戶端(Client):用戶使用的軟體,用於簽署事件、發送至中繼器、讀取來自中繼器的事件
  2. 中繼器(Relay):輕量級伺服器,儲存與分發事件,不執行任何驗證邏輯

中繼器之間不通信,客戶端同時連接多個中繼器。這種「星型拓撲」結構極度簡單,避免了分布式系統中的複雜共識問題。

簡潔性的代價

1.3 與其他去中心化社交協議的比較

協議技術架構抗審查能力隱私性生態成熟度
Nostr中繼器星型拓撲中(依賴中繼器選擇)
ActivityPub聯邦式(Federation)
SSB (Secure Scuttlebutt)對等網路(Gossip)
Bluesky AT Protocolrepo-based federation
MastodonActivityPub federation

Nostr 在「簡潔性」與「抗審查性」之間取得了良好平衡,使其成為比特幣社群等技術社群的首選。

2. 密碼學基礎:公鑰作為身份

2.1 身份模型

Nostr 的身份系統極度創新:用戶的公鑰(Public Key)就是其帳戶身份,私鑰(Private Key)控制帳戶的完全訪問權。

為什麼使用橢圓曲線密碼學

Nostr 採用 Secp256k1 橢圓曲線(與比特幣相同),這使得:

公鑰格式

Nostr 使用 Bech32 編碼格式(如 npub1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3q4htwa2x5kg7f9qqgrah5),與比特幣的 bc1 地址同源的編碼方式。

私鑰管理

用戶的 Nostr 私鑰應當被視為最高安全等級的秘密。丟失私鑰意味著永久失去帳戶訪問權,洩露私鑰則帳戶完全被盜。

2.2 簽名機制

Nostr 事件使用 ECDSA 簽名(Secp256k1)進行身份驗證。每個事件包含一個簽名字段,客戶端與中繼器可驗證事件確實由公鑰對應的私鑰簽署。

事件簽名格式

{
  "id": "<32-byte lowercase hex-encoded sha256 of the serialized event data>",
  "pubkey": "<32-byte lowercase hex-encoded public key>",
  "created_at": 1234567890,
  "kind": 1,
  "tags": [],
  "content": "Hello, Nostr!",
  "sig": "<64-byte lowercase hex-encoded signature>"
}

簽名驗證流程

  1. 提取事件中的 pubkeysig
  2. 移除 sig 欄位,重新計算事件內容的 SHA-256
  3. 使用 pubkey 驗證簽名有效性

2.3 委託機制(NIP-26)

NIP-26 定義了委託(Delegation)機制,允許用戶將部分發布權限委託給其他公鑰,而不洩露完整私鑰。

委託用途

委託實現

委託者創建一個特殊事件,聲明對另一公鑰的委託授權,包含委託的有效期與權限範圍。

3. 事件模型與資料結構

3.1 事件類型(Kind)

Nostr 事件是目前已知宇宙中最豐富多彩的資料結構之一。以下是主要的事件類型:

Kind 0:元數據(Metadata)

{
  "kind": 0,
  "content": "{\"name\": \"Alice\", \"about\": \"Bitcoin maximalist\", \"picture\": \"https://...\"}",
  "tags": []
}

用於發布用戶的個人資料資訊,如暱稱、自我介紹、頭像 URL。

Kind 1:文字筆記(Text Note)

{
  "kind": 1,
  "content": "This is my first Nostr post!",
  "tags": []
}

這是 Nostr 上最基本、最常見的事件類型,相當於 Twitter 的推文。

Kind 2-3:聯繫人列表(Contact List)

{
  "kind": 3,
  "content": "",
  "tags": [["p", "<pubkey1>", "wss://relay1/", "alice"], ["p", "<pubkey2>"]]
}

用於發布關注列表(Following),客戶端據此構建社交圖譜。

Kind 4:加密直接訊息(Encrypted DM)

{
  "kind": 4,
  "content": "<encrypted payload using recipient's pubkey>",
  "tags": [["p", "<recipient pubkey>"]]
}

用於點對點加密訊息,只有接收方可以解密閱讀。

Kind 6-7:通用意義替換(Generic Replaceable Events)

Kind 6:用於替換 Kind 7 的文章

Kind 7:用於替換 Twitter 推文的長文章(Kind 30023 等)

Kind 8:反應(Reaction)

{
  "kind": 8,
  "content": "+",
  "tags": [["e", "<event-id>"]]
}

對特定事件表示喜歡("+")或踩("-")。

Kind 9734-9735:Zap(閃電支付打賞)

Kind 9734:Zap 請求

Kind 9735:Zap 收據

Kind 30023:長文章(Long Form Content)

用於發布長篇幅文章(如部落格文章),支援 Markdown 格式。

3.2 標籤系統(Tags)

Nostr 事件的靈活性很大程度來自其標籤系統。標籤以二維陣列形式存在,每個標籤包含標籤類型與相關參數:

標籤類型用途範例
p提及公鑰["p", "npub1...", "wss://relay/", "alias"]
e提及事件 ID["e", "", "wss://relay/"]
t主題標籤["t", "bitcoin"]
r引用 URL["r", "https://..."]
a可替換事件引用["a", "30023::", "wss://relay/"]

3.3 可替換事件(Replaceable Events)

可替換事件是 Nostr 的一個重要特性。Kind 編號大於 10000 的事件被視為「可替換」,同一用戶的同類事件僅保留最新的一個。

典型應用

d 標籤

可替換事件可包含 d 標籤("d" for "directory"),用於區分同一用戶的多個可替換事件:

{
  "kind": 30023,
  "tags": [["d", "my-blog-post-1"]],
  "content": "..."
}

4. 中繼器(Relay)深度分析

4.1 中繼器角色與功能

中繼器是 Nostr 網路的基礎設施,其功能極度簡單:

這種「啞管道」(Dumb Pipe)設計使得中繼器的實現極度簡單,可以用任何語言、任何平台快速開發。

4.2 中繼器類型

公共中繼器

開放給所有人使用的中繼器。著名公共中繼器包括:

公共中繼器通常由個人或組織志願運營,沒有收入來源。

付費中繼器

要求用戶支付比特幣或法定貨幣才能使用的訂閱制中繼器。付費中繼器通常提供:

特異化中繼器

專門服務特定用途或社群的中繼器,如:

個人中繼器

用戶自行部署的中繼器,僅服務自己與指定的對象。這種中繼器提供了最高程度的隱私保護。

4.3 中繼器費用模型

中繼器運營涉及伺服器成本與頻寬成本,以下是常見的費用模式:

免費模式

依靠志願者、慈善組織或平台引流需求支持。這是最常見的早期模式。

比特幣閃電網路付費

用戶透過閃電網路向中繼器支付微額費用。這種模式的優勢是:

訂閱制

用戶每月支付固定費用(如 $5/月)換取中繼器服務。

POW 驗證

用戶需要執行一定量的工作量證明(Proof of Work)才能發布,阻止垃圾訊息。

4.4 中繼器連接策略

客戶端連接中繼器的策略會顯著影響用戶體驗與隱私:

廣泛連接

連接 10-20 個公共中繼器,最大化內容覆蓋,但隱私較差(中繼器可觀察用戶的完整社交圖譜)。

精選連接

只連接 3-5 個可信中繼器,提供更好的隱私,但可能遺漏部分內容。

Tor/隱私網路連接

透過 Tor 洋蔥路由連接中繼器,隱藏 IP 地址,增強隱私。

5. 隱私保護機制深度解析

5.1 威脅模型分析

Nostr 的隱私威脅主要來自以下幾個方面:

中繼器觀察

中繼器可以看到事件的完整內容、發布者的 IP 地址、以及訂閱篩選條件。惡意中繼器可以:

客戶端追蹤

客戶端可能記錄用戶的活動、用戶設備指紋、並回傳至第三方伺服器。

元資料洩露

即使內容加密,元資料(發布時間、接收者標籤、事件大小)也可能洩露敏感資訊。

5.2 NIP-04 加密直接訊息

NIP-04 定義了 Nostr 上的點對點加密訊息機制:

加密流程

  1. 發送方使用接收方公鑰加密訊息內容
  2. 加密後的 payload 作為事件內容發布到中繼器
  3. 接收方讀取事件,解密後獲得原始訊息

加密算法

NIP-04 使用 ECDH(Elliptic Curve Diffie-Hellman)金鑰交換,結合 AES-256-CTR 對稱加密。

缺陷與 NIP-04 的替代方案

原始 NIP-04 存在一些密碼學設計缺陷(如缺少訊息完整性保護)。後續提出了 NIP-44 作為更安全的替代方案。

5.3 NIP-44 安全訊息標準

NIP-44 是 NIP-04 的安全改進版本,主要改進包括:

更強的金鑰派生

使用 HKDF(HMAC-based Key Derivation Function)從 ECDH 共享金鑰派生加密金鑰。

訊息完整性保護

包含 HMAC 標籤,防止內容篡改。

前向安全

支援金鑰輪換,減少單一金鑰洩露的影響。

大小混淆

加密 payload 包含隨機填充,防止大小分析攻擊。

5.4 Tor 整合與洋蔥路由

比特幣社群重視 Tor 整合,Nostr 客戶端同樣支援透過 Tor 連接中繼器:

連接方式

// 客戶端配置使用 Tor 代理
{
  relayUrls: [
    'wss://relay.example.onion'  // 洋蔥地址
  ],
  proxy: 'socks5://127.0.0.1:9050'  // Tor 代理
}

隱私收益

局限性

5.5 隱私最佳實踐

  1. 使用專用 Nostr 密鑰:避免將比特幣主錢包用於 Nostr
  2. 多個身份分離:使用不同密鑰處理不同社群
  3. 中繼器選擇:優先使用可信的、Tor 托管的中繼器
  4. 內容加密:敏感內容使用 NIP-44 加密
  5. 避免 IP 指紋:使用 VPN 或 Tor 隱藏真實 IP

6. Nostr 與比特幣深度整合

6.1 閃電打賞(Zap)

Zap 是 Nostr 最具比特幣特色的功能,允許用戶向內容創作者進行比特幣閃電網路微支付打賞。

Zap 工作流程

  1. 接收方在個人資料中設定閃電地址(Lightning Address,如 alice@bitcoinplebs.com)
  2. 發送方點擊 Zap 按鈕,客戶端生成 Zap 請求事件
  3. 客戶端使用 LNURL 協議向接收方的閃電地址發起支付請求
  4. 支付完成後,發送方客戶端發布 Zap 收據事件(Kind 9735)
  5. 接收方客戶端監聽 Zap 收據,通知接收方

Kind 9734 vs Kind 9735

Zap 的經濟意義

Zap 為內容創作者提供了一種去中心化、即時、全球化的收入方式,打破了平台對廣告收入和付費訂閱的壟斷。

6.2 Lightning Address 整合

Lightning Address 是一種類似於 Email 地址的閃電支付識別符:

格式username@domain.com

解析流程

  1. 付款方輸入 Lightning Address
  2. 客戶端向 https://domain.com/.well-known/lnurlp/username 發起 HTTP 請求
  3. 伺服器返回付款上限與 Invoice 生成 URL
  4. 客戶端生成 Invoice,完成支付

Nostr 應用

大多數 Nostr 客戶端支援在用戶資料中設定 Lightning Address,粉絲可以直接向該地址支付,或透過 Zap 功能在 Nostr 內直接打賞。

6.3 比特幣錢包直接登入

比特幣友善的 Nostr 客戶端支援直接使用比特幣錢包登入:

Alby 瀏覽器擴充

Alby 是一款專為比特幣設計的瀏覽器錢包,內建 Nostr 支援。用戶可以直接使用 Alby 中管理的比特幣密鑰作為 Nostr 身份,無需額外創建 Nostr 專用密鑰。

流程

  1. 用戶安裝 Alby 擴充
  2. 在支援的 Nostr 客戶端中選擇「使用 Alby 登入」
  3. Alby 彈窗確認,用戶同意使用其公鑰
  4. 客戶端使用 Alby 的私鑰進行事件簽署

安全性

6.4 NWC 與閃電網路隱私

NWC(NIP-47 Wallet Connect)是 Nostr 的一個重要協議,定義了客戶端如何代表用戶與閃電網路節點交互:

使用場景

工作流程

  1. 用戶在 Alby 等錢包中創建 NWC 連線,獲得連線 URI
  2. 第三方客戶端使用 URI 建立連線
  3. 客戶端發起的支付請求由用戶錢包確認與執行

6.5 比特幣原生的聲譽系統

比特幣在鏈上累積的經濟歷史可以用於 Nostr 的聲譽系統:

閃電網路節點聲譽

在 Nostr 上運行閃電節點的用戶,其節點的比特幣年齡、Liquidity、可靠性等指標可以作為聲譽參考。

Ordinals 收藏與活動

用戶持有的 Ordinals NFT、BRC-20 代幣可以展示其比特幣文化參與度。

閃電網路支付記錄

透過 Zap 累計收到的比特幣數量可以作為內容價值的市場信號。

7. 客戶端實現深度解析

7.1 Damus

Damus 是最早一批 Nostr 客戶端之一,以其功能完整性和比特幣友好特性聞名:

主要功能

平台支援

7.2 Snort

Snort 是一款輕量級的 Web 客戶端,強調速度與簡潔性:

設計特點

功能

7.3 Amethyst

Amethyst 是 Android 平台的功能最完整的 Nostr 客戶端之一:

主要功能

7.4 Iris

Iris 是一款強調社交圖譜可視化的 Nostr 客戶端:

特色功能

7.5 客戶端開發者工具

nostr-tools

JavaScript/TypeScript 開發套件,支援 Nostr 事件的創建、驗證、發布。

nostr-hooks

React Hooks 庫,簡化 Nostr 客戶端的 React 開發。

nostr-sdk

Rust 語言 SDK,支援後端服務開發。

8. NIP 協議標準全景

NIP(NIPs = Nostr Implementation Possibilities)是 Nostr 協議的改進提案系統。以下是主要 NIP 的概覽:

NIP 編號名稱狀態描述
NIP-01基本協議穩定核心事件格式與中繼器互動
NIP-02聯繫人列表穩定Kind 3 關注列表
NIP-04加密訊息穩定Kind 4 加密 DM
NIP-05密鑰到 DNS穩定將公鑰映射到域名
NIP-06助記詞導入導出穩定BIP-39 助記詞支援
NIP-07NIP-07 window.nostr穩定客戶端錢包整合
NIP-09事件刪除穩定Kind 5 刪除請求
NIP-10事件中的 e 標籤穩定引用標籤約定
NIP-11中繼器資訊文檔穩定中繼器元資料
NIP-12自由標籤穩定通用標籤查詢
NIP-13工作量證明穩定抗垃圾 PoW
NIP-14主題標籤穩定#t 話題標籤
NIP-15Nostr Marketplace穩定商品列表事件
NIP-18轉發穩定轉發事件
NIP-19bech32 格式穩定npub/nsec 編碼
NIP-21nostr: URL 方案穩定URL 格式
NIP-23結構化內容穩定Markdown/JSON 内容
NIP-24額外屬性穩定事件額外欄位
NIP-25反應穩定Kind 7 反應
NIP-26委託穩定Kind 3 委託
NIP-28公共聊天穩定聊天室事件
NIP-36敏感內容實驗內容標註
NIP-40到期實驗事件過期
NIP-42中繼器認證穩定認證流程
NIP-44加密 Payload v2實驗改進加密訊息
NIP-46NIP-46 Nostr Connect穩定遠程錢包控制
NIP-47NIP-47 Wallet Connect穩定Zap 支付整合
NIP-48標籤方實驗話題角色
NIP-50關鍵字搜索實驗全文搜索
NIP-51投票實驗調查事件
NIP-52日曆事件實驗日曆事件
NIP-53直播活動實驗直播事件
NIP-56舉報實驗舉報事件
NIP-57Lightning Zaps穩定Zap 機制
NIP-58Badges實驗徽章系統
NIP-65列表事件穩定Kind 30000/30001
NIP-68圖片引用優化實驗圖片標籤優化
NIP-72重新定義 e 標籤實驗標籤約定修訂
NIP-75Zap 目標實驗Zap 分配
NIP-78應用自訂元資料實驗應用元資料
NIP-84公共根公告實驗推文集
NIP-89應用推薦實驗應用公告
NIP-90資料徵集實驗付費查詢
NIP-94文件頭實驗檔案事件
NIP-96HTTP File Storage Integration實驗檔案上傳中繼
NIP-98HTTP 認證實驗私有檔案
NIP-99分類廣告實驗市場列表

9. Nostr 生態系統數據(2025-2026)

9.1 網路規模統計

指標2024 Q12025 Q12026 Q1
公共中繼器數量~1,000~3,000~5,000
活躍公鑰數~50,000~500,000~2,000,000
日均事件數~500,000~5,000,000~15,000,000
Nostr 客戶端數量~20~100~200
Zap 總量(BTC)~50~500~2,000
Lightning Address 數~10,000~100,000~500,000

9.2 生態亮點項目

Damus

iOS/Android 客戶端,下載量超過 100 萬次,Bitcoiners 首選社交 App。

Highlighter

比特幣教育內容平台,基於 Nostr 構建。

Zap.stream

比特幣直播平台,結合 Nostr 與閃電支付。

Nostr.build

Nostr 內容聚合器,展示創意內容。

Nsec Bunker

NIP-46 遠程簽署服務,提供安全的密鑰管理。

10. 未來發展方向

10.1 技術改進方向

更安全的加密訊息

NIP-44 作為 NIP-04 的替代方案正在推廣,未來可能出現更多安全增強。

更好的中繼器激勵

隨著閃電網路的普及,中繼器可能開始使用比特幣 Micropayment 機制獲得收益。

Nostr 原生身份系統

類似於 ENS(Ethereum Name Service),Nostr 可能發展出原生的名稱系統。

增強隱私

混洗交易所(Mixers)、洋蔥路由增強、追蹤保護等隱私功能將持續完善。

10.2 應用場景拓展

去中心化部落格平台

基於 Nostr Kind 30023 的長文章功能,開發者正在構建完整的部落格生態。

去中心化電子商務

NIP-15 市場標準支援商品列表,未來可能出現 Nostr 原生的電商平台。

企業內部通訊

企業可以使用 Nostr 架構部署私有社交網路,保留抗審查特性的同時符合合規要求。

遊戲與虛擬世界

去中心化社交與遊戲的結合,Nostr 可能成為 Web3 遊戲的社交層。

11. 結論

Nostr 代表了一種全新的社交網路範式,其基於公鑰密碼學的極簡設計為用戶提供了真正的數位主權。儘管協議本身仍在快速演進中,其核心架構已被證明穩健且具有生命力。

對於比特幣社群而言,Nostr 的價值不僅在於其作為比特幣友善的社交平台,更在於其展示了一種「密碼學第一」(Cryptography-first)的網路設計思路。這種思路與比特幣的去中心化、安全、無需許可的價值觀高度契合。

展望未來,隨著閃電網路的持續普及與比特幣愛好者社群的蓬勃發展,Nostr 有望成為比特幣生態系統中不可或缺的社交基礎設施,為全球比特幣用戶提供一個安全、私密、自由的交流空間。


標籤:Nostr、比特幣、閃電網路、去中心化社交、Zap、Lightning Address、中繼器、隱私保護、NIP 協議、抗審查、密碼學

相關文章

本文包含

延伸閱讀與來源

這篇文章對您有幫助嗎?

評論

發表評論

注意:由於這是靜態網站,您的評論將儲存在本地瀏覽器中,不會公開顯示。

目前尚無評論,成為第一個發表評論的人吧!