以太坊暗网? 这群北大才子作到了...


640?wx_fmt=jpeg

记者 | 乔治程序员

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



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


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


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


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



来自北大的师兄弟团队app


营长:简单介绍一下你的我的背景和建立 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


老铁在看了吗?👇