什么是zk-STARK

zk-STARK的全称是Zero-Knowledge Scalable Transparent Argue of Knowledge

zk和ARK和zk-SNARK相同,这里的Scalable指的是可扩展性,意思是zk-STARK的证明生成时间与完成验证的时间分别是线性阶和对数阶,也即随着陈述大小的增长,虽然证明生成的时间是线性增长的,但是验证的时间开销不会增长的很快,这对于Verifier很是友好

Transparent则意味着其不需要zk-SNARK中的Trusted Setup,也即整个协议是公开透明的,不需要可信第三方或利用MPC来提前生成CRS

和zk-SNARK一样属于一种密码学证明协议,可以以公开可验证的方式提供零知识证明

与zk-SNARK的对比

相同点

  • 两个协议都实现了隐私输入的可靠隐藏
  • 都是Argue of Knowledge
  • 都有交互式与非交互式的实现方式

不同点

  • zk-STARK具有可扩展性,即证明和验证的耗时与原始计算的耗时分别呈拟线性关系(且线性因子为常量)和对数关系
  • zk-STARK的简洁性仅针对验证(因为验证的时间开销是对数阶),且证明大小会很大,大约是zk-SNARK的数百倍到一千倍,因此zk-SNARK的公链大小比zk-STARK小得多,因此进行zk-STARK交易需要的gs也要比zk-SNARK多得多(大约是5~10倍)

  • zk-STARK的密码学假设为抗碰撞Hash函数(CRH),而zk-SNARK以来的密码学假设要强得多
  • 就目前而言,zk-STARK仍然具有抗量子特性,而zk-SNARK不具备这一特性
  • 由于缺乏开发人员文档和社区,开发人员将很难使用STARK,虽然有一些项目创建了基于 STARK的扩展解决方案,例如STARKWARE,但SNARKs社区仍然要大得多

优势

STARK改善了无许可区块链的两个问题:可伸缩性和隐私性,STARK技术的先驱StarkWare Industries当前对ZK-STARK的研究首先关注可伸缩性,然后关注隐私

STARK通过允许开发人员将计算和存储移出链来提高可伸缩性,因为链外服务将能够生成STARK证明,以证明链外计算的完整性,然后将这些证明放回链上,供任何感兴趣的一方验证计算

使用STARK将大量计算工作移出链下,可以使现有的区块链基础设施成倍地扩展,同时不信任地保持计算完整性

此外,ZK-SNARK由于使用了加密技术,因此很容易受到量子计算机的攻击,就目前而言,ZK-STARK目前具有量子抗性

计算完整性

计算完整性(Computational Integrity),简单来说就是确保某个计算的输出是正确的

CI的功能很强大,比如说在超市购物结账的时候,对于每一项物品,对其数量与单价的乘积求和,确保其与总价相等,亦或者在银行转账时,确保转账金额大于等于付款方的账户余额,且收款方账户增加的金额数目等于付款方账户减少的金额的数目