1. 引言
去中心化金融(Decentralized Finance,簡稱DeFi)是當前金融創新領域的重要發展方向。在DeFi中,對交易資訊的隱藏和用戶隱私的維護是至關重要的。隨著DeFi的不斷擴展與深化,各類項目層出不窮,充滿了活力。而零知識證明(Zero-knowledge proof,簡稱ZK)技術的應用,為DeFi的隱私保護開啟了新的可能。 ZK技術使得一方可以向另一方證明他們知道某個信息,而無需透露任何關於該信息的具體細節。這種技術在諸如ZigZag、unyfy以及OKX的ZK DEX等DeFi專案中的應用,大大強化了DeFi的隱私保護能力,尤其是對於交易資訊的保護。可以預見,ZK技術的廣泛應用將帶來對DeFi以及整個加密貨幣領域處理方式的革新,並推動整個領域的未來發展,實現重大突破。
2. DeFi中的隱私挑戰
區塊鏈上沒有秘密,DeFi的數據透明度也是無可爭議的。以Uniswap V3上的某一筆交易為例,我們可以透過Etherescan網站輕鬆查看該交易詳情(如圖1)。例如,地址0x3A4D…a6f2在Uniswap V3上用2 WETH兌換了17,654,123,249,375 Bonk,交易費用為0.0046 Ether。這些交易中的發送者(From)、接收者(To)、交易金額(Value)以及手續費(Transaction Fee)等關鍵資訊都是公開可查的。
圖1 在etherescan上公開的交易細節
我們也可以查看0x3A4D…a6f2地址下的所有交易記錄(如圖2所示),如果條件允許,還可以推測出此地址在現實世界中的真實身份。
圖2 特定地址的所有交易清單在etherescan上是公開的
然而,DeFi的數據透明度可能會帶來一些不利影響。如果你是DeFi巨鯨,你的每一筆交易都可能會引起市場的關注,例如,當某巨鯨從幣安提取1124萬枚WOO(約420萬美元),這筆交易就會引起廣泛關注。同樣,任何大額支付或機構級的交易行為,也可能引發公眾的廣泛關注。
市場的其他參與者可能會根據這些交易行為做出買賣決策,進而對你的投資策略產生不利影響。例如,你在某個專案中投入了大量資金,但一旦你的交易被市場察覺,其他投資人可能會緊跟在後,導致資產價格上漲,進而增加你的投資成本。此外,你的銷售操作也可能引發市場恐慌,導致價格下跌,影響你的投資報酬率。
這種情況突顯了DeFi專案和使用者對隱私保護的迫切需求。如果我們不希望自己的交易細節被大眾知曉,可以選擇讓DeFi交易的某些資訊保持私密。
ZK技術在隱藏交易細節的同時,也能確保交易的合法性。使用者需要提交兩類資訊:一是部分隱藏細節(如交易接收者或金額)的交易(即隱私交易),二是關於這些隱藏資訊的ZK證明。驗證一個隱私交易的合法性,實際上是在驗證對應的ZK證明。
3. 解鎖DeFi潛力:ZK技術帶來的機會
3.1 ZK技術在抵禦搶跑交易中的作用
假設你有幸得知一家大公司即將購買大量的某種資產,你可能會選擇先於這家公司購買這種資產。然後,當這家公司的大量購買行為推高了資產價格後,你再將其賣出,從而獲取利潤。在這種情況下,你先於大公司進行的交易就構成了搶跑交易。
搶跑交易是一種在金融交易中的投資策略,通常發生在交易所中,例如Uniswap。這是因為在區塊鏈中的交易是公開的,而且交易確認需要一定的時間。因此,一些惡意的交易者可能會透過提高交易Gas費用,讓自己的交易優先於其他人的交易被挖礦確認,以此來達到搶跑交易的目的。
搶跑交易會對其他的交易者造成損害,因為它改變了原本的交易環境,使得其他交易者的交易可能無法按照原計劃進行。另一方面,攻擊者發動搶跑交易的目的也是為自己牟利,他們可以在價格變動前取得利潤。因此,許多DeFi計畫也正在嘗試透過各種方式來防止搶跑交易的發生。
ZK技術在抵禦搶跑交易中可以發揮關鍵作用。以下,以去中心化交易所(Decentralized Exchange,簡稱DEX)中的三明治攻擊為例,這也是一種常見的搶跑交易類型,進行案例分析。
案例分析:DEXs中的三明治攻擊
什麼是三明治攻擊?
假設在一個DEX上,有一個流動性池,其儲備狀態為100 ETH / 300,000 USDT。 Alice發起了一筆購買USDT的交易,即以20 ETH交換USDT。當她提交交易時,DEX會根據當前流動性池的儲備狀態返回一個結果,告訴Alice可以買到大約50,000 USDT。但實際上Alice最後只拿到了45,714 USDT。
這裡,我們先來簡單了解為什麼Alice能夠用20 ETH購買到50,000 USDT。此DEX採用了自動做市商模式(Automated Market Maker,簡稱AMM),透過恆定乘積做市商演算法(Constant Product Market Maker,簡稱CPMM)自動計算買賣價格。 CPMM是目前普及度較高的自動做市商演算法,透過維持交易池中兩種資產乘積的恆定,以實現流動性供應並自動調整資產價格。在這個例子中,透過公式50,000=300,000-(100*300,000)/(100+20)(假設沒有手續費)計算出Alice能夠買到的USDT的數量。
Alice並沒有買到預期數量的USDT,這是因為她遭到了三明治攻擊。
三明治攻擊主要發生在基於AMM的DEXs。在三明治攻擊中,攻擊者在受害者的常規交易周圍放置兩筆交易以操縱資產價格並從受害者的損失中獲利。這兩筆交易分別是搶先交易和追單交易,常規交易之前的交易被稱為搶先交易,常規交易之後的交易被稱為追單交易。
那麼,Alice遭到的三明治攻擊到底是如何進行的呢?如圖3所示。
圖3 三明治攻擊流程
-
攻擊者的搶先交易:在Alice發起的購買USDT的交易被執行之前,攻擊者也發起了一筆購買USDT的交易(搶先交易),即以5 ETH交換USDT。而且,攻擊者為這筆交易支付給礦工的gas費高於Alice,所以,攻擊者的這筆交易會先於Alice被執行。
-
攻擊者購買USDT的交易執行後,他從流動性池中拿到了大約14,286 USDT,14,286≈300,000-(100*300,000)/(100+5)。流動性池的儲備從初始狀態的100 ETH / 300,000 USDT變為105 ETH / 285,714 USDT。但是,Alice在提交交易到她的交易被執行這段時間內,並不知道流動性池的儲備狀態發生了改變。
-
受害者的常規交易:隨後,Alice的常規交易開始執行。
-
Alice購買USDT的交易被執行後,她從流動性池中拿到了45,714 USDT(根據恆定乘積函數,45,714≈285,714-(105*285,714)/(105+20))。流動性的儲備狀態從105 ETH / 285,714 USDT變為125 ETH / 240,000 USDT。所以,Alice用20 ETH本來應該可以買50,000 USDT,現在卻因為攻擊者的交易使流動性池發生的改變,只能買45,714 USDT。 Alice虧損了約4286 USDT(4286=50,000-45,714 )。
-
攻擊者的追單交易:最後,攻擊者再次發動一筆交易(追單交易),即以14,286 USDT交換ETH(這14,286 USDT是剛才買的)。
-
攻擊者的追單交易被執行後,他從流動性池拿出了7 ETH(定乘積函數,7≈125-(125*240,000)/(240,000+14,286))。流動性池的儲備狀態從125 ETH / 240,000 USDT變為118 ETH / 254,286 USDT。所以,攻擊者一開始只是花了5ETH,最後卻拿到了7ETH,獲得了2 ETH的收益(2=7-5)。
在整個三明治攻擊的流程中,攻擊者總共發動了兩筆交易,即搶先交易和追單交易。搶先交易使Alice虧損了大約4286 USDT。搶先交易和追單交易的組合,使攻擊者獲利了2 ETH。
在DEXs中,交易的公開性是導致三明治攻擊出現的關鍵因素,尤其是在AMM協議中。這些協議將DEXs上的即時交易資訊公之於眾,這種高透明度為攻擊者提供了可能,他們可以透過觀察和分析交易流動,以便尋找機會進行三明治攻擊。
ZK技術可以抵抗三明治攻擊
ZK技術的應用可以顯著減少受到三明治攻擊的可能性。透過使用ZK技術隱藏交易量、資產種類、使用者或流動性池餘額、使用者身分、交易指示及其他協議相關信息,可以有效提升交易數據的隱私性。這樣一來,攻擊者難以獲得完整的交易訊息,從而使得三明治攻擊的實施更加困難。
此外,ZK技術不只能抵禦三明治攻擊,基於ZK的隱私交易還能增加對使用者行為模型判斷的難度。任何第三方嘗試透過收集區塊鏈資料來分析帳戶歷史交易、推斷行為模式、探索活躍週期、交易頻率或偏好等,都將面臨挑戰。這種分析被稱為行為模型推斷,不僅侵犯用戶隱私,還可能為蜜罐攻擊和網路釣魚詐騙鋪路。
3.2 基於ZK技術防止流動性操縱
流動性操縱和搶跑交易都是DeFi中的攻擊方式,這兩種攻擊方式都涉及到利用市場資訊和交易速度來獲取利益,但是它們的具體策略和操作方式是不同的。
搶跑交易是利用資訊優勢,而流動性操縱是利用市場活動來誤導其他交易者。前者主要透過取得並利用未公開的重要資訊來獲利,而後者則是透過創造虛假的市場活躍度來誤導其他投資者,使他們做出不利的交易決策。
ZK技術不僅可以在抵禦搶跑交易中發揮關鍵作用,它還可以幫助防止流動性操縱。
案例分析:利用預言機進行流動性操縱
假設你正在一個繁忙的水果市場購買蘋果。市場的價格通常會根據供應和需求的變化而浮動。你通常會觀察一段時間的價格,然後根據平均價格來決定是否要購買。現在想像有一個非常富有的買家進入市場,他非常想買蘋果。他開始大量購買蘋果,不在乎價格如何。這會導致蘋果的價格短時間內暴漲。如果你仍然根據這個價格購買蘋果,你可能會付出比實際價值更高的價格。
這個例子可以更好地理解TWAP(Time-Weighted Average Price,時間加權平均價格)預言機的工作原理和流動性操縱的概念。根據平均價格決定購買蘋果的行為類似於TWAP預言機的操作,富商大量購買蘋果導致價格上漲則類似於流動性操縱。
TWAP預言機透過計算一段時間內的平均交易價格來決定資產價格。交易的時間越近,對平均價格的影響就越大。如果有人短期內進行大量交易或大量資金交易,可能大幅影響資產的平均價格,這就是流動性操縱。流動性操縱會人為抬高或壓低資產價格,導致價格資訊不準確。如果有人想利用TWAP預言機故意提高資產價格,他可以短期內用大量資金購買該資產,使價格短暫上漲。如果在這個時間窗口內,資產價格出現了顯著的增加,TWAP預言機可能會將這個較高的價格視為資產價格。
對TWAP預言機實施流動性操縱會對DeFi協議產生重大影響,尤其是流動性較低的新興代幣。這些DeFi協議通常會根據資產的價格來做出財務決策,例如清算、借貸等。如果價格資訊不準確或不可靠,就可能導致錯誤的決策,進而為使用者帶來損失。因此,防止TWAP預言機受到流動性操縱是至關重要的。
ZK技術可以抵抗流動性操縱
基於ZK技術可以抵抗TWAP預言機當中的流動性操縱。可以設計一個智能合約,使其依賴TWAP預言機來獲取資產價格。如果攻擊者進行了流動性操縱行為,從TWAP預言機取得的價格可能會超出預設的可接受範圍。在這種情況下,該合約將會暫時停止其操作。然後,它將基於ZK技術重新計算並確認資產價格。
要使用ZK技術計算資產價格,首先需要在TWAP預言機中添加一個包裝合約(wrapper contract)。該合約可以直接存取N 個價格報告,或記錄價格在任意間隔的N個檢查點值。一旦給定間隔內有N 個資料點可用,就可以建立ZK證明來證明未排序價格數組的中位數(the median of the unsorted array of prices)。未排序價格數組被標記為列向量x,長度是N。以下是基於ZK技術計算資產價格的過程:
-
證明可以用以下兩種方式中的任一種進行驗證,無論哪種情況,證明者都不能任意選擇一個價格數組作為輸入。
-
從合約儲存中檢索數組值,並將其作為公開輸入用於鏈上驗證器;
-
透過雜湊函數逐步形成哈希鏈,將數組表示為單一哈希值,並在鏈上驗證器中使用該值。
-
存在一個N x N的矩陣A(square matrix),當矩陣乘以列向量x時,產生列向量y,使得y=Ax。 A是一個可逆的排列矩陣,但由於可能存在重複的價格值,A並不一定是唯一的,且A只包含二進位值。
-
y中的值是有序的,即yiyi+1 i 0…N-1。再次說明,不能使用<,因為可能存在重複的價格值。
-
電路的公開輸出m是y的中位數(median vaue)。證明顯示y⌊N/2⌋=m,其中N是電路編譯時的靜態值,必須為奇數。
根據上述過程,基於ZK技術輸出了一個價格的中位數m,該值是防篡改的。中位數m可以在一定程度上防止流動性操縱,為了實現這一點,我們需要限制y的值,使得在每個區塊中,y的值只被插入一次,或者被插入的次數在可接受的範圍內。
3.3 ZK技術為借貸平台賦能
如上所述,ZK技術能夠抵禦DEXs中的搶跑交易和流動性操縱。那麼,我們是否可以進一步探究ZK技術在其他DeFi場景中的應用可能性呢?例如,在DeFi專案的重要組成部分—借貸,ZK技術也能發揮關鍵的作用。
借貸的關鍵:如何評估借款人信用
在傳統借貸平台上,貸款申請流程通常涵蓋申請、信用評估、貸款核准、貸款發放及償還等五個步驟。其中,信用評估的環節尤其重要,借款人必須證明其收入達標,並且具備還款能力。在評估過程中,平台會深入調查借款人的信用歷史,包括收入、負債以及過去的還款記錄等,以確保有能力償還貸款。只有在此基礎上,平台才會考慮批准貸款申請。
然而,當你轉向去DeFi借貸平台,如Aave或Compound,情況就會有所不同。大多數DeFi借貸平台由於其去中心化的特性,沒有傳統銀行的KYC(Know Your Customer,了解你的客戶)程序和風險評估環節,也無法透過聯合徵信社來調查借款人的信用狀況。在這種情況下,你可能會疑惑,我的信用將如何進行評估?
在DeFi借貸平台上,你可以透過聲譽代幣證明來證明自己的信用水準。聲譽代幣是一種以區塊鏈技術為基礎的信用體系,透過數位代幣來表徵和量化用戶的信譽。聲譽代幣的數量成為評估用戶信譽的重要指標,代幣數量越多,意味著用戶的聲譽越好,信用等級也相應提高,從而在DeFi借貸平台上有可能獲得更多的貸款額度。
然而,聲譽代幣的產生需要依賴用戶的交易歷史和財務訊息,這可能會侵犯用戶的隱私權。
評估借款人信用:基於ZK技術的信譽代幣
ZK技術可以保護用戶隱私。 ZK技術和聲譽代幣的結合,能夠在保護用戶隱私的同時,維護和追蹤其在網路中的聲譽。
用戶可以藉助ZK技術,在不公開歷史交易的情況下,產生信譽代幣。一方面,用戶可以基於ZK技術來產生歷史交易的證明;另一方面,由智能合約(通常被稱為信譽代幣生成合約)對該證明進行驗證,驗證通過即可產生信譽代幣。
此外,在某些需要超額抵押的DeFi借貸平台上,聲譽代幣可以降低抵押要求,從而解決過度擔保的問題,並提高市場的流動性。且基於ZK技術的聲譽代幣的應用並不僅限於DeFi借貸平台,它還可以廣泛應用於保險、醫療補助等領域。
4. 總結與展望
本文探討了ZK技術在DeFi中實現隱私保護的多種應用場景,特別是在抵禦搶跑交易、流動性操縱和借貸方面的潛力。在探索DeFi的過程中,我們面臨多項挑戰,特別是與隱私和安全相關的問題。 DeFi生態系統中的隱私挑戰是一個關鍵議題,而ZK技術提供了獨特的解決方案,不僅能增強隱私保護,還能提高交易效率和安全性。
展望未來,ZK技術可能會在更深入的DeFi領域中得到應用,例如流動性質押、衍生性商品協議、真實世界資產、保險等。 Salus專注於研究和探索ZK技術在DeFi以及其他以太坊應用層專案的應用。我們誠摯邀請全球的區塊鏈研究者、技術開發者以及web3領域的所有專業人士,與我們共同努力,推動ZK技術的深度發展和廣泛應用,以帶動DeFi乃至整個產業的發展。