电影《让子弹飞》中有这样一个情节,为了让人相信自己没有多吃一碗凉粉,六子剖开肚子,以性命为代价证明了自己的清白。
在这里,六子是证明者,围观群众是验证者,六子证明的方式是看腹中究竟有没有多一碗凉粉。然而,这种证明方式的代价是六子的生命。
上述例子就是一个典型的证明难题。
第一,若要保证验证的有效性,证明者必须分享知识(上述例子中,与知识对应的就是六子肚子内的情形),证明者若要通过验证,需要将知识告知验证者,而告知知识往往是有代价的。
第二,若验证无效,验证者将面临欺诈风险。举个例子,在法庭上,如果被告能在开庭前获得控方律师所有的提问,那么他极有可能成功编造出一个完美的故事骗过对方。
最初的解决办法是,引入第三方,将验证过程公开化,以此调和知识所有权与使用权间的矛盾。然而,即便如此,对于具有排他性的知识(比如密码),一旦出让使用权,也即丧失了所有权。有没有不需要动用知识的验证方式呢?
零知识证明的诞生
时间来到1985年,S. Goldwasser 博士毕业后来到 MIT,与 S. Micali,Rackoff 合写了一篇载入史册的经典论文《交互式证明系统中的知识复杂性》,零知识证明(zero-knowledge proof)问世。
此后,证明过程无需“知识”获得了理论支撑,简单来说,通过零知识证明,既能保守秘密,又能让别人相信你。
只是由于效率和适用性上的短板,很长一段时间内,零知识证明仅仅停留在学术理论层面,或者只能用于特定项目,直到邂逅区块链。
零知识证明两大关键词:保守秘密,即“不泄露信息”;让别人相信你,即“证明论断有效”。
这两个特点恰好被区块链所需要:
隐私:区块链网络的共识要求一切公开透明,隐私保护成为问题。
在隐私场景中,借助零知识证明“不泄露信息”的特性,可以在不泄漏交易的细节(接收方,发送方,交易余额)的情况下证明区块链上的资产转移是有效的。
扩容:区块链去中心化的特点,使验证成为不可承受之重,轻量化的证明成为刚需。
在扩容场景中,主要利用“证明论断有效”这个特性,链上资源是有限的,所以我们需要把大量的计算迁移到链下进行,零知识证明正好可以证明这些在链下发生的动作是可信的。
早在2016年,专注于链上隐私保护的ZCash就正式发布,通过零知识证明,ZCash完成交易验证,而无需公开全部交易信息(发送人、接收人、交易量)。不过,经过多年发展,ZCash仍是不温不火。
原因也很简单,尽管隐私很重要,但当前的区块链用户,还远没有建立广泛而强烈的隐私意识,不敢露富,还不敢露穷么?
目前,隐私并不是刚需,扩容才是,特别是对于以太坊而言。
ZK与Rollup的结合
从底层协议来看,链上交易的成本必然高昂,因为要实现充分的去中心化和安全,必须有足够多的节点进行重复验证。
随着区块链应用的扩展,同步一个节点的时间越来越长,越来越庞大的链上数据量拉高了硬件的要求,大多数家用计算机甚至连节点的基本要求都达不到,像以太坊这样用途广泛的公链,其节点数量也只有一万余个,且大多数被托管在亚马逊 AWS 上,与去中心化的初衷背道而驰。
相较于隐私保护,区块链的可扩展性,显然更有意义。
只要实现了可扩展性,那么就既可以维护“去中心化”的政治正确,同时可以降低gas。
2017年8月,以太坊联合创始人Vitalik Buterin和Joseph Poon,共同提出了初代扩容解决方案Plasma。
然而,Plasma无法提供和主链同等的数据可用性和安全性,很快遭遇全面溃败,开发者又将眼光放在了 Rollup 技术上。…