BTCC / BTCC Square / 528BTC /
以太坊中的隱私-隱密地址(Stealth Address)

以太坊中的隱私-隱密地址(Stealth Address)

528BTC
Author:
528BTC
發佈時間:
2025-01-09 11:31:00
0

來源:登鏈社群

介紹

Web3 加密使用者面臨的一個主要痛點是缺乏隱私。 所有交易在公共帳本上都是可見的,並且越來越多地與一個清晰可見的ENS 名稱相關聯,這使得用戶在進行某些活動時缺乏動力,或者導致他們以增加用戶體驗摩擦的方式進行 這些活動。 一個例子是簡單地將資金從熱錢包轉移到冷錢包或反之亦然。 用戶可能不希望一個錢包與另一個錢包相連,因為他們可能不希望自己的冷錢包餘額被看到。 目前,以太坊地址並不像私人銀行帳戶那樣運作,因為每個人都可以看到你的錢包,越來越多地,你的社交活動(SBT、證明、在各種dapp 上的活動等)也 會被看到。 正因如此,Vitalik 將隱私稱為以太坊需要經歷的 三大技術轉型之一,以便對普通用戶有用。

使用現有的隱私解決方案,如 Tornado Cash,出於幾個原因,體驗並不理想。 首先:用戶會合理地擔心自己的地址在中心化交易所或其他平台上被列入黑名單。 其次,與 Tornado Cash 等服務的互動使用者體驗並不友好,實際上只適合高度熟練的使用者。

隱密地址為使用者提供了一種隱私,類似於他們在私人銀行帳戶中所理所當然的隱私,並且以易於理解的方式實現。 此外,圍繞隱密地址的創新意味著我們可以以符合多個司法管轄區的反洗錢法規的方式來實現這一點。

用戶對隱私的需求

