如何将Qtum量子链与现有的隐私技术相结合

近日,qtum量子链发起2019全球线上隐私主题黑客马拉松,我们收到了许多关于大赛的问题——如何将qtum与现有的隐私技术结合?哪些技术适合移植到qtum上?在哪些具体的结合点上可以开发?本文通过结合qtum与zether的思考,希望带给你更多隐私方向的启发。
众所周知,区块链上交易和合约都处于透明状态,不适合部分商业应用场景。zether通过智能合约赋予区块链隐私交易的功能,帮助了链上资产、投票、拍卖等应用的隐私化。可是目前zether面临gas过高的问题,那我们怎么通过qtum降低gas和增加预编译合约呢?
1. 简介
区块链网络中,尽管用户的地址来自于随机生成的私钥,但地址和实体之间的对应关系还是有可能被交易所、商户泄漏,甚至被区块链数据的抓取和聚类算法所挖掘。这种程度的隐私性限制了商业场景的应用。
隐私币的热潮中,出现了包括monero、zcash、grin和beam在内具有隐私特性的公有链,而这些也已经被大多数用户所认可。但是它们使用的方法都需要对区块链系统进行较大的改动,想要在现有的区块链上去实现有一定的难度。
斯坦福大学的博士生benedikt bunz(bulletproofs防弹协议发明者之一)、斯坦福大学教授dan boneh以及visa研究部门,提出了一种基于以太坊智能合约的隐私协议:zether。
zether的基本想法是通过智能合约实现隐私交易——即隐藏交易的金额和账户的余额,并最终应用于拍卖、投票等场景中。为了满足智能合约基于account的特性,它提出了elgamal encryption、pending transfer、rolling over等机制。为了增加zether和其他合约的交互性,它又增加了lock/unlock的功能。为了提升bulletproofs的性能,它使用新的σ-bullets进行代替。
zether提出之后,受到了广泛的关注。jp morgan不但将其用于自己quorum区块链系统中,而且还尝试对其进行进一步的改进。
zether的最初设计文档位于[1],作者公布了部分源码[2]。jp morgan对其的改进文档位于[3],源码位于[4]。
2. 原理
已有的隐私交易方法,例如confidential transactions[5]与其衍生方法mimblewimble[6],都是基于utxo实现的。zether的主要想法是将这一类方法应用到智能合约中,实现基于account的隐私交易。为此,它对已有的方法进行了如下修改。
utxo到account
如果在智能合约中实现utxo,会占用大量的存储空间。所以zether的一大主要工作是将confidential transactions的utxo模型改造为account模型。
elgamal encryption
confidential transactions使用了pedersen commitments隐藏每个utxo的金额。如果对方发送给你一个pedersen commitments取值错误的utxo,不会影响你其他utxo的使用。
当改成account模型的时候,需要对每个用户接收的utxo进行金额累加,得到最终余额,存储于合约中。但如果直接对pedersen commitments进行累加,其中一个的错误会导致最终余额的错误,影响所有金额的使用。
因此,zether采用了elgamal encryption的方式,用接收方的公钥来加密交易金额。这样,接收方就能验证加密金额的正确性,然后合入到余额中。
解决front-running问题
交易的过程中,需要对交易金额和交易后余额进行范围证明。但在account模型中,如果你发起交易的同时,另一用户给你发送了一笔交易,并且在你的交易之前打包进行了区块,这样余额就发生了改变,你交易中的范围证明就不再有效。
因此,zether提出了pending transfers和rolling over的机制。即用户收到的交易并不立即合入到余额中,而是周期地合入。每个周期中,当你第一次与自己账户交互的时候,进行接收交易合入余额的操作。即,只有账户的所有者可以改变账户的余额。这样,front-running就不会发生。
重放攻击保护
假定用户在某个特定的余额下发起了一笔交易。当用户再次出现这个余额时,则这笔交易能够再次生效。这种情况就称作relay attack(重放攻击)。为了防止relay attack,zether参照了ethereum的方式,在每个账号上加上了一个nonce。用户每发起一笔交易,nonce的取值就会增加。用户的交易都需要对nonce进行签名,这样就保证了每笔交易都无法被relay。
范围证明
zether使用了σ-bullets替代bulletproofs。σ-bullets是bulletproofs和σ-protocols的结合。它的特点是可以证明更为复杂的陈述,且证明和验证的过程更加高效。
3. 思考
评价zether
zether的优点如下:
1.基于智能合约实现,对区块链底层逻辑不需要进行改动
2.基于confidential transactions方案修改,不需要zksnark那样需要信任的初始化过程
zether的缺点如下:
1.gas消耗太高。如图,每次transfer需要7188k的gas,其中6455k消耗在椭圆曲线相关计算上。
2.没有隐藏地址。相比mimblewimble,zether没有隐藏用户的地址。需要后续进一步的改进。
还有2点问题值得考虑:
1. zether官方并未对论文中的实现进行完全开源,所以无法对其进行充分验证。只能尝试对[4]中jp morgan的改进算法进行验证。
2. 需要考虑是否可以对zether进行简化,减少椭圆曲线的计算次数,从而减轻对节点计算资源的消耗。
zether & qtum
zether举例了4个主要的应用场景,包括sealed-bid auctions(私密竞标的拍卖)、 payment channels(支付通道)、stake voting(权益证明投票)、privacy-preserving proof-of-stake(保护隐私的pos)。其中,前两个是和隐私相关的商业应用场景,是qtum当前重点关注的方向之一;后两者增加了pos过程的隐私性,可适用于qtum共识机制的改进。
zether目前gas消耗太高,无法有效应用于ethereum。以太坊的一些eip[7][8]可以降低其gas,但需要很长的一段时间来实现这些改进。另外,通过增加预编译合约来实现隐私算法中一些常用的算法,也会对zether的应用有很大帮助。这些改进都可以基于qtum来实现。
未来计划
首先,需要在qtum运行zether的智能合约,查看其gas消耗以及对节点计算资源的真实消耗。其次,需要深入调研其他基于智能合约的隐私方案,例如aztec[9]等。最后,可以考虑如何基于qtum即将推出的x86虚拟机上增加一些隐私解决方案。

浅谈ADAS-LDW车道检测与跟踪方法的算法实例代码
【技术分析】Lierda NB-IoT OpenCPU实验课程第三章第五期——FOTA适配相关使用例程
集成电路设计企业博通集成发布2021年报
新款Macbook Air和Macbook Pro的拆解信息
IMEC和英特尔携手研发替代CMOS的新器件
如何将Qtum量子链与现有的隐私技术相结合
区块链与汽车行业连接将可以创造出更多的可能性
OPPO R11和小米Note3对比评测:谁才是真正的有颜有实力旗舰机?
国产车规MCU上车情况调研
如何使用智能手机和简单的Android应用程序来控制机器人汽车
ZMC430N运动控制器在转盘式视觉筛选设备中的应用
纳米蠕虫为纳米项链结构提供了新的方法途径
物联网和嵌入式之间该如何选择
小波提取图像特征方法研究
详细探讨基于可饱和吸收效应被动锁模技术的发展情况
小米Smoovie多功能红外探测仪上架京东开售
工业视觉检测系统的应用为企业大大降低了成本
如何使用万用表准确测电压
RF射频技术的主要应用领域有哪些
启扬智能参加第七届瑞芯微开发者大会