推進區塊鏈交易隱私和合規性:對創新工程實踐的見解

本文為機器翻譯
展示原文

作者: @gyllone @Madao-3 @xiangxiecrypto

一、簡介

區塊鏈隱私和監管合規性正在經歷動態轉變,這受到@vbuterin@ameensol的關鍵工作的顯著啟發,他們富有洞察力的論文《區塊鏈隱私和監管合規性:邁向實用均衡》以及關於許可隱私池的啟發性論壇帖子,已經為理解維護交易隱私和遵守監管規範之間的複雜平衡奠定了基礎框架。這些資源深入探討了在不斷發展的區塊鏈環境中同步隱私與合規性的挑戰和可行的解決方案。

他們的工作的一個關鍵要點是“誠實地址集”的概念,它深刻地影響了我們實現第二代隱私協議的方法。在此框架中,關聯集提供商(ASP)成為 zk-credit 系統中信用的關鍵促進者,提供了一種結構化的方法來評估和證明用戶的信用度。同時,會員證明確保交易中的所有參與者都是誠實地址集的一部分,增強了我們協議的安全性,併為用戶提供了更安全、更值得信賴的環境。

總而言之,Buterin 和 Soleimani 的工作有助於指導我們開發既維護隱私又遵守法規的區塊鏈系統。通過將這些概念集成到我們的系統中,我們已經能夠創建更安全、更高效、更保護隱私的第二代協議。

2. 組件

2.1 基礎設施

用戶的可替代資產被散列到二元默克爾樹中。假設葉子節點初始化為常數值H'=\mathrm{Hash}(0) H = H a s h ( 0 )直到任何資產佔據葉子的槽位,則葉子節點應更新為H= \mathrm{Hash}(標識符\|\金額\|\承諾) H = H a s h ( i d e n t i f i e r | 數量_ _ _ _ _ | 承諾) 其中標識符identifier資產關聯標籤例如用戶地址 金額amount資產數量_ _ _ asset 存儲在葉子節點 commitment = \ mathrm { Hash } ( secret ) c o m m i t me n t = Hash ( secret ) 帶有秘密secret是擁有該資產的用戶的密鑰。

對於未使用的葉子節點槽位,用戶可以將資產存入池中並在提供資產和承諾的同時獲得該槽位。對於提現,用戶應提供提現金額、新葉哈希、標識符子集和 snark 證明。

默克爾樹
默克爾樹1401×842 66.4 KB

2.2 UTXO 證明

提現機制的設計與UTXO模型類似。用戶選擇一組指示其資產的葉節點作為輸入,然後將剩餘餘額散列到新的葉節點作為輸出。總投入與總產出之間的差額就是撤回的金額。

現在令 ULO 源列表為L L ,對於每個索引為i\in L i L的 ULO,我們必須首先驗證其存在性,然後計算電路中相應葉子的無效符,如下所示:

\begin{aligned}commitment_i&=\mathrm{Hash}(secret_i)\\nullifier_i&=\mathrm{Hash}(secret_i^{-1})\\leaf_i&=\mathrm{Hash}(identifier_i \ | \ amount_i \ | \ commit_i)\\root&=\mathrm{MerkleProof}(leaf_i, \paths)\end{對齊}
承諾_ _ _ _ _ _ _ _ _ _ =哈希(秘密i ) _ _ _ _ _ _ _ _無效i _ _ _ _ _ _ _ = H ash ( secret 1 i ) _ _ _ _ _ _ _阿菲_ _ _ =哈希(標識符i _ _ _ _ _ _ _ _ _ _ _ _ | 金額i _ _ _ _ _ | 承諾i ) _ _ _ _ _ _ _ _ __ _ _ = Merkle Proof ( leaf i , _ _ _ _ _ _ _ _ _ _ _ _ 路徑) _ _ _ _

接下來,我們需要證明電路內的總輸入量等於總輸出量,然後生成葉子輸出。以下等式表示這一點:

\begin{aligned}\sum_{i\in L}amount_i&=amount_w + amount_o\\commitment&=\mathrm{Hash}(secret)\\leaf&=\mathrm{Hash}(identifier \ | \ amount_o \ | \commitment) \結束{對齊}
Σ i L a m o u n t i =金額w +金額o _ _ _ _ _ _ _ _ _ _承諾_ _ _ _ _ _ _ _ _ =哈希秘密 _ _ _ _ _ _ _ _葉子_ _ _ =哈希標識符_ _ _ _ _ _ _ _ _ _ _ _ | 金額_ _ _ _ _ _ | 承諾 _ _ _ _ _ _ _ _ _

其中amount_w a m o u n t w為提幣金額, amount_o a m o u n to輸出金額。