雖然關於網路和 Web3 使用者對隱私態度的研究並不廣泛,但透過網路搜尋發現了以下研究,結果大致一致,顯示對交易隱私有明確的需求。

  • 2022 年進行的一項調查,由 Simin Ghesmati 等人發表在題為 User-perceived privacy in blockchain 的論文中,指出「一半的受訪者表示交易隱私對他們非常重要」。 雖然這項研究與比特幣的關係更大,但以太坊用戶可能也有類似的態度。 然而,這項研究的樣本量相對較小(14 名參與者)。

  • 另一項有趣的研究來自 2022 年,發表在 Frontiers 上,題為 Political, economic, and governance attitudes of blockchain users,這項研究更為全面,共調查了 3,710 名加密用戶。 結果顯示,約四分之一的受訪者表示隱私是「區塊鏈和加密貨幣中最重要的特徵」。

  • 在對隱私的整體態度方面,Consensys 發布了一項名為Web3 and crypto global survey 2023 的研究,其中對來自15 個國家的15,158 人進行了線上調查,涉及與網路相關的各 種主題,而不僅僅是加密。 調查發現,83% 的受訪者認為資料隱私很重要,而只有 45% 的受訪者表示他們信任當前網路服務對其資料和個人資訊的使用。

  • 英國金融服務補償計畫進行的一項 調查,於 2023 年 4 月發布,強調 9% 的受訪者將「對匿名性/隱私的渴望」作為他們投資加密貨幣的原因。

  • 隱密交易協議的採用

    Railgun 的使用數據令人印象深刻,該協議的使用似乎隨著時間的推移穩步增長,截至2024 年11 月,達到超過7000 萬美元的總鎖倉價值(TVL)和20 億美元的交易 量。

    TVL(美元)Railgun 在以太坊主網 — 來源:Railgun — defiLlama

    Umbra 的使用人數也穩定增加(註冊隱密地址到他們的 ens 的人數),截至 2024 年 11 月接近 77,000 人:

    Umbra 累計註冊人數(跨鏈) — 資料來源:dune.com

    如果我們看看以太坊中最廣為人知(而且現在不幸的是臭名昭著)的隱私協議Tornado Cash,我們可以看到儘管合約地址在技術上被列入OFAC 的SDN 名單,但它仍然在被 大量使用。

    下圖顯示了 Tornado Cash 隨時間變化的 TVL。 我們可以觀察到,從2021 年10 月左右的峰值開始,TVL 的第一次重大下降與加密市場的整體拋售相吻合,第二次重大下降發生在2022 年8 月,正好對應OFAC 將Tornado Cash 列 入SDN 名單,第三次重大下降對應於2022 年11 月OFAC 的重新指定。 然而,自那時以來,儘管受到製裁,Tornado Cash 的使用仍在穩步增長,TVL 接近 6 億美元。 這強烈證明了以太坊中對基本交易隱私的需求。

    TVL(美元)Tornado Cash 在以太坊主網 — 來源:Tornado Cash — DefiLlama

    隱密地址的現況

    本研究確定了目前在 evm 鏈上生產的 4 個主要解決方案,它們是:

    • Fluidkey

    • Umbra

    • Labyrinth

    • Railgun

    Fluidkey 和 Umbra 是基於以太坊標準,這些標準是:

    • ERC-5564: 隱密位址協定

    • ERC-6538: 隱密元位址註冊

    Labyrinth 和 Railgun 是基於 zerocash 協議(zcash 也是基於此),該協議使用用戶存入資金的保護池。 Zerocash 使用「票據」的概念,這基本上是價值的加密表示,能夠實現私密交易。 每張票據包括一個隱藏的價值、所有者金鑰和一個唯一編號(一個無效化器),使用 zk-SNARKs 驗證所有權而不透露細節,從而轉移票據中的價值。 當票據被花費時,其無效化器會被揭露以防止雙重花費,同時為接收者創建新的票據,形成一個保護池內的 UTXO 系統。

    在高層次上,隱密地址的基本原理是第三方可以向一個從未存在過的地址發送資金,而預期的接收者可以找到並控制該地址(即可以隨後支出這些資金)。

    erc-5564 標準指定了一種機制,接收者可以發布一個隱密元位址,從中可以衍生出新的以太坊地址。 任何希望向接收者發送資金的人,都可以從隱密元地址產生新地址,並允許接收者在沒有任何直接通訊的情況下得知這些資金。 所有隱密地址的實作都基於這個基本前提。

    隱密地址的工作原理

    隱密元位址本質上是兩個壓縮公鑰的連接,分別稱為「支出金鑰」和「檢視金鑰」。 隱密元位址使用 EIP-3770 鏈特定位址格式,並加上「st:」前綴。 以下是一個隱密地址的範例:

    st:eth:0x036ffa94a70a5b9608aca693e12da815fe0295f3739c7b22b0284c6d85c464 ba4a02c0521b6fe31714b2ca0efa159402574355b754e0b50406b0b5fb33128eec3507

    為了簡化,這個隱密地址可以與一個普通的以太坊地址(因此也包括 ENS)關聯,使得向隱密地址所有者發送資金變得更容易。 為了發送資金,發送者會解析上述位址,並使用 EIP-5564 標準建立一個臨時公鑰,從中衍生出隱藏位址。 發送者將資金發送到新的隱密地址,通常透過一個所有隱密地址接收者監聽事件的單例合約。 該合約會發出一個「公告」事件,接收者可以訂閱該事件。 每當公告事件被發出時,接收者會檢查公告中的臨時公鑰,將其與他們的查看私鑰結合,確定他們是否有能力支出發送到隱密地址的資金。 如果有,他們所使用的錢包/客戶端將記住隱密地址及相應的資金,並將其添加到用戶的顯示餘額中。 要實際支出這些資金,他們可以使用私有支出金鑰簽署交易。

    以下圖表更清晰地概述了整個過程:

    請記住,這個過程完全是非互動式的,這意味著發送者和接收者之間沒有任何直接通信,這意味著實際上沒有任何第三方可以觀察到的發送者和接收 者之間的連結。

    然而,為了使這一切能夠正常運作,接收者必須將他們的隱密地址告知發送者。 實現這一點的一種方法是使用 eip-6538 隱密元位址註冊表。 這是一個單例合約,允許用戶將隱密元地址註冊到一個普通的以太坊地址,發送者可以找到該地址。 這允許發送者從 ENS 解析普通位址,然後從登錄中尋找相關的隱性元位址。

    該方案打破了發送者和接收者之間的鏈接,使他們都能避免整個世界知道他們的事務。 然而,有一些注意事項:

    • 當接收者去支出資金時,他們轉移資金的對象將看到這些資金來自原始發送者(即,他們可以看到資金轉移的地址以及誰之前向該地址發送了資金)。 這意味著轉移鏈保持完整且可追踪,但它們只與相關接收者無關(除非接收者做一些事情,例如將資金發送到他們已知的非隱密地址)。 請注意,這僅適用於 erc-5564 實現,而不適用於 Railgun 或 Labyrinth。

    • 上述問題的另一個副作用是,為了保持最佳隱私,用戶可能需要將資金保留在他們最初發送到的隱密地址中,直到他們真正需要它們,而不是將它們合併到一個地址 下。 這代表了記住地址的額外開銷,並隨後在這些地址上支出資金,因為你希望轉移的金額需要從多個其他地址的資金組合中獲取。

    • 為了從該地址轉移資金,接收者需要為該地址提供一些 ETH 以支付 gas,這可能會使接收者失去匿名性。 這是隱密位址的已知問題,也是許多實作支援 eip-4337 和付款者的原因之一。

    • 隱密位址方案的一個缺點是,接收者需要監控區塊鏈以獲取 公告 事件,並檢查每個公告以確定他們是否收到了資金。 這顯然對大多數用戶來說是一個不切實際的開銷,尤其是在接收多個網路的資金時。 為了使這個過程更有效率,標準指定了一個“查看標籤”,這是從共享秘密派生的截斷哈希,可以用來快速丟棄那些顯然不打算發送給他們的交易。 透過使用檢視標籤,桌面上的效能並不是那麼糟糕,但在行動裝置上可能會更明顯。 效能下降真正明顯的唯一時刻是如果錢包正在恢復,在這種情況下,錢包需要掃描自鏈上合約部署以來的每個地址,這非常耗時。

    • 為了解決這個問題,使用者可以選擇與可信任的第三方共用私有檢視金鑰。 這個第三方服務可以監控各種網絡,並在他們收到資金時通知用戶。 當然,這帶來了一個權衡:儘管第三方實際上無法支出用戶的資金(他們沒有私人支出金鑰),但他們可以看到發送給特定接收者的所有資金,這意味著用戶需要信任他們的 隱私。 Fluidkey 預設執行此操作。

    • 標準隱密地址協議,即 ERC-5564,旨在促進隱私保護的轉移,然而,非金融用例(如調用任意智慧合約函數)需要更多的工程,通常是特定於實現的。

    比較矩陣

    我們可以透過多種方式比較本文探討的四種隱密位址實現。 所有實現都有細微的差異和權衡,但可能最重要的要點是關於可追蹤性和價值的模糊化。

    雖然Fluidkey 和Umbra 都允許資金轉移到標準以太坊地址,同時打破與接收者身份的任何鏈接,但它們仍然保留了交易的可追踪性,這意味著發送者對任何檢查隱秘地址交易歷史 的人都是可見的。 這意味著如果你在隱密地址收到資金,你決定將這些資金發送給的人將看到它們的來源。 此外,實際轉移的價值也是可見的。 Railgun 和 Labyrinth 隱藏了發送者以及發送的價值,但以此為代價的是這一切都發生在一個單一的合約內,而不是作為對普通以太坊地址的正常交易。

    下面的圖展示了我們在本文中討論的協議在這兩個重要的比較維度上的相互比較。

    為了更詳細地探討這些差異,以下是四個主要隱匿位址協定在六個主要維度上的比較矩陣:

  • 完整的端對端隱私(只有發送者和接收者看到支付資訊)

  • 前向保密。 透過隱匿交易接收的資金不允許第二個接收者看到資金的來源

  • 遵循 erc-5564 和 erc-6538 標準

  • 實現了可擴展的模組化架構,允許與第三方 dapp 的整合

  • 實作是否提供開發人員可以用來整合的 SDK?

  • 解決方案是否透過某種去匿名化支援提供合規性?

  • 設計是否支持將轉移的金額/價值混淆?

  • t5u9vYiEaGRw1MKRH5lDDLBQLJZdcoQeHguQFRsm.jpeg

    以下部分更詳細地捕捉了一些其他細微差別和差異。 每種實作都有有趣的細微差別,這可能會對你的用例產生影響或不產生影響。

    例如:在Fluidkey 中:所有交易直接轉到鏈上的隱匿地址,而Umbra**:** 只有ETH 轉到鏈上的隱匿地址,而代幣轉到中央合約,與Railgun 和Labyrinth 一樣 ,所有交易都轉到核心合約,而不是直接轉到鏈上的隱藏地址。

    深入探討隱匿位址的實現

    Fluidkey

    Fluidkey 是一種 erc-5564 的實現,允許用戶發送、接收、交換和橋接 ETH 和 erc-20 代幣。 在撰寫本文時,Fluidkey 已在 Base、Optimism、Arbitrum、Polygon、Gnosis 和以太坊主網上部署。

    使用者透過其網頁使用者介面與 Fluidkey 互動。 當他們首次使用錢包登入時,他們會簽署一條密鑰產生訊息,從中推導出他們的查看和支出密鑰。 每次用戶進入應用程式時,這些相同的密鑰以相同方式重新產生。

    Fluidkey 有幾種不同於其他實作的方式。 其中一個不同之處在於,使用者與 Fluidkey 共享他們的私有檢視金鑰(實際上是一個 BIP-32 派生節點)。 這使 Fluidkey 能夠為用戶產生隱藏地址,並在他們收到這些地址的付款時通知用戶。 然而,這也意味著 Fluidkey 有能力查看用戶的進帳交易和餘額,這是一個權衡。 然而,Fluidkey 仍然保持完全自我保管。

    Fluidkey 設計中的另一個有趣方面是,它為每個新的隱匿地址部署一個智慧合約帳戶。 只有在資助自隱匿地址的資金被使用時,才會發生這種情況。 智慧帳戶是一個 1/1 的安全帳戶,允許例如 gas 贊助等操作,使得更容易管理各種隱藏地址。 有關此方面的詳細信息,可以查看他們的 技術講解。

    雖然 Fluidkey 確實保留了對用戶帳戶的可見性,這在合規性方面可能潛在地成為一種優勢,儘管 Fluidkey 將如何處理未來潛在的執法請求的確切框架尚未公開。 他們位於瑞士,儘管須遵守當地法律,但數據保護法律非常清晰且強大——必須有非常明確的理由才能分享數據,並且此事還需經過法院審查(參見這篇文章了解瑞士隱私法的優秀概述 )。

    使用者也完全可以匯出他們的交易,或與第三方(如會計師)分享他們的檢視金鑰,這對企業尤其有用。 值得注意的是,根據 erc-5564 規範,公共密鑰的共享是“全或無”,這意味著它無法單獨透露孤立的單筆交易。 此外,與所有 erc-5564 實現一樣,可追溯性並未被打破——只是與用戶的關聯性被打破——這意味著每個隱匿地址的交易歷史對於擁有查看密鑰的人是公開的。 Fluidkey 一個不太為人所知的功能是能夠旋轉檢視金鑰,這將允許使用者每月使用新的檢視金鑰,並且只與第三方共用特定月份的檢視存取權限。

    Fluidkey 方法的一個好處是,隱性位址本身不是由傳送者產生的,而是由 Fluidkey 在每次查詢 ENS 時偽隨機產生的。 這更快,因為用戶不必透過公告事件掃描以識別自己是收件人的交易。 這也意味著發送者不需要隱藏地址錢包來為接收者產生隱藏地址——他們只需像其他地址一樣發送資金。 這也意味著沒有涉及註冊合約,這是 Fluidkey 設計的獨特之處,也是一個主要優勢。

    值得一提的是,Fluidkey 致力於完全自我保管,並且他們已開源了其隱匿帳戶工具包庫,並且在不太可能的情況下Fluidkey 一夜之間消失的情況下,還有幾個獨立 開發的恢復介面可用,這意味著資金永遠不會被鎖定或卡住。

    透過使用智慧合約帳戶,Fluidkey 可以自動抽像管理各個隱匿位址。 這意味著,如果你想從你在各個隱匿地址中的餘額中向特定接收者轉移特定金額,Fluidkey 可以自動計算出用於轉移資金的地址組合,處理所有的gas 費用和合約部署,所有這些都 在後台進行。 Fluidkey 還允許使用者透過一個稱為標籤的酷功能,對要組合的位址進行一些控制,讓使用者將位址標記為不同的類別。

    Fluidkey 要求使用者建立專屬 Fluidkey 的 ENS 名稱。 這些靜態名稱有兩種形式:username.fkey.id 和 username.fkey.eth,一個是指向發送資金給某人的網頁介面的 URL,另一個是可以與錢包一起使用的標準 ENS 名稱。

    ENS 設定使用 ENS offchain reSOLver(也稱為 erc-3668: CCIP Read)來傳回隱匿位址。 每次查詢離線解析器時,它會為相應的 ENS 名稱產生並傳回一個新的隱藏位址。 這是一個很好的功能,因為它允許用戶擁有一個單一的人類可讀的 ENS 名稱,同時仍然保留隱匿地址的隱私,因為生成的隱匿地址無法追溯到 ENS 名稱。

    Fluidkey 是免費使用的,不收取費用。 當你想要支出資金時,每個有資金的地址都需要部署一個 Safe 合約的費用。 然而,儘管在主網相對昂貴,但在 L2 上這實際上是微不足道的,通常低於 1 美分,即使將多個隱匿地址合併為一次轉帳。

    他們也可以透過Safe 部署進行gas 贊助——他們計算gas 的費用,並從用戶的餘額中扣除,即使它是一個代幣——在這種情況下,轉發者部署Safe 並代表用戶轉移 代幣。

    Umbra Cash

    Umbra 是 Scopelift 實作的 eip-5564 + eip6538。 當使用者登入 Umbra 應用程式時,他們會經歷一個設定階段,在此階段他們簽署一條訊息,從中派生出支出和查看金鑰及相應的隱藏元位址。 然後,他們將此隱匿元地址註冊到他們的主錢包地址的鏈上註冊表中。 這是實作與 Fluidkey 的不同之處。

    Umbra 對 erc-5564 的實作最接近規範,因為他們無法存取使用者的金鑰。 雖然這意味著Umbra(或其他任何人)無法看到用戶的資金,但這確實意味著為了接收資金,發送者必須擁有一個與erc-5564 相容的錢包(或Umbra 應用程式)以產生他們的隱匿元 地址。

    當有人想要 發送 資金給使用者時,他們通常會使用 Umbra 應用程式來完成。 基本上,Umbra 應用程式會尋找註冊到 ENS 名稱/錢包位址的隱匿元位址並產生一個隱匿位址。 收件人可以登入 Umbra 應用程式並掃描自上次登入以來發送到屬於他們的隱藏地址的任何資金。 由於一些巧妙的緩存,這似乎只需 10-15 秒進行每週掃描,儘管用戶也可以選擇指定區塊範圍以縮小掃描範圍。 Umbra v2 將包含使用視圖標籤,這將進一步加快流程。

    我們之前提到的隱藏地址的一個問題是,為了讓收件人支出發送到隱藏地址的資金,該地址需要有 ETH 或其他必要的 gas 代幣來支付交易費用。 在大多數網路上,如果隱匿位址最初收到了 ETH,這通常不是問題。 然而,如果隱匿地址收到了 erc-20 代幣或 NFT,那麼用 ETH 為地址提供 gas 的行為可能會將該地址與用戶的其他地址關聯,從而失去隱私。

    為了繞過這個問題,Umbra 使用了一個涉及 轉發者 的構造。 當任何非 ETH 的資產發送給 Umbra 用戶時,它實際上是發送到一個特殊合約,而不是直接發送到隱藏地址。 用戶可以透過向 Umbra 的轉發者發送元交易(來自 Umbra 應用)來支出發送到他們隱藏地址的資金,轉發者將代表用戶從智能合約中轉移資金。 轉發者將扣除一些代幣以覆蓋 gas 費用的成本,並且最初僅支援一定數量的代幣。

    Umbra 合約在低交易費用的網路上轉移資金時也會收取少量費用,以抑制垃圾郵件。 其理由是,垃圾郵件會增加掃描交易以識別相關交易的成本,因此這被視為一個可接受的權衡。

    Umbra 目前部署在以太坊主網,以及 Optimism、Polygon、Gnosis Chain 和 Arbitrum。

    Umbra 註冊合約有有趣的設計。 部署方法使用 create2 和標準 create2 部署器,智慧合約位址在任何網路上都是相同的。 這意味著如果合約在給定網路上存在,則客戶端可以確保這是正確的合約。 客戶端可以設定以新增網絡,任何人都可以部署到任何網路。 他們已經規範化了字節碼,合約沒有所有者,這允許任何人在任何鏈上無權限地部署註冊和公告合約。

    Scopelift 目前正在開發 Umbra 的第 2 版,該版本引入了一種新的模組化架構,允許核心合約擴充以支援新的代幣標準或非支付用例。 使用這種新架構,第三方開發者可以為任何類型的代幣標準建立模組,例如 erc-1155、erc-7621、支援 erc-4337 付款方,或你能想到的任何其他內容。 目前,Umbra 核心合約支援兩種場景,一種用於 ETH,另一種用於 erc-20。 V2 將支援許多不同的場景。

    Labyrinth

    Labyrinth 是一個不基於 eip-5564 + eip6538 的協議,而是使用零知識證明為交易增加匿名性和隱私。 Labyrinth 的白皮書將其描述為「zkFi」中間件:「zkFi 提供了一種打包解決方案,充當具有內建合規性的隱私中間件」。 內建合規性指的是Labyrinth 的“選擇性去匿名化”,這是一種複雜的解決方案,允許某些交易對特定授權方(即法律機構如國際刑警等)去匿名,同時保持透明和 開放。

    Labyrinth 使用的核心智慧合約包括一個多交易和多資產池,允許用戶在單一交易中交易多種資產。 為了支出資產,用戶掃描網路並獲取加密的票據數據,解密票據,並過濾出他們想要支出的資產。 隨後,用戶建立一個 zkp,其中包括交易和與他們想要支出的交易相關的票據的簽署金鑰。

    Labyrinth 核心合約的一部分包括一個轉換合約,它與模組化代理合約接口,這些合約基本上是外部合約的代理。 因此,例如:如果使用者想使用 Labyrinth 與 Uniswap 交互,使用者將建立一個交易,該交易將使用轉換合約透過 Uniswap 的代理合約來呼叫 Uniswap 池上的交換操作。

    Labyrinth 的 zkFi 協議使用「票據」來追蹤餘額和轉移。 票據本質上是描述某種資產的某個數量及其所屬地址的資料結構。 客戶端儲存重建票據所需的信息,並使用此資訊支出資產。 對票據的承諾(資產 ID、所有者和價值的哈希)儲存在鏈上的默克爾樹中。 實際上,Labyrinth 使用兩個默克爾樹,一個用於票據,一個用於根地址。

    筆記資料結構包含以下內容:

    • assetId:此筆記代表的資產的識別碼(ETH、WBTC、MATIC 等)。

    • value:筆記所代表的價值或金額。

    • leafIndex:此筆記將被插入的承諾默克爾樹的葉節點索引。

    • blinding:一個隨機的保護因子。

    • rootAddress:擁有支出權限的使用者的根位址。

    • revoker:所選撤銷者的公鑰點。

    你會注意到,上述資料結構並未包含資產的所有者的任何引用,這很奇怪,因為在筆記默克爾樹中記錄的承諾是資產 ID、價值和所有者的哈希。 實際上,所有者是從根地址、撤銷者和隨機保護因子計算得出的,因此對於外部觀察者而言,所有者實際上是每個新交易產生的新地址。

    關於Labyrinth,特別有趣的是,它與傳統的基於隱密地址的協議略有不同,資產池實際上是一個保護池,它利用筆記的概念創建了一種屏蔽的UTXO 池,從而為交易 提供了前向保密性。 回想一下,在 eip-5564 實作中,用戶轉帳的物件將能夠查看這些資金的來源。 換句話說,Alice用隱密地址支付給Bob,Bob再支付給查理,因此查理現在可以看到Bob最初從Alice那裡收到這些資金,等等。 Labyrinth 的保護池並非如此。

    要理解這個保護池是如何運作的,我們需要看看在協議內部資金是如何轉移的:

    使用者在保護池中的餘額是對應資產的筆記總和。 為了花費這些筆記,使用者需要揭示那些筆記的「無效標識」。 無效標識是唯一與筆記相關的,一旦該筆記被花費,該無效標識就被標記以防止雙重消費,並根據該已花費的筆記創建一個新筆記。 相同資產的多個筆記可以合併,還可以建立多個新筆記。 無效標識就是 (?,?,?) 的哈希,其中 ? 是在筆記默克爾樹中筆記承諾的索引,? 是承諾,? 是一個隨機元素,也稱為保護因子。

    隱密交易轉帳的接收者透過與 eip-5564 相同的方式識別轉賬,因為他們監聽從核心合約發出的事件,並確定他們將能夠從中發送資金的隱密地址,並在本地記錄這些地址。 透過利用視圖標籤和在應用程式生命週期內非同步本地快取和同步筆記,識別來款資金的速度也得到了提升。

    目前正在進行研究,以加快發現接收資金的過程,看看 Aztec 的這個提案:Request for Proposals: Note Discovery Protocol — Aztec。

    在花費資金方面,使用者還必須產生一個 zk 證明,這與基本上是普通以太坊地址的 erc-6654 實作不同。 生成證明需要一個相容的錢包,性能相對較好,在中檔 Android 設備上大約需要 20 秒左右。

    Labyrinth 提供了一些不錯的功能,可以解決隱密交易中的一些痛點。 發送到 Labyrinth 核心合約的交易作為用戶操作透過 erc-4337 打包商發送。 此設定允許在不需要 ETH 或交易的 gas 代幣的情況下花費筆記,因為用戶可以利用 erc-4337 支付者為他們支付 gas,從而增加了額外的隱私層。 唯一的例外是初始存款,它不會作為使用者操作提交。 使用 erc-4337 支付者的另一個好處是能夠透過被轉移的資產支付 gas,即使它們是 erc-20 代幣,因此 Labyrinth 公開了一個 gas 價格預言機 API。

    Labyrinth 的另一個非常好的功能是其模組化架構,允許轉換器合約作為第三方去中心化應用的代理。 這不僅允許用戶使用隱密交易轉移資金,還可以與第三方去中心化應用(例如 DEX,如 Uniswap、Aave、Lido 等)進行互動。 這些代理「轉換器」合約本質上實現了一個函數,接收入量某種資產,並輸出一些資產,基礎邏輯存在於某個第三方合約中。

    Labyrinth 透過一個名為選擇性去匿名化(SeDe)的框架確保合規和監管的遵循。

    回想一下,筆記的資料結構包含一個名為「撤銷者」的欄位。 撤銷者是可以啟動去匿名化過程的特定實體的位址。 使用者必須從預定義清單中選擇至少一個撤銷者。 撤銷者並非單獨負責識別潛在的非法或不當活動,但可以回應執法機構的請求。

    撤銷者沒有單獨的能力直接去匿名化交易,但他們負責發起去匿名化請求。 這些請求公開發布給監護人,監護人是一個監督隱私和合規性的實體委員會。 監護人必須透過投票決定是否允許去匿名化交易。 如果監護人可以達到法定人數並投票支持,撤銷者可以解密交易數據,從而將相關交易與先前的交易聯繫起來,直到交易鏈被完全去匿名化為止。

    這個系統創建了一系列制衡機制,因為監護人不能單獨決定揭示交易數據,即使他們勾結,也無法在沒有撤銷者的情況下做任何事情,而僅憑撤銷者也無法在監護人多數投票的 情況下做任何事。

    Railgun

    RAILGUN 是一個在以太坊、幣安智能鏈、Polygon 和 Arbitrum 上部署的隱密交易隱私系統。 該協議在某些方面類似於 Labyrinth,因為它是基於筆記,這些筆記作為承諾存儲在默克爾樹中,形成一個 UTXO 集,即通過創建新的筆記供其他接收者支出。 這意味著只有筆記的所有者可以計算其無效標識,而無效標識往往是根據支出密鑰和筆記在默克爾樹中的索引的哈希來產生的。

    Railgun 中的隱密元位址使用「0zk」的前綴,類似於 eip-5564,這是公共檢視金鑰和公共支出金鑰的組合。 然而,Railgun 在 BabyJubJub 曲線上使用 Ed25519 密鑰,而不是 ECDSA 和 secp256k1。 就像 eip-5564 一樣,用戶在 Railgun 合約中掃描所有發出的事件,並使用他們的查看密鑰確定哪些事件代表轉帳到他們的錢包。

    Railgun 使用一個廣播者網絡,這些廣播者實際上是接收用戶的元交易並將實際交易廣播到相應區塊鏈的中繼者,以代表用戶支付 gas 費用。 用戶到廣播者的交易是加密的,並使用 Waku 協定進行通信,保護最終用戶的匿名性。

    Railgun 採用模組化架構,允許它與外部智慧合約進行交互,從而提供超越簡單轉帳的功能。 它透過ADAptRelay 合約實現這一點,該合約在與外部合約進行交互之前和之後對代幣進行保護和解除保護,例如,解除保護代幣A,在某個AMM 上交換代幣B,將代幣B 保護回來給原所有者。

    在版本 3 中,Railgun 計畫利用 eip-4337,並支援傳統的元交易。 他們希望透過為 Railgun 維護一個專用的 eip-4337 userop 記憶體池,使獨立解決者能夠作為廣播者參與其中。 他們目前正與 Umbra 合作研究此問題,並識別邊緣案例及如何解決它們,更多細節請參見下面的 Railgun v3 部分。

    Railgun 協議對存款和提款收取 0.25% 的費用。 這些費用將發送到 DAO 庫房,這些費用會隨著時間推移支付給 RAIL 治理代幣的質押者。 除了 0.25% 的存款和提款費用外,廣播者通常還會收取自己的費用,而這些費用通常約為實際鏈上交易的 gas 費用的 10%。

    Railgun 具有治理系統,允許提交任何形式的提案,任何核心合約(包括財政和治理合約)的更改都必須經過 DAO 提案才能進行。 不尋常的是,Railgun 的不同實例有各自的治理。 例如,Railgun 在以太坊、Polygon 和幣安鏈上有各自獨立的治理系統和代幣。

    Railgun 提供了一套全面且文件完整的 SDK,錢包或 DApp 開發者可以使用它透過對 Railgun 的支援來建立隱藏式位址功能。 Railgun 還有一個由社區維護的 coOKBook,提供“配方”,允許 DApp 開發者為 Railgun 提供模組,使用戶能夠使用 Railgun 與他們的 DApp 進行互動。 例如,開發者可以為 DEX 編寫一個配方,使得在 Railgun 中擁有代幣餘額的用戶可以私密地交換代幣。

    Railgun 的下一個迭代將使交易成本下降 50% 至 60%。 版本 3 中的其他變更是支援 eip-4337 userops,透過專用記憶體池來實現。 此外,v3 將支援基於意圖的架構,允許解決者競爭最佳執行,儘管截至撰寫時,細節仍非常高層次。 他們目前正在與 CowSwap 合作,計劃使用前置和後置鉤子來允許解決者存取資金。

    可以說,提案中最有趣的變化是名為Railgun Connect 的工具,它類似於WalletConnect,允許0zk 位址連接到大多數前端進行私有使用,無需這些DApp 透過自訂模組明確提供與Railgun 的 集成。

    Railgun Connect 是瀏覽器擴展,它的實際操作是使用 HardHat 本地複製鏈的狀態,並將其自己的 web3 提供者註入到 DApp 中,具有本地 HardHat 版本鏈的 RPC 端點。 這使得你可以像往常一樣與 DApp 合約進行交互,記錄交易,然後將其批處理並創建 snark 證明,並將其發送到實際鏈上的 Railgun 合約。 雖然這個描述稍微簡單,但它傳達了一個整體想法。 這使你能夠基本上與幾乎任何 DApp 進行互動(對於需要額外鏈下處理的 DApp 可能會有一些邊緣情況)。 需要注意的是,本地保存鏈的狀態是一項耗費資源的操作,但一旦完成,你就可以使用 Railgun 的隱匿地址與 DApp 進行交互,而沒有和使用普通錢包的任何不同。

    結論

    關於在以太坊協議中確立隱匿地址,目前有一些有趣的提案。 例如,Inco 使用了一個 erc-20 「包裝器」的概念,該包裝器對普通的 erc-20 合約進行封裝,並加密所有餘額。 轉帳和批准均在加密狀態下透過全同態加密進行。 Inco 依賴目前僅存在於其自身網路上的預編譯,但將來可能會轉移至以太坊。

    還有另一個提案叫做EIP-7503: Zero-Knowledge Wormholes,其基於一種稱為「燃燒證明」的設計,儘管這一提案似乎並未獲得廣泛關注,可能因為它需要對EVM 進行更新 ,而沒有此更新,它實際上只能在代幣層面實現,使用專門支援eip-7503 的erc-20 設計(或如果某個L2 決定為其EVM 操作碼添加支援)。

    Aztec 可能是目前最複雜的隱私技術,但需要用戶將資金橋接到 Aztec 才能使用,這對大多數用戶來說可能並不可接受。 然而,如果以太坊用戶對基本交易隱私的需求成長,那麼 Aztec 可能會擁有獨特的價值主張,成為一個非常有價值的 L2,因為 DApp 和用戶遷移到一個預設提供隱私的平台。

    同樣,Intmax 是一個以隱私為中心的以太坊L2(基於Plasma 設計),它還有一個合規監管的方面,透過ZKP 基於AML 證明驗證個人資金的合法性,並對交易金額施加限制 。 Intmax 在為轉帳提供隱私方面有限制,而 EVM 智能合約作業則不具備隱私。 然而,與 Aztec 不同,智能合約可以在 Solidity 中編寫,一些開發者可能更喜歡這種方式(取決於用例)。

    雖然我們看到隱藏式位址協定的採用增加,這是一個正面的訊號,但仍然有許多挑戰。 最重要的挑戰是它們尚未在主流以太坊錢包中得到全面支持(至少目前尚未)。 主流錢包在提供對隱匿地址的支援時可能需要做出幾個選擇。 這些選擇包括:

    • 他們會為單一實現提供意見性的支持,還是會建立並維護某種跨多個協議的綜合聚合器? 後者在開發和維護方面可能代價高昂。

    • 是否會有監管考量,是否需要在選擇性去匿名的範圍和機制上採取立場(例如 Labyrinth 的情況)?

    • 隱匿位址需要一個鏈上元件,透過註冊合約(Fluidkey 除外),這意味著每個 EVM 網路必須明確得到錢包的支援(儘管 Umbra 的設計便利了註冊表的無許可部署)。

    • 隱匿位址使得與區塊探測器(例如 Etherscan)的現有整合變得更加複雜。 例如,「在探測器上查看」按鈕將不適用於隱藏元位址,因為錢包顯示的是匯總餘額。 這個問題在轉帳中也可能存在。 這些邊緣案例需要被認真考慮。

    • 根據底層實現,使用者僅能夠有效地與特定的一組 DApp 使用隱匿位址,即那些受到底層協定支援的 DApp。 模組化隱匿位址架構將使這一點成為可能。 然而,並非所有 DApp 都會被支持,並且需要以某種方式通知用戶。 使用 eip-5506 時這一點相對容易,但仍然會有複雜性和邊緣案例,這可能會滲透到錢包的用戶體驗中。

    在防止用戶隱私衛生不良方面也有改進的空間,請參閱本文:“Anonymity Analysis of the Umbra Stealth Address Scheme on Ethereum”,作者成功地對以太坊主網上的 48.5% 隱形交易進行了去匿名化。 他們使用的啟發式方法與協議無關,而更多是關於隱私衛生,例如用戶將資金發送到他們控制的隱形地址,然後將這些資金發送回最初的發送地址,錯誤地認為可追蹤性已經被打破 。 總體而言,作者確定了 6 種不同的啟發式方法可以用於去匿名化隱形位址交易,主要都是基於不遵循最佳實踐。 然而,這些都是需要解決的關鍵使用者體驗問題。

    整體而言,我對隱形地址以及以太坊中的隱私相當看好。 我認為我們取得了相當令人印象深刻的進展,並發現了一些非常可修復的挑戰。 我相信主流錢包將找到提供隱形地址支援的方法,讓用戶可以輕鬆使用這些地址,並享有用戶所期待和應得的正常隱私水平。

    感謝所有在研究和建立隱形位址基礎設施方面投入時間和辛勤工作的團隊,包括我在這篇文章中提到的四個協議。 他們的努力和堅韌將對以太坊產生巨大影響!

    本站轉載文章皆來自公開網絡,部分由AI整理,僅為傳遞產業訊息,不代表BTCC立場。原創權益歸原作者所有。如發現版權問題,請透過[email protected]聯絡我們,我們將依法處理。 BTCC不對資訊準確性、時效性及完整性作任何保證,不承擔因依賴資訊而產生的任何責任。內容僅供參考,不構成投資、法律或商業建議。