盘点各平台链上资产隐私性的解决方案:ERC-20、ERC-721、UTXO 与智能合约。

原文标题:《如何通过预编译智能合约实现隐私协议,保护链上资产隐私?》

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

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

链上资产

Colored Coin

比特币发展早期,开发者们一直探索如何在比特币的交易中存储特定的数据。直到 2013 年 0.9.0 版本的发布,比特币脚本中增加了 OP_RETURN 这一新的 opcodeOP_RETURN 允许在比特币的输出脚本中记录最多 80 byte 的数据。之后,使用了 OP_RETURN 的交易数量快速上升 [1]。

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

基于 OP_RETURN 诞生了一系列协议,具体参见 [2]。这些协议利用了区块链上信息公开且不可变的特性,将应用的数据以特定的格式存储在 OP_RETURN 中,从而构建了各种各样的应用。其中的一类协议,例如 Open Assets[3]、Omni Layer[4],允许用户在比特币的区块链上创建新的资产,资产的发行、转账等数据存储在 OP_RETURN 中。以 Omni Layer 为例,支持的数据类型如下:

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

由此,大量的比特币链上资产出现。其中大多数资产会与真实世界中的一种资产进行锚定,例如黄金、钻石等。这类资产又被称作 Colored Coin。至今,我们最为熟悉的一种 Colored Coin 是 USDT,它以美元作为锚定,出现在大多数的数字货币交易所中。

在比特币区块链上发行资产有着很多优势。其中最为重要的一点是,发行方可以借助比特币本身的安全性和易用性来维护资产,而不需要自己进行区块链系统的开发。

ERC-20 和 ERC-721

以太坊最大的创新在于智能合约。通过智能合约,可以更为灵活地构建链上去中心化应用,即 DApp。智能合约也常被用来构建链上资产。为了规范以太坊上资产的接口形式,社区提出了 ERC-20 [5] 标准。

ERC-20 定义了一种基于以太坊智能合约的 token 资产标准。标准提供了基本的 token 转账以及授权的功能,从而让第三方,包括钱包、交易所,可以复用同样的接口处理不同的 token。我们熟悉的 USDT 也在以太坊上有 ERC-20 的实现。ERC-20 的具体接口如下:

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

随着以太坊上 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] 等。它们都是在智能合约上实现了隐私交易的功能 ,所以可以用于隐私资产、投票、拍卖等多种场景中。它们之间的对比如下 :

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

基于智能合约的隐私资产的优点是:

  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 都需要通过硬分叉才能应用在以太坊中,因此需要很长一段时间才能实现。

五分钟速览链上资产隐私性解决方案:以 ERC 协议、UTXO 与智能合约为例

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

来源链接:mp.weixin.qq.com