Socket
Socket
Sign inDemoInstall

algoship

Package Overview
Dependencies
25
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    algoship

Battleship on the Algorand blockchain


Version published
Weekly downloads
6
Maintainers
1
Install size
7.93 MB
Created
Weekly downloads
 

Readme

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. See here for information about how to obtain those.

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 "encrypts" the values in each player's grids like so:

For each cell:

  1. Players choose a secret string of bytes.
  2. Players decide if a ship should occupy that cell.
  3. They concatenate their secret with: 1 if a ship occipies this cell, otherwise 0.
  4. 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

Last updated on 08 Apr 2021

Did you know?

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc