🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

algoship

Package Overview
Dependencies
Maintainers
0
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

algoship

Battleship on the Algorand blockchain

1.1.2
latest
Source
npm
Version published
Weekly downloads
4
33.33%
Maintainers
0
Weekly downloads
 
Created
Source

Algoship :ship: :ship: :boom:

npm version

Algoship implements a basic version of the game battleship on the Algorand blockchain.

Algoship Terminal

To play, install Node and run:

npx algoship

The game will ask you for an node address and token to connect to an Algorand node. If you don't have one, consider a provider such as Algonode.

Backround

Each player has a 3x3 grid where they place ships. Each ship occupies 1 cell in the grid.

Every piece of information needed to play the game is stored on the Algorand blockchain using a stateful smart contract. This contract is defined in game.py. The players interact with only this smart contract; there is no direct communication between them.

If everything is stored on a blockchain, can players cheat?

Each player's grid of ships is stored on a public blockchain, and if these grids contained plaintext 0s and 1s players would be able to easily cheat. Instead, Algoship cryptographically commits to, but does not reveal, the values in each player's grids like so:

For each cell:

  • Players choose a secret string of bytes.
  • Players decide if a ship should occupy that cell.
  • They concatenate their secret with: 1 if a ship occupies this cell, otherwise 0.
  • They hash the concatenated string with SHA-512/256 and store the hash on the blockchain.

When it is time to reveal the value of a cell, the player submits that cell's secret. The smart contract then sees if that secret followed by 0 or 1 yields the hash that player submitted earlier, thereby revealing the hidden value.

What if a player submits a grid with 0 ships?

After a game finishes, each player must disclose their secret values for any cells that remain. The smart contract then ensures that each player placed the appropriate amount of ships.

FAQs

Package last updated on 22 Aug 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts