剛剛宣佈上線的隱私協議 Aztec 使用了結合零知識證明和同態加密的「零知識 Note」進行保密轉賬。

原文標題:《V 神讚許的 Aztec,如何讓以太坊更隱私?》
撰文:王也

隱私一直是區塊鏈從業者們十分看重的技術領域,中本聰的比特幣論文中有一個名爲「隱私」的章節,清楚地闡釋了比特幣的隱私侷限性。

比特幣是一個完全公開透明的數字貨幣,只需知道錢包地址,就能查到每一筆資金進出,這樣很容易查出帳戶與帳戶之間的關係,將比特幣錢包地址和現實中的關聯起來,讓人重新成爲互聯網時代的「透明人」。

爲了解決比特幣隱私性問題,開發者們也提出了很多以混幣原理爲核心的解決方案(Odaily 星球日報注:混幣原理就是由許多人蔘與交易,進而在某個交易場所會存在大量的買入和賣出,但是很難在買入和賣出中找到一一對應的映射關係,買入和賣出是被割裂的,所以黑客是無法從一端找出另一端的)。

而另一些開發者爲了從根本解決匿名問題,開發了各種支持隱私交易的加密貨幣,市面上主流的隱私幣可以分爲四類:混幣器類、環籤類、零知識證明類和 MimbleWimble 系,各自的代表幣種分別是 Dash、Monero、Zcash 和 Grin/Beam。但這些隱私幣本身都不支持智能合約,只是單純作爲支付工具使用。

2018 年後,開發者們開始意識到對智能合約進行隱私保護的需求在不斷增加,於是,作爲協議層的隱私層項目開始活躍在各種場景中。

同隱私幣項目不同,隱私層項目可以結合各個公鏈的支付體系,相對來說更加靈活,而且可以滿足用戶和開發者特定的隱私需求。分佈式資本合夥人黃凌波此前前接受 Odaily 星球日報的採訪中更直言隱私層項目將在 2020 年迎來大爆發。

目前在以太坊上知名的隱私項目有 NuCypher,Aztec Protocol 和 Zether 。

去年,Odaily 星球日報曾對 NuCypher 做過專訪報道:《專訪 | YC 孵化、比特大陸投資的 NuCypher 能做什麼?》今天,我們將着重介紹一下主網剛剛宣佈上線的 Aztec Protocol (以下簡稱:Aztec)。

Aztec 於 2018 年 11 月 29 日獲得 210 萬美金的種子輪投資,由 ConsenSys 領投。跟投的有著名英國風投機構 Samos Invetment 和 Entrepreneur First。除此之外還有著名天使投資人 Jeffrey Tarrant 和 Charlie Songhurst。2 月 1 日,Aztec 宣佈啓動基於以太坊主網的隱私網絡。

使用「零知識 Note」進行保密轉賬

所謂「隱私」,並非絕對,而是介於完全公開及完全隱私之間。

作爲以太坊隱私領域的先驅,Aztec 運用一系列零知識證明 (zero-knowledge proofs) 及同態加密 (homomorphic encryption) 來處理數值,並可對這些加密資料做特定邏輯運算。於是用戶可以存取這些加密訊息至區塊鏈,對其做運算驗證,而不會透露出它們真正的值。

Aztec 不會像傳統的餘額形式那樣直接顯示出「價值」,不會直接將持有者身份和它們的持有數量映射在一起,而是用「票據(note)」的方式來體現。

這些 note 在以太坊網絡上是可見的,包括每個 note 的所有者,但是除了 note 所有者之外,note 上存儲的金額數量對其他所有人而言都是隱藏的。

Aztec 提供了一種名爲 ZKAsset 的資產,在系統裏面我們稱它爲「票據 (note)」,你可以用任意數量的 ERC20 代幣轉換任一數量的票據,舉個例子,我們可以把 10,000 DAI 轉換成一張票據,而這張票據就是等值的 10,000 DAI (DAI 是由 MakerDAO 創造的錨定美元的穩定幣),此時這張票據的價值是有被記錄在區塊鏈上的。

