如何透過預編譯智慧合約實現隱私協議,保護鏈上資產隱私?

買賣虛擬貨幣
日前,Qtum核心開發工程師Shannon釋出了隱私資產技術提案QIP-19。該提案想透過預編譯智慧合約實現隱私協議,以此來實現在Qtum網路上發行帶有隱私保護的資產和Token。並在《如何在現有的區塊鏈上增加隱私功能?》一文中分析了隱私資產的一個代表性專案Zether。本文則主要分析目前該領域內進行中的一些研究工作,並闡述Qtum支援隱私資產的動機以及未來技術規劃。鏈上資產Colored Coin

比特幣發展早期,開發者們一直探索如何在比特幣的交易中儲存特定的資料。直到2013年0.9.0版本的釋出,比特幣指令碼中增加了OP_RETURN這一新的opcode。OP_RETURN允許在比特幣的輸出指令碼中記錄最多80 byte的資料。之後,使用了OP_RETURN的交易數量快速上升[1]。

基於OP_RETURN誕生了一系列協議,具體參見[2]。這些協議利用了區塊鏈上資訊公開且不可變的特性,將應用的資料以特定的格式儲存在OP_RETURN中,從而構建了各種各樣的應用。其中的一類協議,例如Open Assets[3]、Omni Layer[4],允許使用者在比特幣的區塊鏈上建立新的資產,資產的發行、轉賬等資料儲存在OP_RETURN中。以Omni Layer為例,支援的資料型別如下:

由此,大量的比特幣鏈上資產出現。其中大多數資產會與真實世界中的一種資產進行錨定,例如黃金、鑽石等。這類資產又被稱作Colored Coin。至今,我們最為熟悉的一種Colored Coin是USDT,它以美元作為錨定,出現在大多數的數字貨幣交易所中。

在比特幣區塊鏈上發行資產有著很多優勢。其中最為重要的一點是,發行方可以藉助比特幣本身的安全性和易用性來維護資產,而不需要自己進行區塊鏈系統的開發。

ERC-20和ERC-721

以太坊最大的創新在於智慧合約。透過智慧合約,可以更為靈活地構建鏈上去中心化應用,即DApp。智慧合約也常被用來構建鏈上資產。為了規範以太坊上資產的介面形式,社羣提出了ERC-20 [5]標準。

ERC-20定義了一種基於以太坊智慧合約的token資產標準。標準提供了基本的token轉賬以及授權的功能,從而讓第三方,包括錢包、交易所,可以複用同樣的介面處理不同的token。我們熟悉的USDT也在以太坊上有ERC-20的實現。ERC-20的具體介面如下:

隨著以太坊上DApp的多樣化,token資產已經不能滿足需求。隨著CryptoKitties等收藏型DApp的出現,社羣又提出了ERC-721 [6]標準。ERC-721提出了NTF(Non-Fungible Token)的概念,表示一種互相之間有區別的資產,例如房產、藝術品甚至虛擬的卡片等。鏈上資產從單純的貨幣擴充套件到了更為廣闊的資產概念中。

隱私問題

在鏈上資產廣泛應用的同時,隱私問題也逐漸暴露出來。資產的餘額、轉賬等資訊都以公開的方式永久記錄在區塊鏈上,限制了鏈上資產的進一步商業化應用。以USDT為例,其發行、銷燬和轉賬,通常都會被第三方監控且解讀。如果使用USDT給他人轉賬,自己賬戶下的餘額就會暴露給對方,這在一些商業場景下是令人難以接受的。

隱私資產

為了解決鏈上資產的隱私性,許多解決方案被提出。

UTXO上的解決方案

BlockStream率先在2017年提出了一種UTXO上的隱私資產實現方案 [7],並且應用在了Elements專案中。該方案用Pedersen Commitment代替了原本的交易金額:commitment = xG + a(H + rG)

其中a是交易金額。G和H是橢圓曲線上的生成點。G是常量。H表示資產型別,對於不同的隱私資產取不同的值。x和r稱作Blinding Factor。它們在每個UTXO中都會隨機選擇不同的值,分別用於進一步隱藏交易金額和資產型別。

在資產的建立、交易和銷燬過程中,還需要引入一些證明,來證明隱藏的交易金額和資產型別取值合理。用於交易金額的證明稱作Range Proof,證明了其數值是一個正數。用於資產型別的證明稱作Surjection Proof,用於證明其取值屬於一個特定的集合。

在Elements專案中,這一方案應用在了比特幣的系統中,未來也計劃用於MimbleWimble的系統中,例如Grin [8]、Beam [9]。它們的區別是:

1. 基於比特幣的實現,交易是Non-interactive的,即交易接收方不需要線上以完成交易。基於MimbleWimble的實現則相反。
2. 基於比特幣的實現,沒有隱藏交易雙方的地址。基於MimbleWimble的實現則隱藏了。

