详解Web3的基建:零知识证明
现实生活中手机转账数目,卡上余额,通话数据甚至对象信息我们都会小心翼翼的注意数据信息的安全和不对外公开,这是个人隐私也是其对应的数字资产,隐私的相关保护也慢慢成为了大众共识,也受到了法律保护-隐私权。
区块链的可溯源的特性 一方面让交易信息和数据来源得到了确权 ,是数字资产所有权上链的可靠性技术,让很多传统纠纷和冤假错案得到全新的数字解决方案,但是 另一方面信息完全暴露于公链上 ,没有任何的安全措施却又让很多不法黑客得到充足的便利,数字资产就像裸奔在高速路上,高价值和独有性资产随时可能成为黑客的下一个目标。
在公链上的交易如何保障其一定的隐私性?想让交易促成,但是又不想让别人轻易追溯个人链上地址的资产信息,比如:
A 向 B 出售某个 NFT,B 要先向 A 的地址打款,A 确认后转移 NFT 到 B 的地址,这其中就会产生信息不信任的问题,A 需公布钱包地址内的资产让 B 知道这其中有他想要的 NFT,但是 A 的资产信息就暴露在 B 的视野下,如果此时 B 有不良意图或是黑客,那 A 就将降入欺诈陷井的可能中。
密码学分支的零知识技术在解决隐私和不信任问题上得到了新的解决方案。
什么是零知识证明(ZKP)
零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄露出去.零知识证明可以验证某一数据集的有效性,并同时保护数据隐私.
零知识证明(Zero—Knowledge Proof),是由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。
简单例子
A 要向 B 证明自己是这个房间的主人,假设该房间只能用唯一的钥匙打开锁,而其他任何方法都打不开。这时有 2 个方法:
-
A 把钥匙出示给 B,B 用这把钥匙打开该房间的锁,从而证明 A 拥有该房间的正确的钥匙。
-
B 确定该房间内有某一物体,A 用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给 B,从而证明自己确实拥有该房间的钥匙。
后面的方法属于零知识证明。它的好处在于,在整个证明的过程中,B 始终不能看到钥匙的样子,从而避免了钥匙的泄露。
零知识证明的两个方式
SNARK
SNARK 的全称是「zero-knowledge succinct non-interactive argument on knowledge」(中文为「 简洁的非交互式零知识证明 」)。这是一种加密证明,文件很小而且很容易验证。它利用椭圆曲线生成一个加密证明,该椭圆曲线假设无法从一个公开的基点找到随机椭圆曲线元素的离散对数。椭圆曲线的计算成本低于 STARK 的哈希函数,因此 SNARK 协议的 gas 成本更低。
STARK
STARK 全称是「zero-knowledge scalable transparent argument of knowledge」(中文是「 零知识的可扩展、透明知识证明 」)。这种加密证明几乎不需要证明者和验证者之间产生任何交互。STARKs 相比 SNARKs 的最大优势在于证明时间更短,而且更容易扩展。另外,由于 STARKs 采用哈希函数,因此也可以抗量子攻击。
它们各自有不同的优缺点。这里说一下这两种 ZK 证明之间的主要区别:
-
证明大小:STARK 比 SNARK 大,这也意味着它们在以太坊上验证的成本更高,因为更大的证明 = 更多的计算 = 更高的 gas 费。
-
可扩展性:通常认为 STARK 比 SNARK 更有效,具体取决于实现情况。证明和验证 STARK 的复杂度规模相对于被证明的计算复杂度呈拟线性增长,而 SNARK 的复杂度呈线性增长。这意味着在证明更大的计算量时,STARKs 比 SNARKs 具有更大的优势。
-
生态系统和项目:使用 SNARK 的项目比使用 STARK 的项目多得多,因为 SNARK 的存在时间更长。
-
递归:SNARK 支持递归——您可以创建一个父 SNARK 来证明多个子 SNARK——这是许多扩展解决方案使用的主要功能。STARK 不支持递归。
-
量子安全:SNARK 使用椭圆曲线密码术,这不是量子安全的。量子计算的进步可能会使基于 SNARK 的系统容易受到攻击。STARK 不易受到攻击,因为它们的加密方案依赖散列函数。
-
可信设置:如前所述,SNARK 在创建 CRS 期间需要可信设置。STARK 通过利用可公开验证的随机性来生成证明者和验证者共享的参数,从而避免了这个不便的问题。
零知识证明的区块链项目
采用 zk-STARK 的项目
Stark Ex : StarkEx 是以太坊上的 Layer 2 扩容方案,采用 STARK 证明来验证自托管的交易,并在上面开发交易和支付应用。基于 StarkEx 的项目包括 DeversiFi、Sorare 和 dYdX,目前已完成了几亿笔交易并实现了几千亿美元的交易额。然而,StarkEx 无法支持智能合约功能,因此无法实现功能完备的 dApp。
Sta rkNet : StarkNet 是一个通用平台,开发者可以使用 StarkNet 在以太坊的 zk-rollup 上部署智能合约。以太坊主流的 dApp Aave 和 Maker 都计划在 StarkNet 上发布。值得注意的是,StarkEx 的 zk-rollup 也可以在 StarkNet 上发布,以提高应用的可扩展性。
为了充分利用 STARK 在计算和可扩展性方面的优势,StarkWare 开发了 Cairo 语言,这是一种高效且图灵完备的编程语言,专门用于创建 STARK 证明。这意味着 StarkWare 需要开发文档、框架和其他工具来激活其开发者生态。
Immutable X: Immutable X 是一个 NFT 平台,用于铸造和交易 NFT 和通证。该平台使用 StarkEx 打造专属的 zk-rollup。Immutable X 平台上 NFT 铸造和交易量达到数百万,而且即使在以太坊网络拥堵期间也可以保持较低的成本。
Immutable X 也将在 StarkNet 上发布。有效性证明不会直接发布到以太坊上,而是先发布到 StarkNet 上,然后再通过 StarkNet 的 rollup 发布到以太坊上。Immutable X 可以利用 StarkEx 在 StarkNet 上发布应用链,为项目提供 layer 3 扩容方案。
采用 zk-SNARK 的项目
Zcash: Zcash 前身是 ZeroCash。名字中的“zero”指使用零知识证明技术来实现隐私交易。Zerocash 是早期出现的加密项目之一,推动了零知识证明技术在行业中的应用。
Loopring: Loopring 是以太坊上的 DEX,支持订单簿交易,并且不托管用户资产。Loopring 接入了 Chainlink Price Feeds,服务几十万用户,交易量高达数十亿。
zkSync 1.0 : zkSync 1.0 是以太坊上的 rollup。它与 StarkEx 一样,都支持通证转账和兑换,但不支持智能合约。该协议由 Matter Labs 开发。
zkSync 2.0 : zkSync 2.0 与 StarkNet 一样,也是以太坊的 Layer 2 扩容方案。采用了 volition 基础架构,可以支持智能合约。zkSync 采用 zk-SNARK 来验证交易,并采用 PoS 系统 zkPorter 来保障数据可用性。zkSync 2.0 和 StarkNet 的主要区别除了有效性证明之外,还有前者可以兼容 EVM。 1inch 、Alchemix 和 Curve 都计划在 zkSync 2.0 上发布。
ZigZag: ZigZag 是一个去中心化交易平台,采用订单簿模式交易 ERC-20 通证。相比之下,大多数 DEX 采用的都是自动做市商(AMM)模式。ZigZag 的订单簿模式得益于 zk-rollup 强大的可扩展性。zkSync 注册表中的任何通证都可以在 ZigZag 中交易。该协议目前在 zkSync 1.0 上运行,但计划在 zkSync 2.0 和 StarkNet 上发布。
Mina: Mina 是轻量级区块链,采用 SNARKs 创建容量最大为 22 kb 的区块。项目可以在 Mina 上开发部署应用,并可以实现全部智能合约功能。
零知识证明的基建作用
Web3的交易产生的信任问题有许多新的解决方案,但随着区块链技术和共识形态的发展,零知识证明也逐渐成为基建力量的一分子,目前零知识证明有两个主要用途:
-
隐私: 在区块链上进行活动时尽量减少公开的数据量
-
可扩展性: 允许在链下执行密集计算,使成本更低,然后创建一个简洁的证明,表明计算是被诚实执行的,可以在链上发布。
尤其在扩展性的优势和价格上能更进一步提升许多 DAPP 的性能,比如:
-
精准的市场数据
-
可验证的随机数
-
智能合约自动化
-
储备金证明
-
跨链通信
总结
隐私的需求和扩展性的优势让更多的区块链项目在推广和开发上得到提升,零知识证明的技术和服务对象也在不停地发展,推动着区块链行业的整体水平,让有需求的用户和想转型的传统行业进入到Web3中,扫除信任成本和交易障碍,实现Web3的各项生态欣欣向荣。