risc0 / battleship-example

A battleship game using ZKPs
43 stars 7 forks source link

Battleship (Rust)

Edit (Nov 2022): There have been breaking changes to NEAR integration since we built this demo; we're leaving this example up, but builders beware that we're not able to provide a whole lot of support for this example at the moment. Thank you for your understanding.

This README includes instructions to install and play RISC Zero Battleship on your own machine. For more information about RISC Zero Battleship, check out the tutorials at www.risczero.com. For questions, find us on Discord.

RISC Zero Battleship is a 2-player hidden information game implemented in Rust on the NEAR Network.

Players produce proofs of game-state and the result of their actions to enable two players to play fairly with no intermediaries.

Components

Requirements

Yew

Follow the instructions for Yew Project Setup.

NEAR

Install the near-cli:

npm install -g near-cli

Create a NEAR account: https://wallet.testnet.near.org/create

Running

Deploy the NEAR smart contract (optional)

cd contract
cargo build --release
near dev-deploy target/wasm32-unknown-unknown/release/battleship_contract.wasm

NOTE: If you deploy your own smart contract, you'll need to update the code to point to this new contract.

See: https://github.com/risc0/battleship-example/blob/main/web/client/near.js#L16

Launch the web service:

cargo run --bin battleship-web-server --release

Launch the web client:

cd web/client
trunk serve --open

Unit tests

cargo test

Known issues