2019-04-22 在Plasma上使用ZEXE技术

注:这是一篇关于如何在Plasma上设计具有隐私功能的技术文章,它使用了一种被称为ZEXE的技术。

2019-04-22 在Plasma上使用ZEXE技术_第1张图片

架构图

缘起

在以太坊上执行带有隐私功能的交易代价非常昂贵。ZoKrates和AZTEC是两个很好的项目,它们一直致力于将零知识证明的隐私技术在实际应用中实现。但是它们的性能受限于预定义的功能并且所需的gas费用高昂。当我们团队得知ZEXE的论文后便迫不及待地想将ZEXE技术引入到以太坊中!ZEXE可以使任何智能合约都使用零知识证明技术。ZEXE通过构建自己的账本来实现这一目标。当我们一看到“自己的账本”时,就想到了Plasma。因此我们便开始着手把ZEXE和Plasma相结合。

ZEXE+Plasma的工作原理

ZEXE在Plasma上实现了两个协议:

- 利用ZEXE可以创建任何智能合约并在执行交易时用zk-SNARKs技术(注:这里意思是,任意智能合约都能使用zk-SNARKs零知识证明技术)。

- zk-Plasma是我们对MVP Plasma进行的一种变换。它根据ZEXE的结构使用了不同交易结构实现了一种UTXO模型。

把ZEXE和Plasma相结合我们实现了一个简单的ERC20功能:挖矿(mint coins)。实际上还可以做更多事情:比如建一个去中心化交易所。这里最酷的就是我们在链下(注:这里指Plasma)既得到了可扩展性又得到了零知识证明带来的隐私性。

我们是怎么做的?

我们遇到的第一个挑战就是如何把ZEXE中使用的椭圆曲线用在以太坊中。通过调用bellman库的功能我们用Rust语言攻克了这个难关。用Rust编程可以计算出交易所需的隐私输入。

接下来,zk-SNARKS需要共享设置。在ZEXE中,用户需要通过交换隐私信息来执行交易。用户希望将所有的输入信息全部隐匿,同时也要能参与相关的智能合约交易。我们用IPFS进行加密数据交换实现了这个功能。隐私数据被交易双方中的发送方用接收方的公钥进行加密,然后接收方再用自己的私钥将其解密。整个功能也是用Rust编程实现。

当我们试图将ZEXE和以太坊相结合时,我们先是在以太坊上用智能合约构造了一个账本,然后将ZEXE和以太坊相结合。结果我们发现这样做,当我们不停地将新的交易加到Merkle树中时,会耗尽gas。后来我们想到了利用Plasma。Plasma是由Python和Flask技术构建的,并且能使链下(这里就是指Plasma)和链上(这里就是指以太坊主网)账本同步。链上账本仅仅存储Merkle树的根。我们使用Python和Solidity都支持的ethsnarks库文件,用MiMC哈希算法和Merkle嵌入证明(Merkle inclusion proofs)构造Merkle树的结构。这样就又攻克了一个难关。

最后,我们还需要一个用户界面。我们用Rust语言编了一个CLI界面。用户挖ERC20代币,发送ERC20代币可以用React APP程序。我们的这个界面还支持以太坊域名服务(Ethereum Name Service)。

我们的局限

由于时间紧张加上工程复杂,我们没有把ZEXE中的椭圆曲线转换成以太坊中的椭圆曲线(将BLS12-381转换为BN256)。这使得我们无法进一步实现更多zk-SNARKS功能。尽管Plasma是支持的(这些zk-SNARKs功能已经用上了BN256加密技术),但我们无法验证。

此外,Plasma MVP对ZEXE所支持的交易定义了一套不同的结构。对这些交易我们没有实现它们的exit功能。这是个非常有挑战性的工作,需要花更多时间深入研究。

我们引以为傲的成就

我们很自豪能在第二层(这里指Plasma)实现一个零知识证明协议。我们现在有了一个已经集成了多项去中心化技术的MVP:以太坊,IPFS,Plasma和zk-SNARKS。

我们学到了什么?

我们学习了zk-SNARKS技术。我们深刻体会到在概念上学习一项技术和在实践中应用一项技术有着天壤之别。我们学到了很多新的技术,攻克了很多技术上的难关。

下一步的目标

我们希望继续完成在Plasma上的测试并完善椭圆曲线的转换。我们还希望用ZEXE技术做一个去中心化交易所。

我们使用的技术工具

Rust,Python,zk-SNARKs,IPFS,React,Solidity,Truffle,Ethsnarks,Ethereum

开源链接

GitHub Repo:https://github.com/edcon-reiwa/zexe-ethereum

docs.google.com:https://docs.google.com/presentation/d/1qZoInM4OzPrYs5cISGHdgjN20m8V8Hh9JtOIYxOLbpY/edit#slide=id.p


参考链接:https://devpost.com/software/zexe-on-ethereum

你可能感兴趣的:(2019-04-22 在Plasma上使用ZEXE技术)