Nostr 綁定協議,帶來基於鏈上機制的新可能性
Web5 的三層結構:
關於 Nostr
Nostr 是一種簡單且開放的信息分發協議,它使用中繼-客戶端模型在全球網絡中分發標準消息。中繼-客戶端模型類似於區塊鏈中的 P2P 網絡,但更便宜、更靈活、更實用(也更集中化),更適合用來打造消費級應用的大規模採用。標準消息是 Nostr 的核心創新。Nostr 基於 JSON 定義了一種標準的消息格式(這個消息格式同時也是協議的基本數據結構),用於描述各種不同的數據。它被稱為"Event"。
Event 結構:
Event 是一個包含任意內容並由用戶簽名的數據片段,因此可以在客戶端進行驗證,而無需信任任何中繼伺服器。你在 Nostr 協議中發布的所有消息都是不同種類和要求的 Event。你可以從 NIPs 了解更多關於 Nostr 的信息。
關於 CKB
CKB 是比特幣的二層網絡,具有類 UTXO 和 POW 的設計。CKB 的基本數據結構稱為 Cell。Cell 是一種具有強大可編程性的通用 UTXO。
Cell 結構:
Script結構:
你可以從 docs.nervos.org 了解更多關於 CKB 的信息。
綁定
所謂的綁定,就是在 Nostr Event 和 CKB Cell 之間創建一對一的映射關係。Event 用於定義你資產的詳細信息,而與這個 Event 互相映射的 Cell 則用於提供所有權的保護和其他區塊鏈特定的能力。要創建這種一對一映射,你需要讓一個 Nostr Event 指向一個 CKB Cell,反之亦然。由於 Nostr 和 CKB 協議的簡單性,創建這種綁定非常容易。
我們需要的只是兩個 Script
我們在 Nostr 綁定協議中引入了兩個 CKB Script。第一個是 Nostr binding Script,它是一個 Type Script,定義了從 Nostr 協議的 Event 綁定到 CKB 上的方法。它是一個非常簡單的 Script,但涵蓋了綁定的核心邏輯。第二個是 Nostr lock Script,一個使用 Nostr Event 作為解鎖簽名的 Lock Script。它用於簡化用戶體驗和構建基於 CKB 的 Nostr dApp 的過程。
Nostr binding Script
Nostr binding Script是一个Type Script,用于定义从 Nostr 协议的某些特殊 Event 绑定到链上的规则。Nostr binding Script 确保使用该 Script 作为 Type Script的 Cell 是 CKB 区块链中唯一存在的一个与特定的 Nostr Event 绑定的 live Cell。
binding Script:
- TYPE_ID 用於確保區塊鏈中只有一個 live Cell 具有這種 type hash
- NOSTREVENTID 用於確保該 Cell 只指向一個唯一的 Nostr Event
使用 Nostr binding Script 作為 Type Script的 Cell 是 Nostr Event 的綁定 Cell。
Nostr 綁定的 Event 結構:
- celltypeid 標籤在 Nostr 資產 Event 中確保該 Event 只指向一個唯一的 CKB Cell
Nostr 資產 Event 呈現了用戶鑄造的資產。Nostr 資產元數據 Event 用於描述同一資產集合的元數據。
Nostr 資產元數據 Event 結構:
Nostr Lock Script
Nostr lock Script 是一個使用 Nostr Event 作為解鎖證明的 Lock Script。它用於簡化用戶體驗和構建基於 CKB 的 Nostr dApp 的過程。
Nostr lock Script結構:
- args 設置為 Nostr 賬戶的公鑰。你也可以在最後 4 個字節中添加一個 POW 值,這意味著解鎖 Event 必須滿足一定的 POW 難度。
- 當 args 是 32 個字節全為 0 時,意味著沒有人可以解鎖該鎖。
- 當前 32 個字節全為 0,最後 4 個字節是非零值時,意味著該鎖可以被任何 Nostr 賬戶解鎖,只要解鎖 Event 滿足一定的 POW 難度值(這可用於公平發行)
Nostr 解鎖 Event 結構:
要解鎖使用 Nostr lock Script的 CKB Cell,必須在交易的 witness 字段中提供一個 Nostr 解鎖 Event。用戶可以生成多個解鎖 Event,但由於 Event 在上傳到鏈時會在標籤中記錄相應的 CKB 交易,剩餘的 Event 將自動失效,因此不會有重放風險。
Nostr lock Script也可以支持多重簽名。它的lock Script args 可以是一個 Nostr Event ID。該 Event 的 Tag 字段記錄了所有所有者 M 個 P 公鑰。解鎖需要至少 N 個(N\<=M)Nostr 賬戶提供 Nostr unlock Event 作為證明。
有了 Nostr lock Script的幫助,用戶可以使用 Nostr 生態客戶端和瀏覽器插件直接簽名並生成解鎖的 Event 作為簽名證明來解鎖 CKB 交易,因此這些鏈下 Nostr 生態工具的開發者可以儘可能少地了解和引入 CKB 與區塊鏈相關的代碼。同時,用戶幾乎可以"不關心"區塊鏈。項目方或其他志願者可以運行一個特殊的中繼,監控 Nostr 網絡中是否有新的解鎖 Event,如果有,就幫助解析交易並提交到 CKB 鏈進行解鎖。交易費用可以通過預留部分餘額作為手續費的 Cell 來支付。
發行資產
直接綁定
用戶:需要 Nostr 賬戶和 CKB
- 索引 CKB Cell 並計算該 Cell 的 TYPE_ID
- 使用 TYPE_ID 生成帶有 Nostr 簽名的 Nostr 資產 Event
- 使用 Nostr 資產 Event 生成 CKB 綁定交易,並發送到鏈上
通過 RGB++
用戶:需要 Nostr 賬戶、比特幣錢包和聰
- 索引 UTXO,通過 RGB++ 生成映射 Cell,並計算該 Cell 的 TYPE_ID
- 使用 TYPE_ID 生成帶有 Nostr 簽名的 Nostr 資產 Event
- 使用 Nostr 資產 Event 生成 CKB 綁定交易,並發送到鏈上
轉帳
使用 Nostr 鎖定時
用戶:需要 Nostr 賬戶
- 在 CKB 上索引你想要解鎖的使用 Nostr lock Script的 Cell
- 構造一個 CKB 交易,用其他lock Script替換這個 Cell
- 使用第 2 步的結果,通過 Nostr 客戶端/瀏覽器擴展生成 Nostr 解鎖 Event
- 將 Nostr 解鎖 Event 發送到一個特殊的中繼組,並提交到鏈上
使用其他鎖定時
用戶:需要擁有對應其他鎖定的錢包,無需任何 Nostr 相關操作
只需按照 CKB/RGB++ 上的正常流程解鎖轉帳即可。
可擴展性問題
Nostr 綁定協議的主要優勢是非常簡單直接。簡單性也使客戶端開發者更容易在其之上構建產品。另一方面,Nostr 綁定協議的缺點是可擴展性問題。在這種簡單設計下,Nostr token 的吞吐量與 CKB 區塊鏈綁定,因此 CKB 區塊鏈將成為瓶頸。考慮到 Nostr 作為一個更靈活的社交網絡,旨在大規模採用,當未來有大量用戶與這些原生資產交互時,這種吞吐量可能會成為問題。
然而,我們看到了一些解決這個問題的選擇:
- 與 CKB 閃電網絡集成
由於 Nostr 綁定協議創建的 Nostr 原生資產可以被視為普通的 CKB 資產,因此一旦 CKB 閃電網絡推出,我們可以利用它來擴展 Nostr 綁定協議。Nostr 綁定協議本身不需要任何更改,這是一個免費的功能。但缺點是需要等待 CKB 閃電網絡推出。
- 實現簡單但有用的支付通道
在 CKB 閃電網絡推出之前的另一種選擇是實現一些非常簡單但有用的支付通道,如 spillman 通道。spillman 通道是一種單向支付通道,實現更簡單。通道中有一個付款人和一個收款人。對於區塊鏈來說,這種支付通道可能不太有用,但在 Nostr 綁定協議的情況下,它非常適合內容創作者與他們的關注者之間的訂閱模式。
- N 對 1 綁定而不是 1 對 1 綁定
與創建 1 對 1 綁定不同,我們可以在 Nostr Event 和 CKB Cell 之間創建 N 對 1 綁定。換句話說,我們將多個事件捆綁到一個單元格中,以實現可擴展性。這將使鏈上映射存儲成本比鏈下 Nostr Event 小得多。但是,N 對 1 綁定的問題在於,它需要設計一種新的模式來控制和拆分捆綁事件的所有權。這將更加複雜,需要額外的設計和實現工作。
- RGB 風格解決方案
實現最終可擴展性的另一種方式是創建一種 RGB 風格的解決方案,將 CKB Cell 用作一次性密封,並使 Nostr 協議成為類似 RGB 協議的實現層。這種解決方案可以選擇只實現代幣標準,而排除原始 RGB 協議中的通用智能合約理念,從而簡化工作流程。
常見問題解答
為什麼選擇 Nostr?
Nostr 是基於加密技術的大眾級應用的理想層。它是一種超級簡單、直接、實用、不帶偏見且易於集成的信息分發協議。許多 web3 項目可能會使用類似 Arweave 和 IPFS 的東西,它們持有完全不同的價值觀和理念。你可以將 Nostr 視為一種超級鬆散的協議,沒有對完全去中心化的 P2P 網絡的執著,也沒有長期存在於 web3 世界中對代幣經濟和激勵機制的過度承諾,這使得 Nostr 更加實用和不帶偏見。
為什麼不直接使用區塊鏈資產?
讓用戶能夠基於 Event 在 Nostr 網絡中發行自己的原生資產,而不是在 Nostr 網絡中直接使用現有的區塊鏈代幣,主要是基於這樣一個簡單的事實:如果沒有創造價值,代幣就沒有意義。對於消費級產品,大多數區塊鏈資產只會在產品工作流程中帶來阻力,而不會為產品增加價值。與其將代幣機制強加到產品中,不如從用戶角度出發,看看他們需要什麼,區塊鏈能提供什麼幫助。我們認為基於 Event 的原生資產符合這種方法論。應用開發者和用戶可以從自己的角度看看他們能用資產做什麼,而不是強迫他們接受現有的區塊鏈資產和規則。此外,基於 Event 的資產更容易與 Nostr 協議無縫協作,為現有的 Nostr 生態系統產品和工具帶來了新的玩法。
為什麼選擇 CKB?
由於 CKB 的可編程性,使用 CKB 實現綁定協議要容易得多。比特幣就更難了。此外,考慮到 CKB 與 BTC 綁定的獨特方式,通過先與 CKB 綁定,再與 BTC 綁定會更容易。
結語
總的來說,Nostr 作為一種簡單實用的信息分發協議,非常適合消費級應用的大規模採用。而 CKB 的可編程性和與比特幣的綁定關係,使其成為實現 Nostr 綁定協議的理想選擇。同時,基於 Nostr Event 發行原生資產,可以從應用出發設計新的產品機制,從而讓 Nostr 與其他傳統互聯網應用進行競爭,尋找自己獨特的 PMF。