# Snapps For Mina 项目分析4 **Published by:** [Ethan - if(DAO)](https://paragraph.com/@ethan-if-dao/) **Published on:** 2021-12-16 **URL:** https://paragraph.com/@ethan-if-dao/snapps-for-mina-4 ## Content 零、项目背景Mina 社区的 minacrypto.com 在新网站 snappsformina上发布了在训练营上出现的一些很酷的 Snapp 构想。 下面是 if(DAO) 对 ZKPass 项目的业务逻辑以及零知识zk-SNARK应用的浅析。 项目源码入口:https://snappsformina.com/snapp/zkpass/一、ZKPassZKPass是一个加密身份dapp,实现了“增删改查”中的增和改用户信息。 ZKPass也是一个基于Snapp智能合约的钱包,实现了资产的存入、取出和转账。可执行的操作包括: registerAccount():新增用户的身份信息<姓名,邮箱>; updateAccount():修改用户的身份信息<姓名’,邮箱’>; deposit():向Snapp合约中存入MINA; withdraw():从合约中取出MINA; transferToName():根据注册名字进行转账。二、ZKPass涉及的Snapp传统的区块链转账会在链上形成一笔转账记录:From从谁,To转给谁,Amount多少钱,从而导致隐私泄露。 或者在Ethereum上发布一个Smart Contract,该合约用于记录 “ 知识:姓名、邮箱和存入的MINA数量 ”,由于该知识是上链的,所以导致隐私泄露。 ZKPass项目的做法是发布一个Snapp合约,合约实现了上述可执行的操作。用户可以将自己的 “ 零知识:姓名、邮箱和资产操作情况(存、取、转账)” 对应的Proof发送至链上,全网其他节点验证该客户的身份和对资产的存、取和转账是否合法,却不知道该客户的实际身份信息,也不知道该客户存了多少MINA、取了多少MINA、转账了多少MINA。 ZKPass代码未实现功能:“ 零知识:姓名、邮箱和资产操作情况(存、取、转账)” 生成Proof的过程,未实现。如图所示: ## Publication Information - [Ethan - if(DAO)](https://paragraph.com/@ethan-if-dao/): Publication homepage - [All Posts](https://paragraph.com/@ethan-if-dao/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@ethan-if-dao): Subscribe to updates - [Twitter](https://twitter.com/GambMetallica): Follow on Twitter