# nil; Foundation 在 EVM 中的完整 Mina 状态验证

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

---

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

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

**介绍**

早在 2021 年 4 月，Mina 基金会与以太坊基金会一起宣布招募设计和实现在以太坊上通过 Pickles SNARK 进行验证机制的[提案](https://mp.weixin.qq.com/s?__biz=Mzk0OTIzNzg3Nw==&mid=2247485649&idx=1&sn=d26678230ce18d44a25f7d69e7dc50b2&chksm=c35a29cbf42da0dd0690af0271e65ccc6efe062ff13e186e10a06d536dc41c26bb6976fad5d9&mpshare=1&scene=1&srcid=1207Th9AA1i6fRCaDDiloCxw&sharer_sharetime=1638885026518&sharer_shareid=b7fba7ceacf72cfe3b5af41b93f5b1a6&key=9368ec24e294fe2f1942c5a19859aecb3438509fc5f503888f238285987dbd7e69168320bc1f059bebe62c9d32b63f048a6876a00a3f13f1db57533905a8a111e6ca3ed7460a03fd598c9b1d7f004ecb9baf929ac2f81e7c9bd0908924f6cd80e21d04fc4555032bcd0e5b6b0aa4b1b074775ccab48656a306d1e839b62307bd&ascene=0&uin=MTY5MjI5MzMyMA%3D%3D&devicetype=Windows+7+x64&version=63040026&lang=zh_CN&exportkey=A9a6KbovDgX6IG68ZWuGXP8%3D&pass_ticket=5mZow%2BHQv782VvWO%2FabWbU%2Brj9cn8vJBTLh8sCyGVoAKaZxhFB%2FvXZV3TbfrnL08&wx_header=0&fontgear=2)。最后，经过严格的筛选，=nil; Foundation 的 =nil; Crypto3 团队的提案获得了官方的资助。  

本文为此系列博文的第一篇文章，涵盖桥接实现的一些内容。

**所以呢？**

[由于整个 Mina 协议状态（存档节点除外）可以打包在单个 Pickles SNARK 证明中](https://mp.weixin.qq.com/s?__biz=Mzk0OTIzNzg3Nw==&mid=2247485649&idx=1&sn=d26678230ce18d44a25f7d69e7dc50b2&chksm=c35a29cbf42da0dd0690af0271e65ccc6efe062ff13e186e10a06d536dc41c26bb6976fad5d9&mpshare=1&scene=1&srcid=1207Th9AA1i6fRCaDDiloCxw&sharer_sharetime=1638885026518&sharer_shareid=b7fba7ceacf72cfe3b5af41b93f5b1a6&key=9368ec24e294fe2f1942c5a19859aecb3438509fc5f503888f238285987dbd7e69168320bc1f059bebe62c9d32b63f048a6876a00a3f13f1db57533905a8a111e6ca3ed7460a03fd598c9b1d7f004ecb9baf929ac2f81e7c9bd0908924f6cd80e21d04fc4555032bcd0e5b6b0aa4b1b074775ccab48656a306d1e839b62307bd&ascene=0&uin=MTY5MjI5MzMyMA%3D%3D&devicetype=Windows+7+x64&version=63040026&lang=zh_CN&exportkey=A9a6KbovDgX6IG68ZWuGXP8%3D&pass_ticket=5mZow%2BHQv782VvWO%2FabWbU%2Brj9cn8vJBTLh8sCyGVoAKaZxhFB%2FvXZV3TbfrnL08&wx_header=0&fontgear=2)（仅有 22kb 大小），这意味着可以将整个 Mina 协议状态放到以太坊上。此外，这也意味着整个 Mina 协议状态能以合理的 gas 成本在 EVM 中验证。

在 EVM 中完整地验证 Mina 协议状态意味着有可能将 Mina 主网内部发生的一切都同步到以太坊上，包括金融应用、可证明的计算等等。

**具体如何实现？**

不幸的是，在 EVM 上直接搭建 Pickles SNARK 的验证成本太高。但！设计一个可以对 Pickles SNARK 执行某些预处理的系统看上去是可行的（例如，通过计算一个可以验证 Pickles SNARK 的 STARK，这可能是能够高效率地实现在 EVM 上的有效验证）。

Mina 中使用的 Pickles SNARK 验证器有几个组件：

1.  计算验证证明数据的多组哈希值。这涉及使用波塞冬散列函数在  和  上进行 63 轮完整轮次计算，轮次常数和为 [Fp](https://mp.weixin.qq.com/s?__biz=Mzk0OTIzNzg3Nw==&mid=2247485649&idx=1&sn=d26678230ce18d44a25f7d69e7dc50b2&chksm=c35a29cbf42da0dd0690af0271e65ccc6efe062ff13e186e10a06d536dc41c26bb6976fad5d9&mpshare=1&scene=1&srcid=1207Th9AA1i6fRCaDDiloCxw&sharer_sharetime=1638885026518&sharer_shareid=b7fba7ceacf72cfe3b5af41b93f5b1a6&key=9368ec24e294fe2f1942c5a19859aecb3438509fc5f503888f238285987dbd7e69168320bc1f059bebe62c9d32b63f048a6876a00a3f13f1db57533905a8a111e6ca3ed7460a03fd598c9b1d7f004ecb9baf929ac2f81e7c9bd0908924f6cd80e21d04fc4555032bcd0e5b6b0aa4b1b074775ccab48656a306d1e839b62307bd&ascene=0&uin=MTY5MjI5MzMyMA%3D%3D&devicetype=Windows+7+x64&version=63040026&lang=zh_CN&exportkey=A9a6KbovDgX6IG68ZWuGXP8%3D&pass_ticket=5mZow%2BHQv782VvWO%2FabWbU%2Brj9cn8vJBTLh8sCyGVoAKaZxhFB%2FvXZV3TbfrnL08&wx_header=0&fontgear=2) 和 [Fq](https://mp.weixin.qq.com/s?__biz=Mzk0OTIzNzg3Nw==&mid=2247485649&idx=1&sn=d26678230ce18d44a25f7d69e7dc50b2&chksm=c35a29cbf42da0dd0690af0271e65ccc6efe062ff13e186e10a06d536dc41c26bb6976fad5d9&mpshare=1&scene=1&srcid=1207Th9AA1i6fRCaDDiloCxw&sharer_sharetime=1638885026518&sharer_shareid=b7fba7ceacf72cfe3b5af41b93f5b1a6&key=9368ec24e294fe2f1942c5a19859aecb3438509fc5f503888f238285987dbd7e69168320bc1f059bebe62c9d32b63f048a6876a00a3f13f1db57533905a8a111e6ca3ed7460a03fd598c9b1d7f004ecb9baf929ac2f81e7c9bd0908924f6cd80e21d04fc4555032bcd0e5b6b0aa4b1b074775ccab48656a306d1e839b62307bd&ascene=0&uin=MTY5MjI5MzMyMA%3D%3D&devicetype=Windows+7+x64&version=63040026&lang=zh_CN&exportkey=A9a6KbovDgX6IG68ZWuGXP8%3D&pass_ticket=5mZow%2BHQv782VvWO%2FabWbU%2Brj9cn8vJBTLh8sCyGVoAKaZxhFB%2FvXZV3TbfrnL08&wx_header=0&fontgear=2) 指定的 MDS 矩阵。这一步的成本相当低，并且很可能在 EVM 上以合理的 gas 成本完成计算。
    
2.  检查几个算术方程。同样，这一步成本相当低，可以直接在 EVM 上实现。
    
3.  执行一次  的多标量乘法 (MSM)，其中一些基数是固定值，一些基数是变量。该步骤可能会以合理的效率直接在 EVM 上计算，但它可能比步骤 1 和 2 成本更高。
    
4.  对于每个 i，执行一次  的  多标量乘法，使用固定的基数组，以及可以从证明中非常有效地计算出的标量。
    

事实证明，第 4 步不可能直接在 EVM 上进行有效计算，除非将计算拆分为多个块。

这正是我们所采取的方法。

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

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

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

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

---

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