以太坊暗网? 这群北大才子做到了…


640?wx_fmt=jpeg

记者 | 乔治

出品 | 区块链大本营(blockchain_camp)


说到比特币暗网,你能想到什么?丝绸之路、华尔街市场、贩毒、杀人、情色交易,一直以来这些都是经常被人诟病的一面。但事物都有两面性,“暗”的另一面,是对现实世界的真实解决方案,是利用“暗”的特性解决当前存在的某个痛点。


你知道比特币暗网,但你了解以太坊暗网吗?


为解决主流数字货币过于透明、隐私泄露等问题,一群北大高材生创建了这个“以太坊暗网”。“以太坊暗网”是什么?具有哪些特性?能帮你解决什么问题?


近期,营长对这个北大背景的技术团队进行了专访。让我们从他们的想法与实践中得到启发,了解区块链开发者正在做的事情。



来自北大的师兄弟团队


营长:简单介绍一下你的个人背景和创建 PGC 之前的工作经历。

PGC:我2011年北大博士毕业,一直念的计算机,做的是信息安全和网络安全。毕业后曾在中国电子科学研究院做综合电子信息系统的顶层设计,之后在一个做信息安全的上市公司待了一阵,然后就开始创业了。从 2016 年到现在,一直在区块链领域创业,既做过联盟链,也做过公链,既做过智能合约开发,也做过 DApp 开发。

营长:PGC 团队有很多北大背景的成员,这个团队是如何组建的?

PGC:以北大的师兄师弟为主,他们是最核心的一些人,此外,我们也比较国际化,在英国伦敦、美国西雅图和德国斯图加特,也有一些远程协同办公的同事。

最初创业时,包括我在内团队只有两位主要成员,随着业务的开展,技术上需要的人才越来越多,我们优先从北大实验室和其他合作高校寻找技术人才,已经毕业的、没有毕业的、已经工作的、没有参加工作的师兄师弟,我们都联系了,好在他们对数字货币也比较认可,最后就加入到我们这个团队当中了。

因为数字货币、区块链不仅是密码学层面的事,还涉及到很多金融相关、市场推广、业务拓展的事,所以团队也需要一些业务层面的人才。我们在普华永道以及英国、澳大利亚、香港也有金融业、商业方面的同事,他们都远程加入了这个团队。所以我们算是一个以技术为主、业务上相对全球化的一个团队。



你根本不需要泄露密钥


营长:目前主流加密货币和现有隐私加密货币存在哪些问题?PGC 的解决方案是什么?

PGC:主流加密货币的历史相对比较早了,它可能只解决了转账和记账的问题,从实际功能来看,就是把账算清楚,我给你转了多少币,你收到了多少币,只要算清楚就 OK 了,并没有考虑智能合约之类的其他功能。


640?wx_fmt=png


一个新事物的诞生,肯定要先解决它的可用性,等它跑起来再去考虑它的安全性和隐私性。所以,最初几年大家主要关注这个币如何用起来、如何产生金融效应以及如何让更多用户使用等等。此后,随着用户越来越多、生态越来越成熟,就会出现安全和隐私问题

目前来看,比较主流的几个币都不包含隐私属性,而最近比较火的 Grin 和 Beam 隐私币以及很早就有的门罗币、达世币、大零币 (Zcash) 等比较常见,门罗币和大零币已经存在一段时间了,也有相应比较大的市值,其价值也已经过一些验证,但仍存在一些问题

比如,它需要一个可信的初始设置,最开始建立网络时,就需要进行这样一个操作,这个操作通常是很难做到,这是一个问题。此外,因为它不是无状态的,每一笔交易都需要记录一些相应的随机值和加密值,这样就导致它在钱包设计和账本设计里显得非常复杂。


虽然门罗币、达世币、大零币、Grin、Beam 等隐私币可以通过混币、环签名、零知识证明、MimbleWimble 协议等改进隐私性,但与 ETC、ETH 和 USTD 相比,它们毕竟是一个小众币,用的人不多,为享受隐私功能,把主流币换成这些隐私币,还是不太方便。


640?wx_fmt=png


所以,PGC 的做法是将隐私功能赋予主流币,而不是再弄一个其它的币种,说这个币比其它都好,大家来用这个币。因为推广这个币确实需要很长时间和很大精力,与其这样,还不如在主流币上增加一个隐私层,即插即用,想用就用,不想用就不用。


另外,现有隐私币所追求的隐私性太强了,隐私性太强就会产生一些问题,比如,如果 A 给 B 转帐,只有 A 和 B 知道,其他人不知道,就可能存在这样一个问题:如果 A 和 B 对交易有争议,A 说转给 B 了,B 说没收到,或者 A 说转了 10 个,B 说转了 5 个,这该怎么办?

