區塊鏈可以利用零知識證明技術提升交易吞吐量,在驗證用戶身分的同時保護用戶資料隱私,實現複雜的運算,並讓企業既可以利用區塊鏈技術又能保護自身智慧財產權。在上述所有應用場景中,零知識證明都是不可或缺的關鍵技術。

作者:鏈源科技 PandaLY

零知識證明技術是密碼學的一個分支,可以為許多 Layer 1 區塊鏈專案解決擴容和隱私問題。區塊鏈可以利用零知識證明技術提升交易吞吐量,在驗證用戶身分的同時保護用戶資料隱私,實現複雜的運算,並讓企業既可以利用區塊鏈技術又能保護自身智慧財產權。在上述所有應用場景中,零知識證明都是不可或缺的關鍵技術。

截至目前,在可程式區塊鏈提供的所有效用中--安全、可預測性、互通性和自主經濟等--最廣泛使用的區塊鏈並不提供隱私效用,而這仍然是其被廣泛採用的關鍵障礙。所以越來越多的人會更重視鏈上的隱私安全,誕生了隱私支付。

基礎知識

零知識證明分為兩類論證方案:

  1. 互動式論證方案
  2. 非互動式論證方案
  3. 互動式 ZKP

互動式零知識證明 (IZKP) 要求證明者和驗證者進行來回對話,在對話中證明者對驗證者的查詢做出回應。這種互動可以親自進行,也可以透過網路等網路進行。需要與驗證者進行多輪的交互,以便驗證者可以詢問有關所證明語句之外的附加資訊。在每一輪中,證明者需要根據驗證者的詢問提供一個答案。

IZKP 需要證明者和驗證者之間的交互,這可能是低效且耗時的。為了完成證明,證明者必須與驗證者來回發送多個訊息。這可能會花費大量時間,尤其是在證明複雜或涉及大量數據的情況下。當速度至關重要時,例如在高頻交易或即時決策中,這可能是個問題。

具體實現的方案為 zk-starks,STARK 允許區塊鏈將計算轉移到某個鏈下 STARK 證明者,然後使用鏈上 STARK 驗證者驗證這些計算的完整性。 Layer-2 網路可以透過使用 STARKs 在單一批次中計算大量交易,然後使用單一 STARK 證明來確認交易在鏈上的有效性,從而實現可擴展性。批次中的所有交易均分擔鏈上操作的成本,為第 2 層網路上的每筆交易提供低 gas 成本。

重要的是,由於驗證者使用的隨機性是公開可用的,並且可以在不依賴任何外部參數的情況下驗證證明,因此 STARK 不需要可信設定儀式。

StarkNet、dydx、Polygon Miden 都是採用 zk-starks 的 zk-rollup 方案

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

非互動式 ZKP

非互動式零知識證明 (NIZKP) 不需要證明者和驗證者之間的任何交互作用。非互動式零知識證明是指證明者可以一次性地產生證明,並將它發送給驗證者,而不需要進行多輪的互動。

具體實現的方案為 zk-snarks,SNARK 更有效率、更快速,因為它們可以在幾毫秒內得到驗證。然而,這種效率是有代價的,因為一些 SNARK 依賴的可信任設定儀式,有安全薄弱的環節。這意味著證明中使用的初始參數必須在安全環境中生成,參數的任何洩漏都可能導致安全漏洞。

zkSync、zcash 所採用的都是 zk-snark 的 zk-rollup 方案。

隱私交易概念

理解隱私交易的概念需要考慮交易主體和交易細則兩個方面,並區分匿名和隱藏兩種類型的隱私。

一筆普通交易包含以下要素:

  • 交易主體:包括交易的發送者(交易者 A)和接收者(交易者 B)。
  • 交易細則:包含交易的金額、子交易次數、交易的哈希等具體細節。

隱私交易可以根據對第三方的資訊可見程度分為兩類:

  • 匿名交易:在匿名交易中,對於第三方來說,交易的發送者和接收者的地址是不可知的。這意味著在交易過程中,除了參與交易的兩個主體之外,其他人無法確定交易的具體參與者。例如,Tornado Cash 就是一種透過混淆交易路徑來實現匿名性的隱私協議。
  • 隱藏交易:在隱藏交易中,雖然交易的發送者和接收者的地址是可見的,但是交易的具體細則卻是不可知的。這意味著交易的金額、子交易次數、交易的哈希等詳細資訊對於第三方來說是隱藏的。這種隱私可以透過使用零知識證明等技術來實現。例如,Zcash 就是一種利用 zk-SNARKs 技術來實現交易細則隱藏的隱私加密貨幣。

現有的隱私支付方案

在鏈上應用於 zk 的區塊鏈方案可以大致分為幾種,一種是作為 Layer2 解決方案的一種 rollup,也就是 zk-rollup,對比 op-rollup,不需要 7 天的挑戰期,他的數據是更加可信的、更加安全的。但它是沒有隱私的,可以直接在中間層上部署,例如 zkSync、scroll,不需要自己懂 zk,這種方案主要利用 zk 的證明理論來驗證資料正確性,並且不注重隱私性的保護。

