# Snapps For Mina 项目分析7

By [Ethan - if(DAO)](https://paragraph.com/@ethan-if-dao) · 2021-12-18

---

零、项目背景
------

Mina 社区的 [minacrypto.com](http://minacrypto.com/) 在新网站 [snappsformina](https://snappsformina.com/)上发布了在训练营上出现的一些很酷的 Snapp 构想。

下面是 if(DAO) 对 Stir with JarOfPickles 项目的业务逻辑以及零知识zk-SNARK应用的浅析。

项目源码入口：[https://snappsformina.com/snapp/stir-with-jarofpickles/](https://snappsformina.com/snapp/stir-with-jarofpickles/)

一、Stir with JarOfPickles
------------------------

代码逻辑：

1、Stir with JarOfPickles 项目首先创建了一个Snapp合约。

2、创建了一个 whitelist（比如白名单中有4个地址），whitelist存储至 IPFS，得到cid1。

3、将 cid1 发送至Mina网络并上链存储。

4、4个地址依次向 Snapp 存款，存款时需要预设未来取款时的 “ secretNumber ”。

5、将这4笔存款记录构建一个单独的 Merkle Tree。

6、将 Merkle Tree 存储至 IPFS，，得到cid2。

7、将 cid2 发送至Mina网络并上链存储。

8、最后 whitelist 4个地址之外的地址，可以凭借secretNumber从 Snapp 中取出 Mina，从而达到混币的目的。

注：第5步单独构建的 Merkle Tree 校验 “ secretNumber ” 对应的地址能不能取款、允许取款多少金额等功能暂未开发完成。

if(DAO) 认为，Stir with JarOfPickles 项目预期的业务场景是混币，借鉴的项目是 Tornado，Stir with JarOfPickles 项目中的 “ secretNumber ” 类似于 Tornado 项目的 “ Note ”。

---

*Originally published on [Ethan - if(DAO)](https://paragraph.com/@ethan-if-dao/snapps-for-mina-7)*