在其它隐私币方案中,只能是双方找到第三方,通过提供私钥去查看历史交易,一旦这样操作,就意味着你的钱包以后不能再用了,因为有第三方知道了你的历史交易,你泄漏了自己的隐私,这个很不好。所以,隐私性很强的货币不具有可审计性,假如普华永道把数字货币作为财务去审计,又怎么做?链上根本看不到,也不可能冒险提供私钥,所以强隐私性和可审计性是冲突的。

PGC 追求的不是强隐私性,尽管隐私性弱化了,但机密性增强了。何为机密性?就是交易内容被隐藏,你转了多少币?你的账户余额和交易金额是多少?都被隐藏了。

但也存在一个问题,这是一把双刃剑。就比如说黑客盗了币安交易所的比特币,如果黑客将被盗的币放到了 PGC 钱包,虽然我们可以看到这个地址,但我们不知道这个地址内还有多少比特币,黑客可以将比特币转到其他地址,我们不知道其他地址收到多少比特币,只能通过一系列黑名单把这些地址封锁掉,这样就增加了被盗比特币的追踪难度。



详述 PGC 密码学解决方案


营长:请详细介绍 PGC 的密码学方案。

PGC:目前来看,有两种方法可以隐藏账户余额和交易金额。

其中一个是承诺。就像最早 Maxwell 提出的 CT,它使用 Pedersen commitments 的方式,但有一些不好的方面,比如在密码学层面,当你需要做这个承诺时,你需要离线给非链上发东西,这个东西要怎么发?如何保证它的安全?这又涉及到另外一套工程。所以,如果选用这个技术路线,除了要把链弄好,还得把另外一套东西弄好,这是比较复杂的事情。

我们选择了另外一条,即利用带有加法同态特性的公钥密码学将用户余额、交易金额加密什么是同态?举个例子,比如我把 1 加密成了一堆看不懂的字母,把 2 也加密成了一堆看不懂的字母,现在把 1 和 2 加起来,就等于 3 了。加法同态是指,可以把 1 加密出来的密文和 2 加密出来的密文做一个类似加法的操作,生成另外一个密文,也是一堆看不懂的乱码,被解码后就是 3,这就是加法同态。

加法同态相对比较复杂,特别是当你还要做乘法时,它的效率就非常低了。加法同态里有一个非常经典的 ElGamal 算法,是一个有几十年历史的公钥加密算法,它的一个变种在上世纪90年代就被美国的数字签名标准用作数字签名算法。


假如你要做机密交易,因为这是一笔交易,你就要把这个交易写在一个小纸条上交给矿工,让他记到链上,矿工不能看到你有多少钱,也不能看到你要转多少钱,PGC 会把交易金额加密,比如你原来有 100 块钱,转了 90 块,还剩 10 块,我原来有 10 块钱,收到 90 块,现在就是 100 块了。

我们各自有一对公私钥,我有 100 块钱,我把它加密了,我给你转 10 块钱,这 10 块钱我知道,你也知道,但不能让别人知道,所以这 10 块钱的交易被我的公钥加密了,你用你的公钥加密放到这个交易里,我们就相当于有 3 个数字了,再加上 1 个随机值,防止重放攻击等等,这就是交易的结构。

当其他人说你到底是不是转了 10 个币,该如何验证?此时就用到了零知识证明,就是他虽然不知道咱们的私钥,但他能够验证我俩说的是真的,他怎么验证?有几个最基本的假设

假设 1,我加密了 90 块钱,你也加密了 90 块钱,这就需要构造一个零知识证明去证明我们转的钱是一样的,不然就有问题了。可能是我说给你转 90,你也加密了一个 90,但其实我只加密了 10,如果矿工没有验证这笔交易就打包,你就损失了 80 块钱。


假设 2,矿工需要验证我们转出来的钱不是负数,我不能转一个负 10 块钱给你,我每转一次,我自己增加钱了。

针对第 1 个假设,我们使用了 Sigma协议,它可以去做一个高效的零知识证明,证明咱俩加密的东西是同一个数。

针对第 2 个假设,我发出的必须是一个大于 0 的数,而且不能超过一个上限。以比特币为例,比特币一共才 2100 万个,我不能给你转 1 亿个比特币,所以矿工要判断这个数在不在一个范围内,就需要一个范围证明 (Range Proof),它也要用零知识证明来做,目前最有效的 Range proof 叫做防弹协议 (Bulletproof),门罗币就在用这个协议,这是 2018 年的最新成果。Bulletproof 也是目前学界公认的最有效的一个加密办法,我们也会用 Bulletproof

