---
# System prepended metadata

title: Finding for BattleZips frontend

---

# Findings for BattleZips Frontend

Frontend Repo : 
https://github.com/BattleZips/BattleZips-Noir-frontend

Subgraph : 
https://github.com/BattleZips/battlezip-subgraph

Contract deployed on polygon mumbai used : https://mumbai.polygonscan.com/address/0xe65c09d82572201684972562062619a2a56e6671#code

`NOTE: Both players need to connect their MetaMask wallet and have some testnet MATIC in their wallet for making transactions.`

## Game flow


A user start a battleship game by generating a proof and making a SC call:
```
newGame(uint256 _boardHash,bytes _proof)
```

OR
```
joinGame(uint256 _game,uint256 _boardHash,bytes _proof)
```
Sample : https://mumbai.polygonscan.com/tx/0xf0dca0df2bd9bacacbfae2877de125b322f55f906c74480377c688aef420c2a6

----------------------------------------------------------------

For the user who has generated the game, they have the first turn and submit the move by making a smart contract call. No proof is required for this turn:
```
firstTurn(uint256 _game,uint256[2] _shot)
```

Sample : https://mumbai.polygonscan.com/tx/0xe3bb40614b60dddbda44a5d25a9318e687224ea03eb9104bec00cdfe55526863

-----------------------------------------------------------------

Every subsequent move by any player requires generating a proof and making a smart contract call:
```
turn(uint256 _game,bool _hit,uint256[2] _next,bytes _proof)
```

Sample : 
https://mumbai.polygonscan.com/tx/0xf2fd2707ddfc32a6b9d73178f89c19c545070e7a4d142fd2d16d6584f53aa2f6

-----------------------------------------------------------------


We can plug in our API for generating proof here : 
https://github.com/BattleZips/BattleZips-Noir-frontend/blob/master/src/views/BuildBoardView/index.tsx#L178C45-L178C45

------------------------------------------------------------------

## Inputs

newGame/joinGame board inputs from frontend : 

```
{
        "hash": "0x20c29c67ebd03a88d88e12cbc86d9180f5aa071cd84a459f1304e8e2b5b81742",
        "ships": [
            8,
            0,
            1,
            2,
            1,
            0,
            1,
            5,
            0,
            6,
            5,
            1,
            3,
            9,
            0
        ]
}
```

turn inputs from frontend : 

```
{
        "hash": "0x012bb1bf8be3fc3ea5eb6c2de9cfb6c7c371c60f2254712b3aa4d933ee4a0277",
        "hit": 0,
        "ships": [
            8,
            1,
            1,
            3,
            1,
            1,
            1,
            6,
            0,
            6,
            7,
            0,
            2,
            8,
            1
        ],
        "shot": [
            7,
            1
        ]
}
```







