1. 背景
以太坊聯合創辦人Vitalik Buterin曾明確指出,如果不進行隱私過渡的技術轉變,以太坊就會失敗。因為所有交易都公開可見,對許多用戶來說隱私犧牲太大,大家都會轉向至少在某種程度上隱藏資料的中心化解決方案。
2023年,Vitalik在隱私權保護和零知識證明(zero-knowledge proofs,ZK)技術的推進上進行了一系列的研究。上半年,Vitalik在他的網站上發布了三篇專門討論ZK和隱私保護的文章。 4月,他在Reddit上也展示了一項關於錢包監護人隱私問題的研究。 9月,他與其他專業人士共同撰寫了一篇論文,提出了一個針對平衡隱私與合規之間的解決方案。
此外,以太坊生態也積極推動這個主題的討論和普及。在3月的ETHDenver活動中,舉辦了一場專注於隱私的特別活動。在5月份的EDCON(Ethereum Community Conference)年度會議上,Vitalik強調了「未來10 年, ZK-SNARK將與區塊鏈一樣重要」。
本文追蹤了2023年以太坊生態在利用ZK技術推動隱私保護的最新動態。如果您想躋身於以太坊ZK賽道,本文能提供必要的解讀與指導。
2. 以太坊ZK賽道:打造隱私保護的未來
以太坊的透明性可能使用戶的個人資訊面臨洩漏風險。以太坊等區塊鏈上沒有秘密,所有資訊都是公開的,這包括交易、投票等其他鏈上活動。這樣的公開性可能導致特定的交易和地址被追踪,並與真實用戶身份關聯。因此,在以太坊上實現隱私保護變得至關重要。想要隱藏鏈上資訊可以透過加密技術來實現,但挑戰在於在保護隱私的同時,確保這些交易的有效性得以驗證。 ZK技術提供了一種解決方案,能夠在不透露額外資訊的情況下證明交易的真實性,兼顧了隱私和可驗證性。
以太坊高度重視ZK-SNARK ,特別是在某些關鍵的隱私保護應用情境中,其重要性尤其突出。這一點在Vitalik的研究和提案中得到了明顯體現,Salus整理了Vitalik在研究中提出的典型場景,即隱私交易和社交恢復。
2.1 隱私交易
關於隱私交易,Vitalik提出了兩個概念:隱私地址(Stealth Addresses)和隱私池(Privacy Pools)。
1.隱私地址方案允許在隱藏交易接受者身分的前提下進行交易。這種方案既提供了隱私保護功能,同時又確保了交易的透明度和可審計性。
2.基於隱私池協議,用戶可以在不揭露歷史交易的前提下,證明自己的交易資金屬於已知合規來源。這種方案允許使用者在遵守法規的前提下,進行隱私交易。
這兩個方案都離不開ZK。在這兩個場景下,允許使用者產生零知識證明,來證明他們的交易的有效性。
2.1.1 隱私地址
假設Alice打算向Bob轉移某種資產,當Bob接收該資產時,他並不希望全球大眾都知道他是接收者。儘管難以掩蓋資產轉移行為的事實,但隱藏接收者的身分則具有可能性。正是在這樣的背景下,隱私地址方案應運而生,其主要解決的問題便是如何有效隱藏交易接收方的身份。
那麼,隱私地址究竟與普通的以太坊地址有什麼不同呢?如何使用基於ZK的隱私地址進行隱私交易? Salus將逐一為您介紹。
(1)隱私地址與普通的以太坊地址有什麼不同?
隱私地址是允許交易發送者以非互動方式生成,且只能由其接收者存取的地址。我們從隱私地址由誰生成,誰可以存取兩個維度來說明其與普通的以太坊地址的差異。
由誰生成?
普通的以太坊地址由用戶本人根據加密和哈希演算法產生。而隱私地址可以由本人生成,也可以由交易的另一方生成。例如,Alice向Bob轉帳時,Bob用來進行接受轉帳的地址可以由Bob生成,也可以由Alice生成,但只能由Bob控制。
誰可以訪問?
普通的以太坊帳戶下的資金種類、數量和來源都是公開可見的。而在使用隱私地址進行的交易中,只有接收者才能存取儲存在其隱形地址中的資金。觀察者無法將接受者的隱私地址與他們的身份關聯起來,從而保護了收件人的隱私。
(2)如何使用基於ZK的隱私地址進行隱私交易?
如果Alice想要向Bob的隱私地址發送資產,以此來隱藏交易接收者。以下是交易過程的詳細說明:
1.產生隱私地址
●Bob產生並保存一個消費金鑰(spending key),這是一個私鑰,可以用來消費發送到Bob的隱私地址的資金。
●Bob使用消費性金鑰產生一個隱私元位址(stealth meta-address),這個位址可以用來為給定的接收者計算一個隱私位址,並將隱私元位址傳遞給Alice。 Alice對隱私元位址進行計算,產生一個屬於Bob的隱私地址。
2.發送資產到隱私地址
●Alice將資產寄到Bob的隱私地址。
●由於Bob此時並不知道這個隱私位址是自己的,因此Alice還需要在鏈上發布一些額外的加密資料(一個臨時公鑰,ephmeral pubkey),幫助Bob發現這個隱私地址屬於他。
上述過程中的隱私位址也可以使用由哈希建構的零知識證明和公鑰加密來建構。隱私地址中的智能合約代碼可以與ZK整合。透過嵌入零知識證明驗證邏輯,智能合約能夠自動驗證交易的有效性。這種建構隱私地址的方案相比其他方案,包括橢圓曲線加密技術(elliptic curve cryptography)、橢圓曲線同源(elliptic curve isogenies)、格(lattices)、通用黑盒原語(generic black-box primitives)更為簡單。
2.1.2 隱私池
無論是透過隱藏交易接收者的身分或交易的其他資訊來實現隱私交易,都存在著一個主要的問題:使用者如何證明自己的交易資金屬於已知合規來源,而不必揭露他們的整個交易歷史。以太坊作為一個公開的區塊鏈平台,必須避免成為洗錢和其他違法行為的媒介。
Vitalik提出了一個名為"隱私池"的解決方案,致力於平衡區塊鏈的隱私保護和合規需求。然而,隱私保護和合規性的挑戰是什麼?如何平衡隱私和合規性?對於這兩個問題,Salus提供了深入且具指導意義的討論。
(1)隱私保護和合規性挑戰
在實現隱私保護的同時,確保交易合規是一項挑戰,這可以透過分析Tornado Cash案例得到生動的展示。
Tornado Cash是一種加密貨幣的混音器(mixer),將大量的存取款行為混合在一起。用戶在一個地址存入token 後,出示ZK Proof 證明自己存過款,再用一個新地址提款。這兩種操作是公開在鏈上的,但二者之間的對應關係不公開,所以具有匿名性。雖然它可以用戶增強隱私性,但通常被非法行為者用來洗錢。因此,美國財政部OFAC最終將Tornado Cash的智能合約地址列入了製裁名單。監管機構認為該協議為洗錢提供了方便,不利於打擊金融犯罪。
Tornado Cash在隱私保護上的缺點在於,無法驗證使用者的token來源是否符合。針對此問題,Tornado Cash提供了一個中心化伺服器用來幫助用戶證明他的token是合規的。但是,伺服器必須獲取用戶提供提款的具體信息,確定這個提款對應的是哪一個存款,以此來產生證明。這種中心化的機制不僅存在信任假設代價,還會產生資訊不對等。最終,該機制幾乎沒有用戶使用。雖然Tornado Cash實現了隱私功能,但它並沒有提供一個有效的機制來驗證用戶token的來源是否合規,這才讓犯罪者有機可乘。
(2)如何平衡隱私和合規性?
基於以上挑戰,Vitalik提出了Privacy Pools的概念,允許用戶在不洩露歷史交易資訊的前提下,證明自己的資金來源是合規的。以此在隱私和合規性之間尋求平衡。
Privacy Pools是基於ZK和關聯集合(association set)的,允許用戶生成並發布ZK-SNARK證明,證明他們的資金來自已知的合規來源。這意味著這筆資金屬於一個合規的關聯集合,或不屬於一個不合規的關聯集合。
關聯集合由關聯集合提供者根據特定的策略來建構:
1.Membership Proof:將所有受信任交易平台的存款放入一個關聯集合,而且,有確切證據認為它們是低風險的。
2.Exclusion Proof:確定一組被標記為有風險的存款,或有確切證據認為是不合規資金的存款。建立一個包含除這些存款以外的所有存款的關聯集合。
存款時,使用者透過ZK產生一個secret,並雜湊計算出一個公開的coin ID,來標記自己與這筆資金的關聯。提款時,使用者提交一個與secret對應的nullifier(nullifier是secret中派生的唯一識別碼),證明這筆資金是自己的。而且,用戶透過ZK來證明兩個merkle分支,以此證明自己的資金屬於已知的合規來源:
1.他的coin ID屬於coin ID tree,這是目前發生的所有交易的集合;
2.他的coin ID屬於關聯集合樹(association set tree),這是使用者認為的一些合規交易的集合。
(3)ZK在隱私池中的應用場景?
1.確保隱私交易的彈性:為了在隱私交易中也能處理任意麵額的轉賬,每筆交易中附加了額外的零知識證明。這個證明能確保創建的token的總面額不會超過被消費的token的總面額,以此來確保交易的有效性。其次,ZK透過驗證每個交易對原始存款token ID 的承諾來維護交易的連續性和隱私性,使得即使在部分提款的情況下,也能保證每筆提款與其對應的原始存款相關聯。
2.抵抗餘額求和攻擊(balance-summing attacks) :透過合併token並對一組token ID進行承諾,以及對多個輸入的交易進行父交易的並集承諾,可以抵抗餘額求和攻擊。這種方法依賴ZK,確保所有承諾的token ID都在其關聯集合中,從而增強交易的隱私性。
2.2 社交恢復
在現實生活中,我們可能有多個銀行卡帳戶。遺失銀行卡密碼就意味著我們無法使用銀行卡裡面的資金。在這種情況下,我們通常會去銀行尋求協助找回密碼。
類似的,在以太坊等區塊鏈中,我們可能有多個地址(帳戶)。私鑰如同銀行卡密碼,是控制帳戶資金的唯一工具。一旦你遺失了私鑰,你就失去了對帳戶的控制權,無法再存取帳戶中的資金。類似於現實世界的密碼找回,區塊鏈錢包提供了社交恢復機制來幫助用戶找回自己遺失的私鑰。這種機制允許使用者在創建錢包時選擇一組可信任的個體作為監護人(guardians)。這些監護人可以在使用者遺失私鑰的情況下,批准重置使用者的私鑰的操作,從而幫助使用者找回對帳戶的控制權。
在這種社交恢復和監護人機制下,Vitalik提出了兩個需要關注的隱私權保護要點:
1.隱藏使用者多個位址之間的關聯性:為了保護使用者隱私,我們需要防止在使用單一復原短語恢復多個位址時,這些位址的歸屬關係被揭露。
2.保護使用者財產隱私免受監護人侵犯:我們必須確保在批准使用者操作的過程中,監護人無法取得使用者的資產資訊或觀察其交易行為,以防止使用者財產隱私被侵犯。
實現這兩種隱私保護的關鍵技術是零知識證明。
2.2.1 隱藏使用者多個位址之間的關聯性
(1)社交恢復中的隱私問題:地址之間的關聯性被揭露
在以太坊等區塊鏈中,用戶為了保護自己的隱私,通常會產生多個地址進行各種交易。透過使用不同的地址進行每一筆交易,可以防止外部觀察者輕易地將這些交易關聯到同一用戶。
然而,如果用戶的私鑰遺失,由該私鑰產生的多個地址下的資金也將無法找回。在這種情況下,就需要進行社交恢復。一種簡單的復原方法是透過一鍵恢復多個位址,即使用者使用同一個復原短語來還原由一個私鑰產生的多個位址。但這種方法並不理想,因為使用者產生多個位址的初衷就是為了防止它們被相互關聯。如果用戶選擇在同一時間或相近的時刻恢復所有地址,這實際上等於向外界透露了這些地址都是同一用戶所擁有的。這種做法違背了使用者最初創建多個地址為了保護隱私的初衷。這就構成了社交恢復過程中的一個隱私保護問題。
(2)ZK解決方案:如何避免多個地址的關聯性被揭露?
ZK技術可以用來隱藏區塊鏈上一個使用者的多個位址之間的關聯性,透過一種將驗證邏輯和資產持有分開的架構(an architecture that separates verification logic and asset holdings)來解決社交恢復時的隱私問題。
1.驗證邏輯:使用者在區塊鏈上擁有多個位址,但所有這些位址的驗證邏輯都連接到一個主要的身份驗證合約(keystore contract)。
2.資產持有與交易:當使用者從任一地址進行操作時,他們利用ZK技術來驗證操作權限,而無需透露具體是哪個地址。
這樣,即使所有地址都連接到同一個keystore合約,外部觀察者也無法確定這些地址是否屬於同一用戶,從而實現了地址之間的隱私保護。
設計一個既能夠同時恢復使用者多個地址,又不揭露地址之間關聯性的隱私社交恢復方案是非常重要的。
2.2.2 保護使用者財產隱私免受監護人侵犯
(1)隱私問題:監護人的特權
在以太坊等區塊鏈中,用戶可以在創建錢包時設置多個監護人(guardians)。特別是對於多重簽名錢包(multisig wallets)和社交恢復錢包(social recovery wallets),監護人的角色是至關重要的。通常,監護人是由其他人持有的N個位址的集合,其中任意M個位址都可以批准一個作業。
監護人有哪些特權?比如:
1.對於多重簽名錢包,每筆交易必須得到N個監護人中的M個的簽名才能進行。
2.對於社交恢復錢包,如果用戶的私鑰遺失,那麼N個監護人中的M個就必須簽署一則訊息以重置私鑰。
監護人可以批准您的操作。在多重簽名中,這將是任何交易。在社交恢復錢包中,這將是重置您的帳戶私鑰。如今,監護人機制面臨的挑戰之一是,如何能夠保護使用者的財務隱私不受監護人侵犯?
(2)ZK解決方案:保護使用者財產隱私免受監護人侵犯
Vitalik在這篇文章中展望,監護人保護的不是你的帳戶,而是一個「保險箱(lockbox)」合約,你的帳戶與這個保險箱之間的連結是隱藏的。這意味著監護人無法直接存取使用者的帳戶,只能透過一個隱藏的lockbox合約來進行操作。
ZK的主要功能是提供一個證明系統,讓監護人證明某個語句是真實的,而無需透露語句的具體細節。在這種情況下,監護人可以使用ZK-SNARK來證明他們有權執行某個操作,而不需要揭示與「帳戶和鎖箱之間的連結」相關的任何詳細資訊。
2.3 探索:以太坊生態中ZK與隱私的新篇章
以太坊ZK賽道目前雖然還處於發展階段,許多創新的想法和概念仍在構思和研究中,但以太坊生態系統已經展開了更廣泛的實際探索活動。
(1)以太坊基金會的資助
今年9月份,以太坊基金會(Ethereum Foundation)資助了兩個關於隱私保護的項目, IoTeX和ZK-Team 。 IoTex是一個基於零知識證明的帳戶抽象錢包,ZK-Team致力於使組織能夠在管理團隊成員的同時維護個人隱私。
(2)投資
今年10月份,以太坊聯合創始人Vitalik投資了Nocturne Lab s ,旨在將私人帳戶(private accounts)引入以太坊。用戶將在Nocturne 中擁有'internal'帳戶,從這些帳戶接收/支出資金的方式是匿名的。透過ZK技術,用戶可以證明他們擁有足夠的資金用於支付、質押等交易。
(3)會議和活動
ETHDenver被認為是全球最重要的以太坊和區塊鏈技術相關活動之一。今年3月份,ETHDenver舉辦了一場專注於隱私的特別活動。這個活動不僅顯示了以太坊社群對隱私問題的關注,也反映了全球區塊鏈社群對隱私保護的重視。在這次特別活動中,舉辦了Privacy by Design 、 Privacy vs Security等九場隱私相關的主題會議。
EDCON(Ethereum Community Conference)是由以太坊社區主辦的一場全球範圍內的年度會議,旨在促進以太坊的發展和創新,加強以太坊社區的聯繫和合作。在今年5月份的EDCON會議上,Vitalik發表了一項重要聲明,他表示:「在未來10年,ZK-SNARKs將與區塊鏈一樣重要」 。這個聲明強調了ZK-SNARKs在區塊鏈技術發展趨勢中的重要地位。
(4)項目
目前,已有一些應用層專案開始使用ZK技術為使用者和交易提供隱私保護服務。這些應用層項目稱為ZK Applications。例如,部署在以太坊上的ZK Application, unyfy ,一個隱私資產交易所。這裡的交易訂單價格被隱藏,這些被隱藏價格的訂單的完整性由ZK技術進行驗證。除了unyfy,還有其他一些L2s上的ZK Applications,例如ZigZag和Loopring等。雖然這些ZK Applications基於ZK實現了隱私保護功能,但目前還不能部署在以太坊上,因為EVM不能直接運行這些ZK Applications。
(5)研究
而且,研究者們在Ethereum Research平台上對ZK技術及其應用進行了激烈的討論,其中,有一篇來自Salus的研究文章致力於利用ZK來促進以太坊應用層的隱私保護等實現。這篇文章測試了幾種不同的ZK語言的效能,Circom、Noir和Halo2,結果顯示,Circom具有更好的效能。這篇文章也提出了一個通用性的解決方案,在Solidity中整合Circom,可實現基於ZK的以太坊應用層專案。這對以太坊實現隱私過渡具有重要意義。這項研究在2023年獲得了顯著的關注度,位居榜首。
這篇研究文章是Ethereum Research上2023年閱讀量最高的研究---作者Salus
3. 挑戰
儘管眾多現有的以太坊應用層專案迫切需要引入基於ZK的隱私保護機制,但這項進程面臨一系列的挑戰。
1. ZK人才資源匱乏:ZK技術的學習要求堅實的理論基礎,尤其是在密碼學和數學領域。由於ZK技術的實作涉及複雜的公式,學習者也需要具備較強的公式解讀能力。但問題是,專注於學習ZK技術的人相對較少。
2. ZK開發語言的限制:Rust、Cairo、Halo2等語言被用於開發ZK證明電路,但它們通常只能適用於特定的場景,不適用應用層專案。其中一些語言(例如Cairo)還處於實驗階段,不同版本之間可能存在相容性問題,這增加了在實際應用中採用它們的難度和複雜性。
3. ZK技術實施難度:Vitalik提出的將ZK技術應用於以太坊隱私保護的方案,在實際執行中可能面臨多種複雜問題,例如,如何避免隱私交易不會遭到餘額求和攻擊(balance- summing attacks),雙花攻擊等。解決這些問題有一定的技術難度。
4.隱私保護vs.合規性:隱私交易雖然可以保護用戶的身分和交易細節,但同時也可能掩蓋非法活動,如洗錢。未來,以太坊上的ZK Applications在實現隱私保護過程中是否可以合規,還有待驗證。
儘管存在挑戰,以太坊要實現隱私轉變--確保提供隱私保護的資金轉移,並確保正在開發的所有其他工具(社交恢復、身份、聲譽)都能保護隱私的前提是--廣泛部署ZK Applications。上文提到Salus發布的研究是基於ZK技術來促進以太坊應用層的隱私保護等功能。而且, Salus首次提出了一個整合Circom和Solidity,並應用於以太坊應用層專案的通用性解決方案,基於Circom在鏈下實現ZK證明系統,基於Solidity在以太坊上實現智能合約和ZK驗證邏輯。如果您需要支援或有任何問題,歡迎隨時聯絡Salus 。
4. 總結與展望
2023年,以太坊社群在Vitalik Buterin的引領下,深入探討了零知識證明技術的潛力,目的是增強平台的隱私保護功能。雖然這些提議還處於研究階段,但Vitalik的研究和論文,特別是關於隱私保護與合規性平衡的方案,為零知識技術在保護用戶隱私奠定了理論基礎。
儘管在將零知識證明技術整合到以太坊中存在挑戰,但隨著技術的成熟和社區的持續努力,預計零知識證明將在不久的將來在以太坊生態系統中發揮更加重要的作用。因此,及時參與和積極探索這一領域,利用早期機遇,將有助於在這一新興領域中佔據有利位置。