假设 3,假设矿工认可了,那把我的钱减掉 90,把你的钱加 90,这个加和减的操作也需要隐秘地完成,矿工却完全不知道,他只能知道拿了两个密文一减一加,这个就要用到 ElGamal 协议,带有加法同态特性的公钥密码学。

但又有一个问题,如果你把原版 ElGamal 协议直接拿来用,就不能使用 Range proof,不能使用 Bulletproof,因为调用时会不安全、会有漏洞于是,我们把 ElGamal 协议进行了非常巧妙的修改,将它扭转一下,让它保留加法同态特性,又能满足 Range proof 和 Bulletproof 的条件,这也是我们论文里非常有特色的一点。

此外,假如你给我转了钱,我说没收到,或者你给我转了 100块钱,我说我只收到 1 块钱,其他人看不到、也不能帮你证明怎么办?这时你可以生成一个零知识 statement,你把这个数据交给任何人,他使用零知识证明验证一下就 OK 了。比如你给我转的是 100,你只需要把数字 100 加上生成的数据一起发给验证者,然后验证者就能知道你是不是转了 100,这也是一个很强的特性,并不是所有密码学方案都可以针对单条交易做验证。


640?wx_fmt=png


如果不使用这种方法,我只能把私钥给他,但他看到了我的交易记录,看到了我的余额,我为了去验证一条交易,也把其它交易的隐私性丧失了。所以,总结下来,我们用了数字签名技术加法同态公钥密码学非交互式零知识证明,这三者构成了 PGC 的密码学方案。


营长:PGC 目前还有哪些不足之处?如何解决这些问题?

PGC:不足之处肯定有,就像大家总嫌区块链太慢,所以做了分片,之前比特币不支持智能合约,所以以太坊有了智能合约,链太多了要跨链,所以大家做跨链,这是一样的。我们这个技术肯定也有自己的不足。

首先是性能问题,在智能合约层面上,无论是刚才我说的加法同态、非交互零知识证明、还是 ElGamal 协议和 Bulletproof,都需要耗费 gas。经过很多密码学优化后,如今最大的 gas 大概是 600 万左右,一个块里大概是 800 万 gas。我们需要用 600 万 gas 做一次转帐,金额大概是 0.01 个以太币,花费有点高,所以我们还要继续优化算法、降低 gas,这是一方面。

另一方面,EVM 也在升级和优化,下一版本 EIP 1108 也会做相应的优化,按照它优化的程度来看,我们可以再优化 6-10倍,这样一笔转帐大概要花 100 万 gas,就不贵了,一点都不贵。其实主要是性能问题和 gas 费的问题。

营长:PGC 目前主要有哪些应用场景?

PGC:目前来看,主要有以下 5 个应用场景。


640?wx_fmt=png

  • 在钱包内实现机密交易功能,比如 Token fund 投项目,投了多少以太币?这应该是隐私的,不应该被别人看见;

  • 我给员工发工资或者发 token,员工彼此之间也是看不见的;

  • 慈善捐款、拍卖;

  • 交易所大额提币或充币,USDT 大额转帐,避免引发市场恐慌;

  • 以及机构间的隐私转帐。



以太坊暗网,来了!


营长:请从技术和生态两方面介绍 PGC 的整体路线

PGC:技术上,PGC 密码学方案已经设计完成了,相关论文近期会在国际会议上发表。


接下来要完善我们的 App,从表面上看它就是一个 imToken,是一个钱包,但你可以认为这是以太坊的暗网,你转什么?转给谁了?是什么情况?都可以在这个“暗网”看到,但你在 Etherscan 上查不到。当有人想查这笔钱,比如你转了多少个,你可以生成一个证明,告诉他转了10个,随便找一台手机就能验证了。


640?wx_fmt=png


还要做跨链,我们要服务现有的比特币用户,通过跨链的方式把比特币接到一个支持智能合约的链上,之后再把它换过去,这是技术上要做的。

生态上,我们要努力扩展 PGC 应用,除了个人钱包外,我们还要接入诸如 Facebook 等企业的稳定币,和他们一起合作推出企业级钱包,这样企业与企业间的转账金额也是隐秘的,可以拓展各种各样的应用,也要和公链合作,帮助公链实现机密交易的功能。

尽管我们有自己的钱包,但也会和像 imToken 这样已有庞大用户群体的钱包合作,通过智能合约、接口实现机密交易的功能,即接入以太坊暗网网络。

营长:对中国的区块链开发者说几句寄语吧!

PGC:以太坊是未来的主流,如果你想深入了解区块链,学习以太坊就好了,此外,如果你把比特币看明白了,其它的也就都差不多了。


640?wx_fmt=gif

推荐阅读:

猛戳“阅读原文”有惊喜哟smiley_12.png

老铁在看了吗??