作者:NWC Docs
“Nostr Wallet Connect(NWC)” 協議提供了一種辦法,讓一個客戶端 app 可以通過一套標準化的協議來遠程訪問一個比特幣閃電錢包軟件。錢包軟件和 app 有此意願,是為了讓用戶能夠流暢地訪問自己的錢包賬戶、用於 app 中的簡單支付。
NWC:一套免費而且開放的協議
NWC 是一套免費而且開放的協議。這一點非常關鍵,因為它帶來了多種優勢:
- 任何人都可以使用 NWC。
- 實現基於 NWC 的支付不會陷入供應商鎖定。
- NWC 更加靈活,而且在現有 app 和新 app 中的集成選擇也更多。
採用 NWC 的 app 可以強化自身的易用性和創造性。最重要的是,這保證了你的 app 跟整個生態系統是可以互操作的,從而可以從網絡效應的增強中獲益。
NWC 建立在比特幣的閃電網絡之上
比特幣是一種去中心化的電子貨幣,支持點對點的支付,而且不需要依賴於銀行和中間商。閃電網絡則是比特幣之上的二層協議,支持即時、低手續費的支付,它讓交易在次級網絡中轉發(而不是在比特幣網絡中得到確認),同時繼承了比特幣的安全保障。兩者共同為一個全球的開放金融系統提供了一個強大的基礎。它們是天作之合,因此也是 NWC 的首選支付協議。
請注意,NWC 只決定支付內容如何在 app 和錢包軟件之間傳遞。NWC 可以支持任何支付網絡。實際上,也可以支持比特幣的鏈上交易和多種貨幣的支付。
為什麼它叫做 “Nostr Wallet Connect”?
如文章開頭所述,NWC 提供了讓 app 連接錢包軟件的一種方法,這也是它的名字的來源。“Nostr” 是 NWC 的支撐性技術之一。Nostr 自身是一種簡單、開放的協議,讓抗審查、去中心的消息流可以建立在公鑰密碼學和消息轉發服務器之上。它並不依賴於一箇中心化的服務器或者網關。NWC 使用 Nostr 協議的轉發技術和公鑰密碼學,來保護 app 和錢包軟件之間往來的下車。
作為一個啟用了 NWC 的錢包軟件的終端用戶,你不需要知道關於底層轉發技術的任何東西,甚至不需要持有你自己的 Nostr 密鑰。就像電子郵件服務商不會在用戶界面中展示 SMTP 協議,你的錢包軟件和連接它的 app 會處理信息交互。
工作流程(概述)
以某個 Nostr 消息轉發服務器(relay)為橋樑、建立會話之後,app 和錢包軟件就可以交互。Relay 提供了一種可靠且高效的辦法來連接閃電節點,無需使用洋蔥網絡或者暴露節點到公網(clearnet)中。
如果用戶希望執行一個操作(例如,支付閃電發票 pay_invoce),那麼交易會由 app 前段準備好、序列化和加密,然後發送給 relay。Relay 會轉發給錢包應用。錢包應用讀到來自 relay 的消息之後,解密交易並展示給錢包用戶,或者自動執行操作。在整個過程中,relay 只是協助通信,但所有的請求都是加密的,relay 無法讀取。
工作流程(逐步分解)

- 用戶使用自己的客戶端應用,掃描由錢包服務器生成的一個 QR 碼,他們會進入一個
nostr+walletconncet:深鏈接(deeplink),或者手動配置連接的信息。這個建立連接的步驟只發生一次。 - 這個客戶端應用收取來自各種來源(比如 NWC 自身或者 LNURL)的發票。
- 客戶端應用通過一個 relay 向錢包服務器發送一個事件。事件的內容是一個
pay_invoice請求。其中用到的私鑰來自前面所說的連接字符串。 - Relay 轉發
pay_invoice請求給錢包服務器。 - 錢包服務器驗證事件的作者公鑰,然後解密消息、發送支付。
- 錢包服務器給客戶端應用回覆一條具體的事件,內容要麼吃報錯消息,要麼是支付發票所得到的原像。
給應用開發者帶來的好處
輕鬆快捷的實現
使用清楚、說明詳盡的 API,幾分鐘就可以集成 NWC。可以專注於開發特性,而不是基礎設施。
免費和開放
NWC 是開源的,而且免費使用 —— 沒有許可費、供應商鎖定和隱性成本。
無託管
消除託管用戶資金的需要。讓錢包軟件來處理錢的事情,你的應用只是協調安全操作。
靈活
使用 NWC,既可以獲得完整的錢包使用體驗,也可以只使用一部分特性(比如發送和收取支付)。它的設計是模塊化的。
互操作性
可以連接到任何支持 NWC 的比特幣錢包軟件。一套協議,多種錢包軟件 —— 不需要定製化的集成。
平臺獨立
跨環境工作:移動 app、網頁後臺、命令行工具、桌面應用 —— NWC 不挑食。
持續連接
一旦連接建立,只要用戶的錢包軟件在線,你的應用就能連接它,無需用戶再配置。
給用戶帶來的好處
便捷的應用內支付
一口氣完成支付 —— 不需要掃描 QR 碼,不需要切換 app、不需要手動確認。
更快上手
只要錢包軟件支持 NWC,用戶就能即時連接 —— 不需要登錄、KYC 和啟動步驟。只要錢包裡有錢,就準備好支付了。
單一錢包,便於管理
用戶可以在多個應用中使用同一個錢包 —— 不需要為每一個應用單獨 “充值”。
NWC 功能
發送支付
發起單筆支付、批處理交易,甚至自動定期支付。
收取支付
實時顯示支付請求和收款請求。適合打賞、應用內付費、捐贈。
錢包餘額
在你的應用內查詢和顯示被連接的錢包的實時餘額。
支付歷史
列出入賬和出賬支付。
支付驗證
自動檢查支付的狀態 —— 待定、完成或失敗。