Vitalik Buterin 讚許的 Aztec 如何增強以太坊隱私功能?

上圖這一組亂碼是用 Aztec 協議進行的轉賬記錄,其實這組亂碼就是 DAI (由 MakerDAO 創造的錨定美元的穩定幣),這時你可能會感到很奇怪,通常 DAI 會包含一組以太坊地址,及表示該地址持有 DAI 數量的數字;明顯上面的不是常規的 DAI 。

當你發送這筆交易時,你的以太坊地址( zac.creditmint.eth )變成了這筆 DAI 的持有者;但值得注意的是,沒有人能夠具體知道你擁有多少 DAI。和其他 DAI 持有者不同,你的 DAI 餘額是經過加密的,並以 Aztec 票據的零知識證明形式展現。你可以隨意地將這些 DAI 發送到不同地址,同時沒有人能看到你究竟發出去多少。

當你使用 Aztec 票據的零知識證明技術進行交易時,智能合約中不會存儲任何的餘額信息,僅僅存儲橢圓曲線點(密碼學上的概念,可以簡單地理解爲零知識證明機制的組件),而橢圓曲線點對於沒有私鑰進行解密的第三方來說都只是計算噪聲。

Aztec 票據可以被切割成任意數量

Aztec 票據的持有者能以一種合併——拆分(join-split)私密交易的形式花掉他們的票據。

上文提到額的 ZKAsset 的票據是可以切割成任意數量的,而切割時每張票據的價值此時就不是可見於區塊鏈上了,所以當我們把這個票據傳給另外一個賬號時,只有票據的擁有者可以利用 Aztec 的工具得知這張票據的價值是多少。

而這張票據也可以將任意數量的 ERC20 代幣轉換出來使用,直到這張票據裏面的 ERC20 代幣用完。而票據跟票據也可以合併,這樣的話裏面到底包含多少數量的 ERC20 就會更無法預測。

聽了原理你可能還是有些迷糊,這邊我們假設一個使用情境來解釋:一間公司想要保密的支付每個員工的薪水。這樣的情境下,要如何使用 Aztec 來達成呢?

首先公司先把 100,000 DAI 轉成一張票據 A,此時這張票據價值 100,000 DAI 是公開的。

Vitalik Buterin 讚許的 Aztec 如何增強以太坊隱私功能?

發薪水時,公司把票據 A 切成兩份,分別價值 90,000 DAI 和 10,000DAI 的兩張票據 A1,A2。

Vitalik Buterin 讚許的 Aztec 如何增強以太坊隱私功能?

接着把 A2 傳送給員工,此時這兩張票據的價值並不會公開的記錄在區塊鏈上,但是擁有者依然可以透過 Aztec 的工具來驗證其價值。

Vitalik Buterin 讚許的 Aztec 如何增強以太坊隱私功能?

員工收到代表 10,000 DAI 的票據後,當需要用錢時可以將此票據中一部分的 DAI 如 1,000 DAI 從隱藏價值的 note 切分出來,一部分變成公開的 DAI,另外一部分仍是隱藏價值的 note,此時區塊鏈上可以知道此員工換出了 1,000 DAI,但是不知道他還剩下多少 DAI,此員工也可以一直重複這個步驟把錢領出。

Vitalik Buterin 讚許的 Aztec 如何增強以太坊隱私功能?

如果下份薪水進來後,此員工還可以把他原本的兩張票據合併或切分,讓實際還有多少錢更難被推敲出來。

Aztec 如何解決互操性問題?

在公有鏈上的資產都有一定的互操性,但是如果通過目前這些零知識系統進行加密,這些資產將不再有互操性。

Aztec 爲了解決互操性問題,能夠讓 DApp 之前通過零知識證明進行資產交互,Aztec 設計了全新的零知識系統。所有 Aztec 上的資產共享同一個零知識證明所需要的公共信任設置,且所有的狀態有同一個智能合約進行管理,這個智能合約在系統中被稱爲 Aztec Cryptography Engine (ACE)。

