独孤求败的以太坊和V神也没解决这个技术难题?
在2017年12月3日举办的亚太以太坊技术交流会上,以太坊创始人Vitalik Buter压轴出场,发表了主题为“以太坊区块链中的隐私保护”的演讲。
在演讲过程中,V神提及以太坊隐私性的问题已经被解决了四分之三了,但还有四分之一没有解决;同时,他特别强调:零知识证明(Zero knowledge proofs)是“最为强大”的解决方案,尽管技术实现难度最高,但在保护以太坊网络的隐私性和安全性上,其效果最佳。
那么,以太坊掌门人口中的“零知识证明”到底是何方神圣?它又为何备受瞩目呢?
一般来说,我们该怎么去描述零知识证明?
我们可以这样来理解,你拥有着一些数字,同时也存在着一个有空缺的等式,你需要证明的是你无需借助任何其他知识,知道填入这个等式的数字是什么,从而使这个等式成立。
这个等式用的数字无论经过加密与否,所有人都能看到,如果它能够让等式成立,这就是零知识证明,不需要经过其他底层数据的辅助即可直接通过验证。
我们知道,区块链全部节点通过共识机制确认交易的合法性,而能达成共识的前提是所有数据都在全节点上透明可见,其中当然也包括个人隐私数据。虽然部分区块链系统引入了“假名”的机制,但其隐私保护的力度远远不够。我们将这个问题总结为个体隐私与群体共识的矛盾。
零知识证明是解决该矛盾最为成熟和强大的工具。简言之,零知识证明可以让对方既不知道具体内容,又能确认该内容的有效性。对应着区块链中所有节点,既可以确认交易的合法性,同时也无需知道交易的具体内容。区块链的兴起将零知识证明从相对小众的密码学概念逐渐变成显学,不仅仅是技术人员对这一“神奇”技术的好奇心,也是用户对个人隐私数据越来越重视的一种必然结果。
然而,以太坊V神提出的四分之一尚未解决的问题,在国内或许已经不是问题了。近日,区块链代表企业矩阵元称其已经在零知识证明上取得了一定的突破。
针对以太坊的账户模型,采用加法同态加密。同时,针对转账这种具体场景进行代数结构的优化,完备的支持以太坊的智能合约。在性能行矩阵元的方案的证明时间只需要70ms左右,且消耗的内存
从区块链的应用角度出发,目前的零知识证明主要有两种模式。一种是针对特定的应用场景进行方案构造。在区块链世界中,最为常见的就是转账的场景。用户A向用户B转账,用零知识证明保证其他所有节点即不知道A、B的账户余额、转账金额,又能让其确认该交易是合法的。
所谓合法,即A有足够的余额供其转账。现在业界常说的到Ring Confidential Transaction技术(RingCT,采用的环签名,ring signature,实际是一种特殊的零知识证明方案),Zcash中使用到的zk-SNARK技术都是在解决这一特定的场景。
这两种应用的技术都存在一定的不足之处。首先,这两种技术都是针对UTXO模型,UTXO为零知识证明的构造带来了一定的便利性,因为新转出的资金会对应在一个新的地址下(都是B所有的地址),而不需要对B原始地址下的余额进行修改。从而无法直接推广到以太坊账户模型(直接在原地址上进行余额变动)。此外,zk-SNARK为了达到极致短的验证时间,从而牺牲了证明生成的时间。在ZCash网络中,40s的证明生成时间,3G的内存消耗,只有部分计算能力资源丰富的全节点有能力完成这样的计算。即使ZCash更新后的版本证明时间和内存消耗分别也在7s和40M,也极大地限制了其适用。
而上面我们提到,矩阵元的方案证明时间只需要70ms左右,且消耗的内存
以太坊支持的图灵完备的智能合约极大的丰富了区块链的应用场景。同样为应对不同应用场景的隐私保护,通用的零知识证明方案是必不可少的工具,这也是零知识证明的另外一种模式。然而,零知识证明的方案对广大技术开发者依然有较高的门槛。
为了让开发者方便使用零知识证明来提供不同场景的隐私保护,矩阵元将在明年推出零知识证明服务(NIZK as a service)。在JUICE区块链开放服务平台上提供一层NIZK服务,开发者只需使用高级语言编写需要证明的具体内容,内嵌的编译器将自动将其转换生成零知识证明。同样,该服务也可自动验证不同场景下的证明。矩阵元将继续在零知识证明上进行投入,降低开发者使用门槛。