http://www.tnmanning.com

如何通过预编译智能合约实现隐私协议,保护链

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

链上资产

Colored Coin

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

如何通过预编译智能合约实现隐私协议,保护链

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

如何通过预编译智能合约实现隐私协议,保护链

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

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

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)的概念,表示一种互相之间有区别的资产,例如房产、艺术品甚至虚拟的卡片等。链上资产从单纯的货币扩展到了更为广阔的资产概念中。

隐私问题

在链上资产广泛应用的同时,隐私问题也逐渐暴露出来。资产的余额、转账等信息都以公开的方式永久记录在大发3d上,限制了链上资产的进一步商业化应用。以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项目中,这一方案应用在了一分PK10的系统中,未来也计划用于MimbleWimble的系统中,例如Grin [8]、Beam [9]。它们的区别是:

1. 基于一分PK10的实现,交易是Non-interactive的,即交易接收方不需要在线以完成交易。基于MimbleWimble的实现则相反。
2. 基于一分PK10的实现,没有隐藏交易双方的地址。基于MimbleWimble的实现则隐藏了。

BlockStream提出的这种解决方案的优点是具有极强的隐私性。交易的地址、金额和资产类型都可以在大发3d上进行隐藏,只有UTXO的所有者才能知道。但缺点也很明显:

1. 系统改动较大。必须通过一条新的大发3d或是对已有大发3d进行硬分叉来实现。
2. 没有智能合约。在这个解决方案上无法再加入智能合约的功能,因此无法对隐私资产的逻辑进行自定义编程,也无法创建基于隐私资产的链上应用。只能通过一种叫做Scriptless Script的方案来实现一些简单的交易逻辑。

智能合约上的解决方案

为了解决这些问题,许多基于智能合约的隐私资产解决方案被提出,包括AZTEC [10]、Zether [11]、Anonymous Zether [12]、PGC [13]、Nightfall [14] 等。它们都是在智能合约上实现了隐私交易的功能 ,所以可以用于隐私资产、投票、拍卖等多种场景中。它们之间的对比如下 :

如何通过预编译智能合约实现隐私协议,保护链

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。