在上面的過程中,我們設置了\{nullifier_i\}_{i\in L } { n u l l i f i e r i } i L leaf l e a f root rootamount_wa m o u n t電路的公共變量,由Plonk構造。

2.3 無罪證明

2.3.1 為什麼不採用 Merkle 證明

ZKT 網絡中的無罪證明在於證明輸入來自用戶構造的任意集合,同時確保該集合對任何人公開可用。通常,該集合可以組織成一個新的 Merkle Tree,並且用戶應該證明每個輸入也是 Merkle Tree 的葉節點(事實上,Tornado Cash v2 和隱私池等注重隱私的解決方案都採用了這種設計)。

顯然,如果集合很小,用戶的隱私就會受到損害。如果集合太大,生成相應的 Merkle 樹會在 EVM 上產生巨大的 Gas 成本,因為 EVM 原始地沒有集成 ZK 友好的哈希函數(Poseidon Hash),而創建 Merkle 樹的哈希複雜度為 O(n)。

我們特此採用Plookup來構造成員資格證明,而不是 Merkle 證明。在我們的會員證明中,Plookup 有2 個主要優點。

  • 在證明階段,我們不需要對每個ULO進行merkle證明,這大大減少了電路尺寸。

  • 在驗證階段,我們不需要在EVM中進行哈希運算。僅需要一對橢圓曲線。

2.3.2 Plookup嵌入

假設用戶從源 ULO 中提供了大小為m m的標識符集,表示為\mathbf{t} t ,然後我們用 0 填充集合\mathbf{t} t ,直到它滿足電路大小n n的大小。

\mathbf{t}=\{\mathrm{id}_0,...,\mathrm{id}_{m-1},0,...,0\}
t = { i d 0 , . , i d m 1 , 0 , . , 0 }

此外,我們定義\mathbf{q_T} q T ,滿足q_{Ti}\cdot t_i = 0 q T i t i = 0

q_{Ti}=\left\{\begin{matrix}0, &\ i \leq m\\1, &\ i > m\end{matrix}\right.
q Ti = { 0 , _ 1 , >

\mathbf{f} f為查詢表:

f_i = q_{Ki}\cdot c_i=\left\{\begin{matrix}c_i, &\ \mathrm{如果\the}\i\mathrm{\gate\is\a\lookup\gate}\\0, &\ \mathrm{否則}\end{矩陣}\對。
f i = q K i c i = { c i , 如果_ _ _  _ _ _ _ A 抬頭_ _ _ _ _ _ _ _ 0 , 否則_ _ _ _ _ _ _ _
q_{Ki}=\left\{\begin{矩陣}1, &\ \mathrm{如果\} \ i\mathrm{\門\是\a\查找\門}\\0, &\ \mathrm{否則}\end{矩陣}\right。
q K i = { 1 , 如果_ _ _  _ _ _ _ A 抬頭_ _ _ _ _ _ _ _ 0 , 否則_ _ _ _ _ _ _ _

其中c_i c i是Plonk算術門中定義的輸出見證,當c_i c i表示標識符見證時我們激活它。 q_{Ki} q K i是打開/關閉查找門的選擇器。

然後我們只需通過 Plookup 證明\mathbf{f} f\mathbf{t} t的子集即可。

在驗證階段,除了 zk-SNARK 證明驗證外,我們還驗證\mathbf{t} t\{1, \omega, \omega^2, ..., \omega^{m-1 處的開局證明}\} { 1 , ω , ω 2 , . , ω m 1 }來確認\mathbf{t} t中每個標識符的正確性,無需任何哈希操作。

3. 關聯集提供者

關聯集提供商(ASP)機制允許第三方監督成員列表。與證明者類似,ASP 為最終用戶提供證明服務。相關地址以及潛在的經過證明和密封的數據被提交給指定的 ASP 智能合約。在ZKT Network中,任何實體都可以註冊為ASP。選擇使用哪個 ASP 取決於最終用戶和 Dapp 的選擇。

數據類別可以由 ASP 定義,允許支持來自 web2 的各種潛在數據,例如信用評分、KYC 結果等。用於證明通過標準傳輸層安全 (TLS) 協議獲得的任何數據(例如, HTTPS)併為了容納大量潛在數據,我們建議在 ASP 中使用 MPC-TLS 樣式算法。這種方法最初由 DECO 引入,並由 PADO 進行了顯著改進,本文對此進行了進一步詳細介紹。在此框架內,用戶可以向證明者證明數據確實來自預期來源,而不會洩露任何其他信息。

我們在下圖中列出了基本的工作流程。

asp工作流
asp-工作流程1920×1080 88.7 KB

會員名單中是否包含數據是酌情決定的。這種靈活性源於數據輸入可能只是二進制(是/否)的情況。在這種情況下,智能合約接受標記為“是”的地址,從而允許省略不必要的數據條目。然而,當密封數據具有附加含義時,可以引入可編程性。例如,ASP 可能會證明用戶的 FICO 分數並將加密分數存儲在智能合約中。隨後,Dapp 可以設計出更具適應性的提款條件。例如,FICO 分數較高的用戶可能有資格提取較大數量的代幣,而 FICO 分數較低的用戶可能只能提取較小數量的代幣。這為設計不同的應用程序帶來了更高程度的靈活性。

4. 客戶端加速方案

為了增強 ZKT 網絡系統的用戶體驗和效率,我們重點關注客戶端計算優化。這種優化對於減少用戶設備的計算負擔並加速交易和驗證過程至關重要。

4.1 WebAssembly 集成

我們與 WebAssembly (Wasm) 的集成允許直接在用戶瀏覽器中執行復雜的加密證明生成過程。通過將 Rust 代碼編譯到 WebAssembly,我們顯著減少了對集中式服務器的依賴,並提高了系統響應能力和效率。

4.2 本地計算優化

4.2.1 交易決策邏輯

在我們的UTXO模型中,每個用戶的資金都表示為加密的NOTES,每個NOTES對應特定數量的資產(例如ETH)。我們的系統智能地選擇適當的NOTES組合來滿足提款請求。例如,如果用戶擁有 1 ETH、1 ETH、2 ETH 和 3 ETH 的票據,並希望提取 2.5 ETH,我們的系統會自動使用 1 ETH、1 ETH 和 2 ETH 的票據。

4.2.2 新存款證明的生成

在使用某些NOTES進行交易後,我們的系統會生成與剩餘金額相對應的新存款證明。繼續前面的例子,在花費 1 ETH、1 ETH 和 2 ETH 票據後,會創建一個新的 1.5 ETH 存款證明,確保交易後資金的安全有效管理。

4.2.3 Chrome插件和iOS應用程序中的實現

為了實現這種計算優化,我們在 Chrome 插件和 iOS 應用程序中實施了定製策略。 Chrome插件利用瀏覽器的處理能力優化了NOTE選擇和新的證明生成過程。相比之下,我們的iOS應用程序採用多線程技術來加速這些計算,充分利用iOS設備的高性能。

4.3 緩存策略

我們實施了緩存策略來減少冗餘計算和網絡請求。關鍵數據(例如 Merkle Tree 的部分內容)會緩存在用戶設備上,以便在後續交易或驗證中快速檢索,從而減少網絡流量並顯著提高整體系統性能。

4.4 用戶體驗提升

最後,我們高度重視增強用戶體驗。這不僅涉及到技術上的優化,還涉及到界面設計上的改進。我們確保用戶界面直觀且交易過程無縫。實時反饋和詳細的錯誤消息增強了用戶的信任度和滿意度。

綜上所述,我們的客戶端加速解決方案是增強ZKT Network系統性能的關鍵策略。通過這些技術和方法的應用,我們不僅提高了交易的速度和效率,還優化了用戶體驗,使ZKT Network成為更強大、更友好的區塊鏈隱私平臺。

5.這是什麼意思?

在ZKT Network,我們致力於實現一個宏偉願景:通過平衡區塊鏈交易隱私與全球合規標準來引領技術革命。我們的創新超越了技術領域,探索隱私與合規性平衡的新領域。

因此,我們熱忱邀請區塊鏈領域的研究人員和專家參與我們的項目,為推動該領域的發展提供反饋和建議。 ZKT Network期待您的專業見解和協作,共同開發更全面、更有效的區塊鏈隱私解決方案。

我們還鼓勵社區成員根據他們的要求探索基於我們框架的創新應用程序。 ZKT Network渴望與您一起暢想未來,共同面對挑戰,構建更加安全、合規、創新的區塊鏈世界。

在ZKT Network,我們相信通過集體智慧和協作努力,我們能夠實現隱私保護與合規性的完美融合,創造充滿可能性的未來。

六、總結

這篇文章深入探討了在區塊鏈技術中實現隱私保護和監管合規之間平衡的方法和實踐。通過結合誠實地址集、zk-credit 和會員證明的創新應用,我們演示瞭如何在遵守監管標準的同時維護用戶隱私。重點不僅限於技術和系統架構,還包括工程實踐和用戶體驗性能的增強。我們的目標是建立一個安全、高效的區塊鏈系統,提供卓越的用戶體驗。第二代隱私交易協議代表著向前邁出的一步,意味著更美好的明天,隱私不僅僅是一個功能,而是一種常態。


相关赛道:
來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
54
收藏
17
評論