日前,Qtum核心開發(fā)工程師Shannon發(fā)布了隱私資產技術提案QIP-19。該提案想通過預編譯智能合約實現隱私協議,以此來實現在Qtum網絡上發(fā)行帶有隱私保護的資產和Token。并在《如何在現有的區(qū)塊鏈上增加隱私功能?》一文中分析了隱私資產的一個代表性項目Zether。本文則主要分析目前該領域內進行中的一些研究工作。
鏈上資產
Colored Coin
比特幣發(fā)展早期,開發(fā)者們一直探索如何在比特幣的交易中存儲特定的數據。直到2013年0.9.0版本的發(fā)布,比特幣腳本中增加了OP_RETURN這一新的opcode。OP_RETURN允許在比特幣的輸出腳本中記錄最多80 byte的數據。之后,使用了OP_RETURN的交易數量快速上升[1]。
基于OP_RETURN誕生了一系列協議,具體參見[2]。這些協議利用了區(qū)塊鏈上信息公開且不可變的特性,將應用的數據以特定的格式存儲在OP_RETURN中,從而構建了各種各樣的應用。其中的一類協議,例如Open Assets[3]、Omni Layer[4],允許用戶在比特幣的區(qū)塊鏈上創(chuàng)建新的資產,資產的發(fā)行、轉賬等數據存儲在OP_RETURN中。以Omni Layer為例,支持的數據類型如下:
由此,大量的比特幣鏈上資產出現。其中大多數資產會與真實世界中的一種資產進行錨定,例如黃金、鉆石等。這類資產又被稱作Colored Coin。至今,我們最為熟悉的一種Colored Coin是USDT,它以美元作為錨定,出現在大多數的數字貨幣交易所中。
在比特幣區(qū)塊鏈上發(fā)行資產有著很多優(yōu)勢。其中最為重要的一點是,發(fā)行方可以借助比特幣本身的安全性和易用性來維護資產,而不需要自己進行區(qū)塊鏈系統的開發(fā)。
ERC-20和ERC-721
以太坊最大的創(chuàng)新在于智能合約。通過智能合約,可以更為靈活地構建鏈上去中心化應用,即DApp。智能合約也常被用來構建鏈上資產。為了規(guī)范以太坊上資產的接口形式,社區(qū)提出了ERC-20 [5]標準。
ERC-20定義了一種基于以太坊智能合約的token資產標準。標準提供了基本的token轉賬以及授權的功能,從而讓第三方,包括錢包、交易所,可以復用同樣的接口處理不同的token。我們熟悉的USDT也在以太坊上有ERC-20的實現。ERC-20的具體接口如下:
隨著以太坊上DApp的多樣化,token資產已經不能滿足需求。隨著CryptoKitties等收藏型DApp的出現,社區(qū)又提出了ERC-721 [6]標準。ERC-721提出了NTF(Non-Fungible Token)的概念,表示一種互相之間有區(qū)別的資產,例如房產、藝術品甚至虛擬的卡片等。鏈上資產從單純的貨幣擴展到了更為廣闊的資產概念中。
隱私問題
在鏈上資產廣泛應用的同時,隱私問題也逐漸暴露出來。資產的余額、轉賬等信息都以公開的方式永久記錄在區(qū)塊鏈上,限制了鏈上資產的進一步商業(yè)化應用。以USDT為例,其發(fā)行、銷毀和轉賬,通常都會被第三方監(jiān)控且解讀。如果使用USDT給他人轉賬,自己賬戶下的余額就會暴露給對方,這在一些商業(yè)場景下是令人難以接受的。
隱私資產
為了解決鏈上資產的隱私性,許多解決方案被提出。
UTXO上的解決方案
BlockStream率先在2017年提出了一種UTXO上的隱私資產實現方案 [7],并且應用在了Elements項目中。該方案用Pedersen Commitment代替了原本的交易金額:commitment = xG + a(H + rG)
其中a是交易金額。G和H是橢圓曲線上的生成點。G是常量。H表示資產類型,對于不同的隱私資產取不同的值。x和r稱作Blinding Factor。它們在每個UTXO中都會隨機選擇不同的值,分別用于進一步隱藏交易金額和資產類型。
在資產的創(chuàng)建、交易和銷毀過程中,還需要引入一些證明,來證明隱藏的交易金額和資產類型取值合理。用于交易金額的證明稱作Range Proof,證明了其數值是一個正數。用于資產類型的證明稱作SurjecTIon Proof,用于證明其取值屬于一個特定的集合。
在Elements項目中,這一方案應用在了比特幣的系統中,未來也計劃用于MimbleWimble的系統中,例如Grin [8]、Beam [9]。它們的區(qū)別是:
1. 基于比特幣的實現,交易是Non-interacTIve的,即交易接收方不需要在線以完成交易?;贛imbleWimble的實現則相反。
2. 基于比特幣的實現,沒有隱藏交易雙方的地址。基于MimbleWimble的實現則隱藏了。
BlockStream提出的這種解決方案的優(yōu)點是具有極強的隱私性。交易的地址、金額和資產類型都可以在區(qū)塊鏈上進行隱藏,只有UTXO的所有者才能知道。但缺點也很明顯:
1. 系統改動較大。必須通過一條新的區(qū)塊鏈或是對已有區(qū)塊鏈進行硬分叉來實現。
2. 沒有智能合約。在這個解決方案上無法再加入智能合約的功能,因此無法對隱私資產的邏輯進行自定義編程,也無法創(chuàng)建基于隱私資產的鏈上應用。只能通過一種叫做Scriptless Script的方案來實現一些簡單的交易邏輯。
智能合約上的解決方案
為了解決這些問題,許多基于智能合約的隱私資產解決方案被提出,包括AZTEC [10]、Zether [11]、Anonymous Zether [12]、PGC [13]、Nightfall [14] 等。它們都是在智能合約上實現了隱私交易的功能 ,所以可以用于隱私資產、投票、拍賣等多種場景中。它們之間的對比如下 :
基于智能合約的隱私資產的優(yōu)點是:
1. 可編程性(Programmability)。可以通過智能合約修改資產的發(fā)行、銷毀、轉賬、交易、鎖定等邏輯,賦予隱私資產更多的功能和屬性。
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]查看具體取值。對比上文中的表格可以發(fā)現,這些解決方案的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] 所計劃,后續(xù)可以通過增加預編譯合約,讓更多的隱私資產方案能夠運行在Qtum上。比如,可以增加secp256k1橢圓曲線的預編譯合約,從而優(yōu)化Zether、Anonymous Zether和PGC這3個方案的性能。又比如,可以增加Schnorr簽名、Bulletproofs的預編譯合約,從而讓MimbleWimble以合約的方式運行在Qtum上。
未來
后續(xù),我們將繼續(xù)深入探索如何將隱私資產應用到Qtum上。研究內容包括預編譯合約、Range Proof、MimbleWimble等。