# Mina Docs|Snapp:SNARK 驱动的应用程序 **Published by:** [MinaWallet](https://paragraph.com/@minawallet/) **Published on:** 2021-11-18 **URL:** https://paragraph.com/@minawallet/mina-docs-snapp-snark ## Content ** Snapp = 去中心化应用(Dapps)+ 隐私(隐私)+ 脱链数据(链下数据)+ 可扩展性(可扩展性)** 世界上最轻支持的一个区块链,Mina 是一个全新的应用类别,世界 Snapps3:Snark 化的应用。Snapps 在功能上与以太坊坊上的 Dapp 相似,但由于同一特定的属性,Snapp 更胜一筹:在不披露数据的情况下验证数据的通知。验证使用计算的正确执行。重要的可损害性的好处。这些类型的应用特别是新的,在它们,它们都存在于当今的区块链中:ZCash 伴随着属性 1 的 Snapp,Mina 伴随着属性 2 的 Snapp。 Snapp 也比以太坊上的 Dapp 高效执行。为了让这个坊以太计算机向其用户承诺 Dapp,网络上的节点和矿工必须运行相同的计算。这非常低效。对于 Mina 上 Snapp,Snapp 是由它开发的人员执行一次,之后所有其他节点都可以验证相关的SNARK证明。 人们可以对以太坊上的SNARK驱动的2个Dapp进行同样的演示层,但是这些Dapp仍然受到限制的破坏,而米娜上坊斯内普米娜米娜一点链的特性,具有可开发性的潜力。 一个Snapp上的Mina有以下工作流程:确定要运行的代码,如果没有报道,就发布它使用下面的代码通过对 Mina 的函数调用来部署一个 SNARK 电路获取要在其上执行计算的数据使用相关数据调用函数 运行在链上,后计算智能【在主网6-12个月就可以完成】将函数返回的 SNARK 证明附加到 Mina 地址Mina可知SNARK证明的结果执行事务技术概述 按照现在的设计,米娜的斯内普功能将工作如下。将有一种新的账户,称为“p 账户”,除了公钥和余额之外,Snap 还将包含一个 Pickles 的 ARK 验证密码 K 和一个状态 S,由多个元素组成。将会出现一种这种“单一的Snapp 事务”的新型事务。将支持其与标准帐户之间的快速,以及更新Snapp 的状态。一个标准账户地址:一个标准的账户地址一个Snapp账户地址:一个Snapp账户地址A signed amount "snapp_account_delta" which represents the change in balance for the Snapp account:表明 Snapp 账户余额变化的已署名“snapp_account_delta”数量An optional proposed new state "snapp_new_state" for the Snapp account:对于一个 Snapp 账户可供选择的建议的新状态“snapp_new_state”If snapp_acount_delta > 0, a signature on the transaction from the standard account:如果 snapp_account_delta 大于 0,标准账户上产生一笔签名事务A Pickles SNARK proof which should verify (with the Snapp account's verification key) against a statement including:一个需要反证以下陈述的 Pickles SNARK 证明:snapp_account_delta : SignedAmountsnapp_prev_state : Arraysnapp_new_state : Array应用该事务的结果将按照指示更新 Snapp 的状态,通过 snapp_acount_delta 修改 Snapp 的余额,通过 - snapp_account_delta 修改标准账户的余额。将会有一种新的事务叫做“双 Snapp 交易”。这将允许同时更新两个 Snapp 账户的状态(并在两者之间转移资金)。它将包含A Snapp account address "address1":一个 Snapp 账户“address1”A Snapp account address "address2":一个 Snapp 账户“address2”A signed amount "account1_delta" which represents the change in balance for the first account:表明第一个账户余额变化的已签名“account1_delta”数量Two optional proposed new states "account1_new_state" and "account2_new_state":两个 Snapp 账户可供选择的建议的新状态“account1_new_state”和“account2_new_state”If snapp_acount_delta > 0, a signature on the transaction from the standard account:如果 snapp_account_delta 大于 0,标准账户上产生一笔签名事务Two Pickles SNARK proofs proof1, proof2, which should for i = 1, 2 should verify (with account i's verification key) against a statement including:两个需要证明以下陈述的 Pickles SNARK 证明:account1_delta : SignedAmountaccount1_prev_state : Arrayaccount1_new_state : Arrayaccount2_prev_state : Arrayaccount2_new_state : Array应用该交易的结果将是按照指示更新两个帐户的状态,用 account1_delta 修改 account1 的余额,用 -account1_delta 修改 account2 的余额。 O(1) Labs 目前正在为应用开发者开发工具,包括现有的 snarky 等工具,以便轻松开发 Snapp,只需点击一个按钮,就可以计算所需的 SNARK 证明。该工具将与 Mina 兼容,为 Snapp 提供一种获得状态和财务价值的简单方式。 让我们通过几个例子来展示 Snapp 的真正力量 例子 例 1:信用评分证明 价值定位:向借款人提供一种方式,证明他们的信用评分高于某个阈值,而无需披露信用评分,从而能够在不提供任何抵押品的情况下借入资金。 示例用户流:用户访问贷款人网站要求从 CreditKarma 等信用评分提供者下载加密签名的信息网站本地检查信用评分是否超过阈值,并计算 SNARK 证明返回结果SNARK 证明和结果附在用户的 Mina 地址上,与贷款人云系统共享(也可以是智能合约)Lender 验证 SNARK 证明和阈值是否通过如果它符合标准,提供稳定币贷款给 Mina 地址如何使用 Snapp 工具集:Snapp 的开发者使用工具集集成一个特定的项目,用户下载一个从供应商签订的信用评分,检查用户的计算机上本地的分数是否达到标准,和本地产生的证据检查,随后与开发者共享。该工具集还在幕后为用户提供 Mina 地址,它为 Mina 上通过区块序号的计算提供时间戳。他们还使用工具集将 SNARK 验证器集成到自己的后端,以确认本地计算的正确的性。 例 2:真实身份证明文件 价值定位:证明 Mina 地址的所有者可以访问一个真实的身份文件(如驾驶执照),而不披露文件本身,从某个区块高度开始。身份文档的有效性将由一个标准化的开源算法进行检查。 示例用户流:用户访问网站,下载应用程序到笔记本电脑或手机使用 app 扫描 ID,验证其真实性App 还为用户创建 Mina 钱包应用程序关联 SNARK 证明与用户的 Mina 地址,以及 ID 的照片散列用户访问另一个要求提供真实身份的网站。是否能够共享 ID 证明,以及他们的 ID 的散列,以确认他们的 Mina 地址拥有一个真实的 IDSnapp Toolset 如何使用:Snapp Toolset 为开发者提供了一个 SDK,可以将 SNARK 证明生成器和哈希生成器嵌入到他们的应用程序中,以及一个 Mina 接口。Snapp toolset 还为其他开发者提供了 SNARK 验证器来验证上述 ID 身份验证。 例 3:Coinbase 余额的证明 价值定位:向第三方提供属于特定电子邮件的 Coinbase 账户的资金符合特定标准(如 > $10,000)的证明,但不披露实际存款金额。 示例用户流: *用户访问一个借贷应用程序。为了借入资金,账户中至少拥有超过 10,000 美元的比特币。用户 OAuths 到他们的 Coinbase 帐户该网站在本地检查用户的余额和电子邮件,都是用 Coinbase 的密钥签名的网站本地生成的 SNARK 证明,用户的余额 > $10,000SNARK 证明是附加到用户的 Mina 地址用户使用他们的 Mina 地址签署他们的 SNARK 证明的所有权,并与借贷应用程序的后端共享他们的 Coinbase 帐户的电子邮件地址。Snapp工具集的使用方式:Snapp的开发者使用工具集来集成一个特定的,该程序将用户OAuth集成到Coinbase的账户中,查询他们的账户已注册签名的余额信息、账户的电子该工具集允许在本地生成 SNARK 证明,而不是与服务提供的公开共享任何信息,因此所有的余额信息都是合法工具的。开发人员使用集集将 SNARK 验证器集成到自己的副本,以确认计算本地的有效性。 例4:非公开投票 价值定位:允许一组用户的选民(如拥有超过100名粉丝的任何推特账户)进行私下投票,而不让他们选择以及他们投票的目标。完成投票期结束,任何人都可以验证整个投票的结果。 示例用户流: *用户可以通过展示他们成功登录twitter.com的HTTPS记录来证明一个账户的身份验证和投票,他们将证明(橙色的公共输入),“我知道一个密码为P的账户A和一个有效的登录”记录 (A, P) 和哈希 (A, P) = N,我的投票是选项 V”。投票。在一个完全去中心化的模式下,用户可以使用这个证明来更新米娜链上的选择应用程序的状态。在上升的知识下、部分去中心化模式中,用户将他们的零知识证明发送到一个证明聚合器,该聚合器维护选择状态,然后将聚合证明聚合成一个捆绑的证明,然后将发布到米娜链。在查看选择结果时,用户获得了主要的 Mina 区块链证明,该证明了整个 Mina Merkle 树的有效性,包括与选择状态对应的叶子。他们还获得了进入这片叶子的 Merkle 路径,这样就可以查看其状态。其他的看法 Snapp 的设计空间是巨大的,随着框架被更好地理解,创业者们想提出许多其他创新的想法。我们的其他一些例子:使用身份证明文件的年龄证明使用身份证明文件的公民身份银行账户证明没有做某活动的证明,部分例如链地址与特定身份相关联没有将钱发送到黑名单地址,没有披露地址对文件的有限修改的证明,例如调整一张有效照片的大小下一步和社区参与 O(1) Labs 正在努力构建 Snapp 工具集,这件衣服的例子在 Mina 一小段上链成为可能,并与有能力的开发合作构建第一个概念实现证明。 ## Publication Information - [MinaWallet](https://paragraph.com/@minawallet/): Publication homepage - [All Posts](https://paragraph.com/@minawallet/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@minawallet): Subscribe to updates - [Twitter](https://twitter.com/pengcash1): Follow on Twitter