新聞加密貨幣[[alloc] init] 發布 Shielded Bitcoin 提案,實現比特幣私密交易

[[alloc] init] 發布 Shielded Bitcoin 提案,實現比特幣私密交易

作者: Bitcoin Magazine·

重點速覽

  • •由 [[alloc] init] 的 Clara Shikhelman、Misha Komarov 與 Aleksei Moskvin 撰寫的 Shielded Bitcoin 白皮書,描述了一個無需營運方、軟分叉或比特幣共識變更的隱私元協議。
  • •協議規則由 Shielded Bitcoin 索引器執行,交易資料透過 OP_RETURN 或見證欄位嵌入比特幣,基礎鏈因此將其視為普通資料。
  • •零知識證明與 nullifier 集合可在不透露哪個 note 被花費的情況下防止雙重花費與通脹,索引器只需拒絕重複的 nullifier,而無須維護已花費集合。
  • •該設計的隱私性被評為可與 Zcash 的屏蔽資金池媲美,且與 coinjoin 不同,無需定期混幣或隱私衡量。
  • •計劃中的錨定使用 PIPEs v2 見證加密,可在無營運方或聯盟的情況下轉移資金,即將發表的論文將定義定機制與進出隱私。
[[alloc] init] 發布 Shielded Bitcoin 提案,實現比特幣私密交易

[[alloc] init] 研究員 Clara Shikhelman、Misha Komarov 與 Aleksei Moskvin 發布了 Shielded Bitcoin,這是一份描述建構於比特幣基礎層之上、全新隱私元協議的白皮書。其設計可在不需要營運方、軟分叉或任何其他比特幣共識變更的情況下實現屏蔽的比特幣交易。白皮書與隨附的部落格公告皆已發布,團隊也在 X 上分享了這一消息。

該協議定義了用於強隱私保護交易的交易結構與索引協議,同時依靠比特幣 PIPEs 將資金錨定進出該系統。PIPEs 機制將在本文末尾詳細說明。

這種「不改變共識」的特性至關重要:比特幣的帳本以公開方式記錄金額與地址,而歷史上對其規則的修改都需要廣泛的全網調。一個完全在現有規則集內運作的設計,無需依賴該流程即可推進。

類似比特幣的設計,細節卻大不相同

其架構刻意映射了比特幣自身的設計。相當於 UTXO 的概念稱為 note。交易以 note 作為輸入,就像一般比特幣交易花費 UTXO 一樣。見證(witness)證明被消耗的輸入已獲得適當授權,而節點——在元協議中即為索引器——解析交易歷史,並建立哪些幣已花費、哪些未花費的即時狀態。

然而,所有底層細節都相當不同。

比特幣本身會忽略的交易

一筆 Shielded Bitcoin 交易只是一段帶有前綴(類似「shbtc:」)的資料,透過 OP_RETURN、見證欄位或其他資料承載方式嵌入比特幣交易中。這正是元協議的模式:協議規則由其自身的索引器執行,而非由比特幣執行,因此基礎鏈看到的只是普通資料。這段資料對比特幣沒有任何意義:網路不會對其進行驗證,也不會對其施加任何規則。

因此,無效的 Shielded Bitcoin 交易完全有可能上鏈。這時就由被動監看區塊鏈的 Shielded Bitcoin 索引器負責,在這些交易未通過驗證時將其忽略,並在更新網路餘額狀態時拒絕套用它們。

以 Nullifier 取代已花費集合

索引器不會像比特幣移除已花費的 UTXO 那樣,從未花費 note 集合中刪除 note,而是維護一個 nullifier 集合。這種機制讓使用者可以公開張貼加密證明與 nullifier,表明某個 note 已被花費,卻不透露是哪一個 note。參與者不再檢查某個 note 是否在「未花費 note 集合」中,而是檢查某個 nullifier 是否已被使用過。

索引器建立一棵只增不減、無限增長的 merkle 樹,包含所有曾經建立的 note 輸出,並配合 nullifier 集合。

執行協議只需要一個節點