ACE 主要有兩個功能,一是將驗證證明委託給特定的驗證合約,二是對成功的驗證證明在 Note Registry 中進行狀態更新。

Aztec 的整個設計是爲了給 DApp 開發者提供各種隱私模塊,開發人員可以將這些模塊結合在一起來搭建自己的 DApp 而不需要懂這些複雜的加密學內容。目前 Aztec 提供 7 個模塊,這些模塊在原理上是通過 Sigma 協議來證明輸入和輸出票據之間的關聯。

Aztec 目前提供的模塊有 Join Split (普通的匿名轉賬), Bilateral Swap (針對兩類不同資產之間的交易), Dividend Proof (針對具有分紅功能產品), Mint (針對會增發的產品), Burn (針對會銷燬產品),Private Range (證明資產金額從而發起有規則的交易), Public Range (與 Private Range 類似) 。

通過 Aztec 進行交易其 Gas 成本隨 Join-Split 中輸入和輸出票據的數量而定。對於完全機密的 j 交易(帶有 2 個輸入註釋和 2 個輸出註釋),成本約爲 900,000 gas。目前正在提案的 EIP-1108 能夠大大降低這些交易的成本,減少到大約 200,000-300,000 gas。目前其競爭對手 Zether 的轉賬成本在 6,000,000 gas 左右,通過 EIP-1108 能夠將其降至 1,000,000 gas 左右,在單純交易費上 Aztec 有一定的優勢。

獲得 Vitalik 稱讚的新證明機制:PLONK

雖說 Aztec 使用的「零知識 Note」證明比 ZK-Snarks 更易於使用,但仍需預信任機制。所以,Aztec 也在探索擁有其他新生解決方案的預信任機制。

Aztec 的 CTO Zac Williamson 和 Protocol Labs 的 Ariel Gabizon 在去年 8 月推出了一種全新的 ZK-SNARK 結構 ——PLONK。雖然 PLONK 仍舊像其他 Zcash SNKARs 一樣的可信設置(Trust Setup)過程,但是其可信設置是通用且可更新的。這意味着所有程序都可以重用此單個設置而不必對每個程序進行單獨設置。 由於 PLONK 對 Gas 費要求不高,所以非常適合在以太坊上使用,對以太坊而言更有實用價值。

Aztec 首席執行官 Tom Pocock 相信,PLONK 可以被用來編寫複雜的邏輯語句,同時保持完美的隱私。

就連 Vitalik 都曾在推特上公開稱讚 PLONK 將降低創建零知識證明的複雜性,使更多人能夠更容易使用它,「這意味着成千上萬的人將很容易參與進來。」

以太坊 2.0 研究員 Justin Drake 稱,「PLONK 是一種全新的零知識證明系統,支持通用或可更新的可信設置(trusted setup),而且相比 Sonic 有顯著的性能提升。這將會是在真實環境中使用零知識證明的一個巨大進步,並且不會由於可信設置而產生信任問題。」

前段時間,Aztec 宣佈通過對 PLONK ZK-SNARK 的增壓版本 TurboPLONK 進行一些早期基準測試,最終發現通用 SNARK 可匹敵(在某些情況下)甚至可超過單電路 Groth16,具體來說,基準測試中 PLONK 比 MiMC 上的 Groth16 快 2.5 倍,這意味着 Aztec 在實現基於以太坊可擴展隱私的宏偉目標邁進了重要一步。

參考資料:

《乾貨 | 隱密交易的到來:深入 AZTEC 協議》

《Aztec Protocol: ConsenSys 領投的隱私設施》

Medium:《Confidential transactions have arrived, a dive into the AZTEC Protocol》

Medium:《AZTEC 保密傳輸協議 — Devcon5 見聞》

來源鏈接:www.odaily.com