Qtum支持隐私资产的动机以及未来技术规划阐述
扫描二维码
随时随地手机看文章
日前,Qtum核心开发工程师Shannon发布了隐私资产技术提案QIP-19。该提案想通过预编译智能合约实现隐私协议,以此来实现在Qtum网络上发行带有隐私保护的资产和Token。并在《如何在现有的区块链上增加隐私功能?》一文中分析了隐私资产的一个代表性项目Zether。本文则主要分析目前该领域内进行中的一些研究工作。
链上资产
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等。