使用該協議只需要一個比特幣節點和一個 Shielded Bitcoin 索引器。恢復資金不需要任何服務商、協調器或鏈下狀態。它的運作方式就像鏈上比特幣一樣:使用者只需要自己的節點/索引器和金鑰。

每個使用者錢包會衍生一把主密鑰,其他所有相關金鑰都由它產生——這種設計非常類似比特幣中的 HD 錢包,可從中生成多組集。sk_spend 作為花費私鑰,sk_nf 用於作廢 note 輸出,vk_in 用於解密與檢視收到的 note,vk_out 用於檢視對外交易,sk_view 則用於生成接收地址。

當使用者想提供地址給他人以接收資金時,他們會生成一個類似衍生值的 diversifier 值 d,並將其與自己的 sk_view 金鑰相乘。所得的公鑰 pk_d 與 d 一起構成使用者的地址。

發送方接著生成一個隨機值 r_seed,它既用於加密 note 輸出,也用於作廢(nullification)。交易輸出僅包含三項加密內容:輸出的金額、接收方交給發送方的 d 值,以及發送方的 r_seed 值。加密時,發送方使用一組秘密的臨時金鑰對與接收方的公鑰來建立共享秘密——雙方都可以將自己的私鑰乘以對方的公鑰來計算出同一個秘密。note 輸出以這個共享秘密加密,而臨時金鑰 sk_eph 則以未加密形式包含在內,讓接收方能自行生成共享秘密。

零知識證明保證有效性

在輸入方面,一筆交易要有效需要兩項條件:每個被消耗 note 輸出的公開 nullifier,以及一個零知識證明,證明:(1) 該 note 輸出包含在 note 的 merkle 樹中,(2) 交易已由對應的 sk_spend 金鑰授權,(3) nullifier 的衍生方式正確,且 (4) 未發生任何通脹。

nullifier 結合了 sk_nf 金鑰、由 r_seed 衍生的 ρ 值,以及該 note 在 note 輸出 merkle 樹中的位置。儘管無人知道某個 nullifier 對應哪一個 note 輸出,每筆交易中的零知識證明都保證加入集合的每個 nullifier 都來自有效的 note 輸出。因此索引器只需拒絕重複的 nullifier,而無須刪除已花費的 note;只要沒有重複,系統就提供了與比特幣相同的雙重花費防護。

最終效果是:加密的元協議交易可以嵌入比特幣區塊鏈,同時仍保證沒有任何東西被雙重花費,也不會有幣憑空膨脹產生。

隱私特性

根據分析,該系統在隱私特性方面設計良好,可與 Zcash 的屏蔽資金池媲美。這一比較勾勒出更廣闊的格局:Zcash 透過內建於自身協議的規則提供屏蔽交易,而此設計則在不觸及共識的情況下,在比特幣基礎層上追求類似特性進出元協議時產生的隱私考量,將在即將發表的論文中詳細說明,隨著工作推進,系統的進出點是值得關注的細節之一。與 coinjoin 不同,它無需擔心隱私衡量,也不需要定期混幣。

以 PIPEs v2 錨定資金

預期的錨定依賴 PIPEs v2,這是一種見證加密方案。PIPEs 允許將一把私鑰以某個程式或機制加密,除非提供 ZK 證明表明某項條件已滿足(例如某個 UTXO 的狀態,或某筆交易已被確認),否則該金鑰不會被透露。這將使錨定可在沒有營運方、聯盟或任何第三方託管資金的情況下運作——這是一項值得注意的特性,因為延伸比特幣的錨定設計通常依賴此類託管方。它不需要比特幣的軟分叉或協議變更,並且完全在鏈下進行。

團隊工作的下一階段,是一種錨定機制,讓使用者能夠使用 PIPEs 以密碼學方式控制的金鑰將資金存入 Shielded Bitcoin,之後透過生成已在鏈上確認的合法轉出交易的 ZK 證明來「解鎖」。定義系統這一方面內容的論文目前正在撰寫中,應會於近期發布;連同進出隱私論文,它們將補齊白皮書尚未涵蓋的部分。


本文由 Shinobi 撰寫,首發於 Bitcoin Magazine。