# Snapps For Mina 项目分析5

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

---

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

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

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

项目源码入口：[https://snappsformina.com/snapp/checkersnapp/](https://snappsformina.com/snapp/checkersnapp/)

一、Checkers Game 西洋棋
-------------------

CheckerSnapp 项目的灵感来源于西洋棋。在西洋棋中，双方对弈，有两种颜色的棋子。具体规则在这里就不赘述了，请自行谷歌。

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

二、CheckerSnapp
--------------

1、CheckerSnapp 代码实现上主要是西洋象棋行棋规则的业务逻辑。

2、 if(DAO) 认为 CheckerSnapp 项目的亮点是为 GameFi 的实现方式带来的新思路：

（1）传统中心化棋类游戏，棋盘的状态变化和历史游戏战绩都可以随意被第三方删除或修改。

（2）棋类游戏 + 传统区块链 （GameFi），一般的系统设计是：资产和关键性信息（比如棋局结果）是上链的，所以无法随意篡改棋局的结果。

*   如果棋盘状态的每次变化都在中心化服务器上记录并验证，则行棋过程有舞弊风险。
    
*   如果棋盘状态的每次变化都上链，需要全网节点进行共识，则游戏体验很差，同时浪费了大量计算资源。
    

（3）棋类游戏 + Mina Snapp（CheckerSnapp）

*   每走一步带来的棋盘状态变化在本地进行计算，比如链下计算当前这步行棋是否符合游戏规则。
    
*   提交该轮行棋的Proof到链上，全网节点对Proof进行zk-SNARK验证，并更新棋盘最新状态。
    
*   棋盘的状态变化和历史游戏战绩都无法篡改，同时节省了全网计算资源。

---

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