# 通过递归零知识证明打通数据交互：Mina 生态应用场景丰富

By [MinaWallet](https://paragraph.com/@minawallet) · 2021-12-13

---

2021年9月2日，以太坊创始人 Vitalik 在推特上回复网友问题时表示：

**我预计 ZK-SNARK 将在未来 10 到 20 年内渗透到主流世界，成为一场重大革命。**

zk-SNARKs技术允许大量信息被压缩成所谓的简洁证明，因此能够在提升网络TPS、降低运.算Gas方面发挥重要作用。区块链发展十余年中，我们共同见证了DeFi崛起、NFT热潮以及元宇宙的风靡，这些尝试不仅丰富了区块链玩法，更拓宽了区块链生态的边界。

未来，随着应用场景的进一步丰富，区块链与现实世界的进一步融合也是大势所趋。如何突破性能瓶颈，实现更加安全、隐私、高效的链上链下数据交互，是目前区块链破圈发展亟需解决的问题，也是以Mina Protocol为代表的zk-SNARKs公链发展的机遇所在。

![](https://storage.googleapis.com/papyrus_images/2bfbc9b4e4b6f52e9fc0b2a3a15ba49c4c5d88e2cb450ee61db615ca19dc194b.png)

**递归零知识证明：打造更简洁安全的区块链**

大数据杀熟；贩卖用户数据；数据不透明导致用户欺诈事件…中心化弊端日益凸显，人们希望借助区块链能去中心化、不可篡改的「去信任」架构，消除信任中介，完成各种交易和协作：所有信息上链，所有人都是见证人。

但令人气馁的是，信息上链有悖于隐私保护，而且去中心化导致了繁冗的重复计算，随着交易规模的增加，每个区块链参与者所需要记录的数据随之增加，区块链变得越来越重，新加入者不仅要花费较长的时间同步数据时间，而且需要配置昂贵的硬件设施和消耗大量电力，这无形中提高了成为节点的门槛，导致目前的区块链发展仍存在依赖第三方验证交易的现象，这也对区块链网络安全带来危害。

zk-SNARKs是解决这一问题的可行技术。

在理解zk-SNARKs之前，我们可以先了解零知识证明。

复杂的数学逻辑暂且按下不表，从字面意思上理解，零知识证明就是：证明者能够在不向验证者提供任何有用的信息的情况下，使验证者相信某个论断是正确的。我们可以以找熊猫为例说明：

一群人在这张图中找一只熊猫，小A率先发现了熊猫位置，但是他不能立马公开指出来，因为这样就破坏了其他人的游戏体验。

![](https://storage.googleapis.com/papyrus_images/be8c409cbf908ef0f8490812e82c74f582c21b9de539790aeb4b42c193759e4b.png)

有没有什么办法，即能够证明小A知道熊猫在哪儿，又不会让其他任何人知道答案呢？

于是小A想到了一个办法：

他找来一张超级大的白纸，并把这张纸随意的覆盖在有熊猫的图片上。然后，小A在白纸上剪一个小洞，只让熊猫露出来。

这样，熊猫位置作为关键信息，是被保护起来的，但小A还是能够在不让其他人知道熊猫在哪儿的前提下，证明自己找到了熊猫，这就是零知识证明。

![](https://storage.googleapis.com/papyrus_images/6c5f420a22224aac0dcd657557209926853d02cae3b6ac79fc29c2be3422d210.png)

zk-SNARKs全称为Zero Knowledge Succinct Non-Interactive Argument of Knowledge，即非交互式零知识证明，是基于零知识证明的进一步创新。zk-SNARKs提供「不可伪造的证明」，能证明计算正确执行，而无需提供整个计算过程。相比较于零知识证明，zk-SNARK不仅不会泄露信息，而且不需要交互，即使是复杂的逻辑也能够轻松验证，并且通过证明压缩成很小的体积。

因此，很多引入zk-SNARKs技术的公链，选择为每个区块创建一个SNARK的证明，每个SNARK的大小约1 kb，且无需显示所有交易即可证明区块交易历史的准确性，这大大压缩了区块大小。

虽然引入zk-SNARKs的区块已经很小了，但随着区块的堆积，SNARK越来越多，区块数据仍然会线性增长，区块链还可以更简洁。

**因此，轻量级区块链协议Mina protocol创新性提出递归零知识证明概念：**

快照整个区块链状态，并生成一个 SNARK 证明，当网络中的下一个区块被创建时，它会以区块链先前状态的快照为基础再快照一次，再生成一个 SNARK 证明，这个 SNARK 证明并嵌套到下一区块之中，然后不断进行迭代和嵌套，实现区块大小的恒定。

**举个引用较多的例子：**

如果你要证明你一年中每天都到过一个广场（广场上有日期时钟），最简单的办法就是每天自拍打卡，365 张照片就是最终证据。

另一种办法就是从第二天起，每天自拍打卡时，手上拿着前一天的照片，最终一年就只需要一张照片即可，这就是 Mina 采用的递归证明。

![](https://storage.googleapis.com/papyrus_images/b0fdaacf2bce7374ae7fe4debf7e374a07f66f79a8b2e3cc1e8793224e5a96f3.png)

如此一来，Mina节点无需同步整个历史记录，虽然这些节点不是完整节点，但由于SNARK 证明了交易的准确性，因此它们拥有与完整节点相同的安全性。

通过递归零知识证明，Mina区块链就变得非常「轻」，Mina 中的全节点可以仅为 10kb，这让Mina无论在效率还是安全方面都能够从一众公链中脱颖而出：

因为「轻」，所以网络运行效率高，进一步规避目前困扰以太坊许久的网络拥堵问题；

因为「轻」，所以不需要太高的硬件条件去同步历史数据，成为Mina网络节点的门槛就变得非常低，即使是运算能力相对较弱的移动端，类似手机、平板电脑等，也可以去同步验证 Mina 网络。

因为「轻」，所以全网节点增多，不仅提高了验证速度，而且提高了网络整体的安全性：如果有人提交了错误的 SNARK 证明，任何人的设备比如手机就可以立即验证并发现。

**Snapp：由 SNARK 驱动的去中心化应用程序**

每一条公链都希望发展自己的生态，Mina 也不例外。

Mina 希望搭建一个围绕零知识证明的生态系统，这个系统由Snapp组成，而Snapp则是由 SNARK 驱动的去中心化应用程序。

在其他区块链应用中，所有的事务、交易和数据都要被公开上链，但实际上我们想要的是验证这些数据的准确性，并不需要数据本身，因此很多计算其实并没有太多意义。

Snapp的最大特点在于：可以在保护用户隐私的情况下使用离线数据。在Snapp，用户不需要将自己的隐私数据上链，而是提交数据证明。Mina也不需要实际地运行整个计算，而是验证数据是否符合一定要求。

因此，基于Mina零知识证明构建的Snapp具有以下优势：

1）隐私保护功能；

2）以安全的方式验证大量数据的能力；

3）简洁带来的低成本和高度可拓展性。

**以DeFi为例：**

目前大部分借贷类DeFi都是超额抵押，这降低了资金利用效率。而通过Mina构建一个安全、隐私的信誉评估体系，就有可能揭开低抵押贷款的新市场。

在借贷之前，用户登录一个信用分查询服务的网站，并且去查询自己的信用分，同时在自己的本地去生成信用分的证明，并且把这个证明发送上链。

用户的资产情况、社保账号等数据并没有上链，这一方面避免了繁冗的计算，另一方面也保护了隐私信息。有了这个证明，借贷项目便可根据这个证明判断是否要发放贷款以及贷款额度等。

基于这些特性，Mina Snapp拥有广泛应用场景。

**成为可信桥梁：围绕零知识证明构建生态系统**

区块链的本质是一个去中心化账本，链与链、链与互联网应用之间的交互体验并不顺畅，极易形成信息孤岛，这直接限制了区块链的应用范围，因此「桥」的发展受到重视。

**在区块链的世界中，Mina能够很好的扮演「跨链桥」的角色。**

假设如果你是以太坊开发者，现在想桥接到另一条链上，你会面临各种问题：首先你需要知道另一条链上的实际共识状态是什么，但这需要下载大量的数据、进行大量的计算，从成本和效率上来说都是考验。但是Mina非常小，几乎任何链都可以在其自己的智能合约内验证Mina所有数据。

对于用户而言，这样的接入也是安全且无感的：如果你是以太坊用户，现在想访问某一热门Snapp ，通过Mina 可信任桥生成证明，你就可以在不迁移任何数据的前提下使用 Snapp。

这让Mina能够轻松接入任何一条链的生态，为Mina生态导入多链的应用场景、用户流量。

作为利用递归零知识证明打造简洁区块链的公链项目，Mina也非常适合成为其他公链的扩容方案，从而实现与其他公链的生态联动。事实上，Mina 已与公链生态的龙头以太坊进行合作，双方的基金会将出资，寻求第三方团队给出一个能高效验证 Pickles SNARK 的 EVM 改进方案，兼顾两条链优势的同时，实现Mina与ETH之间的互操作性。

**另一方面，Mina更有能力成为区块链连接真实世界的网关，这个网关开放又隐秘。**

开放之处在于，只要网站支持HTTPS协议，互联网数据就能无缝输入Mina，且这个数据是可验证的。

隐秘之处在于，用户数据本身并没有被暴露，仅仅是验证和分享关于这个数据所生成的证明。

比如，某公司要选举年度最佳员工，只有在公司干了超过1年员工才能参与投票。

在投票系统中，员工可以通过展示入职邮件来证明自己拥有投票权，并在完成投票后生成证明，将证明上链，使用这个证明来更新Mina链上的投票应用程序状态。

整个过程中，投票者并不会暴露自己是谁、把票投给了谁。投票期结束，任何人都可以验证投票结果。

**除了匿名投票之外，Mina网关也适合应用于：**

1）身份登录验证；

2）账户余额验证；

3）信誉评估验证；

4）大学成绩验证；

5）工作成就验证；

6）健康信息验证…

在每个需要数据验证的应用场景，Mina构建的「不需要可信设置的可组合的智能合约」都可以提供安全、高效且完全不依赖于第三方的证明，这体现了Mina在可拓展性方面的巨大潜力。

**技术SDK：正在路上**

当然，关于Snapp的种种设想是否能够照进现实，除了Mina自身的技术先进性之外，开发低门槛也是重要考量因素之一。

零知识证明的理解和应用都需要扎实的数学基础和开发经验，为了降低开发门槛，早在2017年， Mina 两位联合创始人Evan和Izaak就构建了一种用于构建零知识证明的计算机编程语言Snarky，并让 Snarky 在 Javascript 内部作为 DSL (或领域特定语言) 工作，开发者无需学习全新的编程语言，这大大降低零知识证明开发门槛。

另外，为了让递归零知识证明服务于更大规模的用户群体，Mina SDK开发工具包正在紧锣密鼓的开发当中。SDK可以将 SNARK 证明生成器和哈希生成器以及 Mina 界面嵌入到他们的应用程序中。推出之后，开发者仅需调用几个API接口即可实现Mina核心功能的集成。

根据官方团队透露，Mina SDK开发工具包预计在2021年第四季度推出，帮助开发者在Mina 部署 Snapps的同时，围绕应用部署、技术SDK使用的多类别扶持政策与激励措施也将一并推出。届时，Mina生态是否会迎来阶段性爆发，值得让开发者乃至整个社区期待。

---

*Originally published on [MinaWallet](https://paragraph.com/@minawallet/mina)*