一種做為單獨的鏈來專門處理需要隱私保護的交易 L1,比如 Zcash,MantaPay 的隱私資產的平台,和隱私資產交互,就可能需要自己做 ZK 的編程。對於開發者來說非常有趣的一件事情。

最後一種方案,作為 Layer2 但是可以在鏈上採用 zk-aluvm 的驗證方式或鏈下節點來做 zk 驗證的隱私支付方式,結合了 L2 的優勢,也同時引入了隱私支付的功能,目前可能是比較受歡迎的方式,但是實際開發起來,受到技術和政策影響也是最大的方式。

本文將重點放在基於 zkp 區塊鏈的隱私支付方案。

零幣

ZCash 的交易模型基本上与比特币相同,但是其中的 UTXO 被 note 所代替,note 为 ZCash 的基本交易单位。也可以理解为交易承诺的明文,我們将以 note=(PK, v, r,rho) 来表示 note,PK 为公钥 (Public Key)、v 是金额 (Value)、r 是序列号 (Random Serial Number)。 rho 是每一条 note 的唯一标识,当一条 note 被消费了之后,这个值会被放置到 nullifier 表中,代表这条 note 已经被消费了,再次进行消费同一条 note 的时候,会触发双花 错误,即交易双花防护机制。

在 ZCash 中,還有兩種表格,分別是:commitment 和 nullifier,因為隱私的需求,note 是不能公開的,因此,需要計算對應的 commitment 來代表這個 note,計算方式如下

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案
利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

Commitment 代表一次金額轉入,Nullifier 代表一次消費。請注意,對於一個 Note,Commitment 和 Nullifier 都是唯一的。因為 Commitment 和 Nullifier 是 Hash 的結果,即使這兩個數據公開,其他人也無法推斷 Commitment 和 Nullifier 之間存在聯繫。也就是說,提供一個 Commitment,能說明進行了一筆轉帳(具體資訊其他人未知)。能提供對應的 Nullifier,就能消費。

作為一個隱私轉帳平台,將所有的 Commitment(cm),組成一個 Merkle 樹:

某個用戶需要消費某個 cm,必須向區塊鏈提供零知識證明:

1/ 他知道一個 Note,並且能產生一個 cm,而這個 cm 在以 rt 為樹根的 Merkle 樹上

2/ 用同樣的 Note 訊息,能產生一個 nullfier,而且這個 nullfier 之前沒有產生過。

以上只是最簡單的概括 Zcash 零知識證明的大體思路,ZCash 的設計非常複雜和嚴謹,有很多細節。

zcash 目前的版本經過了 Sprout 和 Sapling 兩次升級,已經和最初的模式有很大改變,zcash 目前的模式有一個非常致命的問題,zcash 僅支援原生代幣 ZEC 之間隱私交易,很難支援 ERC20 等代幣。用戶在使用時,只能在交易所買進 ZEC,提到 Zcash 鏈上,用 ZEC 交易,達到隱私交易目的。而且 zkcash 最為最初期的隱私支付開拓者,在協議層面,並沒有集成太多複雜的東西,導致功能性單一,並且 TPS 較低等歷史遺留問題。

龍捲風現金

TornadoCash 主要利用了基於 zkp 的混幣器協議,解決了 zcash 的單一幣種問題,TornadoCash 主要依賴於以太坊鏈上的智能合約,充分擴展了可用性。

Tornado 實作路徑如下:TornadoCash 使用收據(commitment)來控制存取權限。收據是由 secret 和 nullifier 一起 Hash 產生,commitment = hash(secret, nullifier),然後用戶將需要混幣的金額(例如 1 ETH)和 commitment 發送給 TornadoCash 合約的 deposit 函數,TornadoCash 合約將保存這兩個數據,commitment 之後會用於提取的資金。

每個 commitment 只能提款一次。使用 Merkle Tree 記錄存款訊息,將 commitment 作為 leaf 節點並計算出 Merkle Root 。用戶只需提供 leaf 到 root 中間經過的數據,即可證明該數據是否 Merkle Tree 的 leaves 之一,也間接證明之前有存款資金到 TornadoCash。

在提款時,用戶需要利用 zk-snark 方案來提交一個證明,證明我有 secret 和 nullifier,TornadoCash 智能合約將檢查這個證明,然後將存款金額轉移到指定的提款地址。而對於外部的觀察者來說,無從得知這筆提款來自哪筆存款。另外使用 nullifier 防止 Double Withdrawal 攻擊。