BlockStream提出的這種解決方案的優點是具有極強的隱私性。交易的地址、金額和資產型別都可以在區塊鏈上進行隱藏,只有UTXO的所有者才能知道。但缺點也很明顯:

1. 系統改動較大。必須透過一條新的區塊鏈或是對已有區塊鏈進行硬分叉來實現。
2. 沒有智慧合約。在這個解決方案上無法再加入智慧合約的功能,因此無法對隱私資產的邏輯進行自定義程式設計,也無法建立基於隱私資產的鏈上應用。只能透過一種叫做Scriptless Script的方案來實現一些簡單的交易邏輯。

智慧合約上的解決方案

為了解決這些問題,許多基於智慧合約的隱私資產解決方案被提出,包括AZTEC [10]、Zether [11]、Anonymous Zether [12]、PGC [13]、Nightfall [14] 等。它們都是在智慧合約上實現了隱私交易的功能 ,所以可以用於隱私資產、投票、拍賣等多種場景中。它們之間的對比如下 :

基於智慧合約的隱私資產的優點是:

1. 可程式設計性(Programmability)。可以透過智慧合約修改資產的發行、銷燬、轉賬、交易、鎖定等邏輯,賦予隱私資產更多的功能和屬性。
2. 互操作性(Interoperability)。隱私資產可以和其他代幣、拍賣、投票、質押等合約進行互動,給予隱私資產更多的應用。

這些解決方案的實現,得益於以太坊上BN-128橢圓曲線相關的預編譯合約功能。BN-128是一條pairing-friendly的橢圓曲線,之前主要用在zk-SNARK中。以太坊透過EIP-196 [15]、EIP-197 [16] ,增加了3個預編譯合約,分別實現了BN-128上的加法(ECADD)、標量乘法(ECMUL)和pairing check。這些預編譯合約很大程度地減少了透過智慧合約進行橢圓曲線計算的gas消耗,讓基於合約的隱私解決方案得以實現。

然而,以太坊對每個block的gas有一個總量限制,其值大概在8M,可以從etherscan [17]檢視具體取值。對比上文中的表格可以發現,這些解決方案的gas都十分接近block的gas限制,所以難以執行在以太坊上。EIP-1108 [18]提議降低bn128預編譯合約的gas(如下圖所示,Current Gas Cost為當前預編譯合約的gas開銷,Updated Gas Cost為EIP-1108提議的預編譯合約gas開銷),EIP-1109 [19]則提議降低所有預編譯合約的gas。但這些EIP都需要透過硬分叉才能應用在以太坊中,因此需要很長一段時間才能實現。

Qtum和隱私資產

Qtum上的智慧合約基於了以太坊的EVM。在即將進行的硬分叉 [20] 中,Qtum將對虛擬機器進行升級以支援BN-128橢圓曲線相關的預編譯合約。因此上述基於智慧合約的隱私資產解決方案都能直接應用於Qtum。

另外,Qtum對於每個block的gas限制是40M,遠高於以太坊。這一限制還可透過Qtum的DGP(Decentralized Governance Protocol)進一步線上修改。因此隱私資產在Qtum上執行時不需要再考慮gas過高的問題。

最後,如QIP-19 [21] 所計劃,後續可以透過增加預編譯合約,讓更多的隱私資產方案能夠執行在Qtum上。比如,可以增加secp256k1橢圓曲線的預編譯合約,從而最佳化Zether、Anonymous Zether和PGC這3個方案的效能。又比如,可以增加Schnorr簽名、Bulletproofs的預編譯合約,從而讓MimbleWimble以合約的方式執行在Qtum上。

未來

後續,我們將繼續深入探索如何將隱私資產應用到Qtum上。研究內容包括預編譯合約、Range Proof、MimbleWimble等。

參考文獻
[1]https://p2sh.info/dashboard/db/op_return-statistics?panelId=3&fullscreen&orgId=1&from=now-10y&to=now
[2] https://arxiv.org/pdf/1702.01024.pdf
[3] https://github.com/OpenAssets
[4] https://github.com/OmniLayer
[5]https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
[6]https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
[7]https://elementsproject.org/features/issued-assets/investigation
[8] https://www.grin-forum.org/t/confidential-assets/1217
[9]https://medium.com/beam-mw/mimblewimble-confidential-assets-b33539eb7033
[10] https://github.com/AztecProtocol/AZTEC
[11] https://crypto.stanford.edu/~buenz/papers/zether.pdf
[12] https://github.com/jpmorganchase/anonymous-zether
[13] https://eprint.iacr.org/2019/319.pdf
[14] https://github.com/EYBlockchain/nightfall
[15] https://eips.ethereum.org/EIPS/eip-196
[16] https://eips.ethereum.org/EIPS/eip-197
[17] https://etherscan.io/blocks
[18] https://eips.ethereum.org/EIPS/eip-1108
[19] https://eips.ethereum.org/EIPS/eip-1109
[20] https://github.com/qtumproject/qips/issues/10
[21] https://github.com/qtumproject/qips/issues/19

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;