现在业界讨论最多的扩容方法分为两种,Layer1和Layer2,对应的就是链上扩容和链下扩容。链上扩容现在熟知的方案有BCH的大区块,ETH的分片技术等,链下扩容熟知的有侧链,如闪电网络,Plasma等,当然还有集成了侧链的主链,如Cosmos,Pokaldot等。
在Arthur B看来,目前的这些方案都或多或少有点倾向于中心化。
V神区块链的铁三角原则:安全、性能和去中心化,两者争胜,第三者必伤。铁三角的大前提是存在的,但达到这个前提的情况下,是一个0到100的过程。如果对比传统Visa峰值4000笔/s的性能,现在区块链的性能还是小于10的阶段。
所以在目前的情况下,既能保证足够的去中心化的前提,又能扩容,zk-SNARKs(一下简称zk)是一个较为合理的方案,特别在Zcash Sapling出来之后。
我们先说为什么现有的方案倾向于中心化,而zk有机会不呢?(为什么是有机会,后面会讲到)一个重要的判断的标准就是,出块人和验证人是否可以随时进出系统,行使自己的权利。
BCH的大区块并不能直接导致中心化,但是基于目前BCH矿工情况,就算是持有BCH,进出验证体系并不会是一件简单的事情,这和POW的权利分割是有关系的(这不属于POS范畴,就不展开了);而ETH的分片,相当于把节点划分权级,行驶不同的职能,省政府,乡政府的概念;而闪电网络,是依赖于节点做的中心,开通的结算通道,自然也是舍弃了一定的中心化获得了效率。
那zk-SNARKs的扩容方案怎么实现不舍弃去中心化的前提下扩容?
zk通过缩减验证体积,加快验证速度来提高性能,这是个数学解决方案。也就是说,通常区块链广播交易,需要所有验证人验证并签名后,才能确定为真(有些链的签名还不是最终确定性,Finality),这其中验证签名的过程耗时过长,导致性能受到影响。
分片通过缩减签名人数,Cosmos通过指定人数的投票通过提前得到确定性,EOS通过减少验证人人数达到全部验证的快速度,这其中都是通过减少人数来达到的,而zk缩减的是验证过程,而不是人数,那么确实是可以保证之前的去中心化的情况下,提高性能的。
zk本身是一个零知识验证,这个验证过程本用于隐私交易,但目前看来本地算法生成验证材料的速度要比网络传播验证要高了去了,这就是zk扩容的本质了。就是现在的edxxxx算法生成公私钥对一样,不联网就生成了,毫秒级别的,如果把大量验证的过程变成zk的本地算法,提交广播验证的数据压缩到非常小的范围,那性能的提高可见会是指数级的。
当然,zk的算法同样中所周知的缺点:在零知识证明协议部署前,需要设置一些初始参数,这些参数将在每一次证明与验证中被用到。参数生成后,参数生成算法运行中使用的所有数据必须销毁,否则整个协议将不安全。
那么这次参数的生成必然会有一个来源,这个来源如果是伪随机数还不能被找到规律,如果是真随机数还得两本大,且找到可靠人来执行,两种来源的弊端是明显的,那么这个问题就出现了:我们怎么相信一个这么依赖的公共参数的系统协议呢?
随着协议的发展,我们看到了解决该办法的两种方案
允许人,无人数限制,无门槛的进入到提交参数的过程中,并公然销毁数据(如Zcash 2.0上线前做的The Power of Tau活动,有兴趣的小伙伴可以google一下这个有意思的活动)
Eli Ben-Sasson 也提出了另一个具有竞争力的零知识证明协议 STARKs,该协议可不需要考虑可信设置的问题,并依赖于较少的数学猜想。
目前的发展也在进行当中,这也是为什么我在上面说zk有机会成为既可以保证去中心化的同事,又可以进行扩容的点了。可喜的是,第一个方案已经在Zcash上践行,并且运行快1个多月还比较完好,所以,我们还是有理由期待zk在Tezos上的扩容了。
欢迎关注微信公众号:区块链卡咩
欢迎关注本人微博:比特币卡咩
希望交流的朋友可以添加我的个人微信:kamiesheep