Tornado Cash 的核心是智慧合約,使用戶能夠在以太坊上進行私秘交易。當使用者使用時,合約將自動執行兩種支援的操作之一:「存款」或「提款」。這些操作一起允許用戶從一個地址存入代幣,然後將相同的代幣提取到另一個地址。至關重要的是,即使這些存款和提款事件公開發生在以太坊的透明分類帳上,存款和提款地址之間的任何公共連結都被切斷了。用戶可以提取和使用他們的資金,而不必擔心將他們的整個財務歷史暴露給第三方。

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

曼塔派

MantaPay 結合了前兩個協議的優勢,獨立開發了一條基於波卡鏈的 ZK L1 鏈, 透過 zkSBT 為 web3 帶來可編程的身份和憑證,MantaPay 成功解決了隱私支付的問題和繁榮的生態問題。

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

MantaPay 使用 ZK 技術實現隱私轉帳。使用者使用 Manta Signer,在發起交易時,提交轉帳請求,並作為證明者(Prover)產生 ZK 證明,節點作為驗證者可在不取得任何轉帳資訊的前提下,驗證使用者交易為真。

Manta 使用 UTXO 方式驗證交易。 Manta UTXO 實際上有 “兩棵樹”,所有 Token 在第一棵樹,第二棵樹記錄使用者花費的 UTXO。在交易時,交易會附帶 ZK 證明,證明該狀態在第二棵樹中不存在。由於 ZK 證明無法偽造且無法竄改,節點驗證該證明的有效性,只要證明有效,則交易有效。

Manta 的 ZKEvm 是一種使用 ZK-SNARK 技術為類似以太坊的交易創建加密執行證明的技術。這些證明可用於透過減少驗證交易所需的運算負載或建立高效且可擴展的 ZK-rollup,從而使以太坊區塊鏈更具可擴展性。

目前 Manta 還沒有更好的支援 ZKEvm,可能是開發難度較大,也可能是收到法規影響,但不得不說是一種非常具有未來性的方案。

ZKP 鏈上方案構想

上文中闡述了幾種隱私支付的現有方案,對於未來,更高的 TPS、更好的生態支援一定將會成為主流方案。在這個基礎上我們提出了一些構想。

中科鋁業

AluVM -(演算法邏輯單元 VM)是專為確定性便攜式運算任務而設計的純功能 RISC 虛擬機器。它由 Pandora Core AG 的 Maxim Orlovsky 博士設計和實施,並由 LNP/BP 標準協會維護。

AluVM 是一種純功能暫存器型、高度確定性且無異常的指令集架構 (ISA) 和虛擬機 (VM),無需隨機記憶體訪問,能夠執行算術運算,包括橢圓曲線運算。運行虛擬機器的環境(主機環境)可以擴展 AluVM ISA,從而能夠將資料載入到 VM 暫存器並支援特定於應用程式的指令(如 SIMD)。

ALuVM 的主要用途是用於分散式系統,無論穩健性、獨立於平台的確定性是否比運算速度更重要。 AluVM 應用的主要領域(使用適當的 ISA 擴展)是區塊鏈環境、共識關鍵運算、邊緣運算、多方運算(包括確定性機器學習)、用戶端驗證、沙盒 Internet2 運算和遺傳演算法。

在區塊鏈中使用使用 ZK-AluVM,處理交易,更新狀態樹的同時產生證明。實現方案可以 Mina 為基礎,進行更深入的研究。

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

基於 ZK-AluVM 我們構思了幾種擴容方案

比特幣擴容方案

鏈下部分:在本地進行 ZK-AluVM 進行交易與證明生成,但將與交易資訊傳輸委託給中心化運營商,此操作中,交易感知者為交易雙邊與中心化運營商。此處可使用 Nostr 等協定降低中心化。

鏈上部分:走鏈上驗證,鏈上驗證可選 Rollup,將多個交易 Rollup 使用同一個封條進行封裝,節省 Gas。此處 BTC 可改為閃電網絡,達到極高的 TPS。

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

以太坊 layer2 方案架構示意圖

鏈下部分:走 ZK-AluVM 進行交易與證明生成,此處可選擇中心化服務,或客戶端自己經營,進行 P2P 傳輸。

鏈上部分:首先客戶端將交易打給 Layer2 節點,排序後寫入 Calldata,執行層從以太坊讀取資料後處理交易。此處將基於 UTXO 的一次性封裝方案改為使用合約中心化管理。此方案鏈上部分非常中心化,可選擇各種高效能 EVM 公鏈作為底,達到一個較高的 TPS。

利用零知識證明(ZKP)實現隱私支付的鏈上應用方案

總結

受到長度限制,還有很多好的協議沒有列舉,例如 Aleo、RGB 等等,但在隱私支付領域作為用戶我們更在意的是安全、高效、穩定,在眾多的產品中我們必須要提高安全意識、增加對區塊鏈的理解,無論是什麼隱私支付方案我們都要了解其內核,對自己的資產負責,對自己的未來負責。

免責聲明:作為區塊鏈資訊平台,本站所發布文章僅代表作者及來賓個人觀點,與 Web3Caff 立場無關。文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。