Skip to content
A minimal blockchain testbed in crystal
Crystal JavaScript HTML Shell Makefile
Branch: master
Clone or download
cserb Validate block (#6)
Fixes #3

- Pow blocks are being validated against nonce and hash
- Pos blocks are being validated against hash
Latest commit a19ccd1 Feb 6, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Validate block (#6) Feb 6, 2020


Build Status Stability Experimental Crystal 0.27.2 License MPL-2.0

About 🌐

The Cocol Project has the goal to lower the entry barrier for developers interested in building blockchains and dApps. There is still a long way to go and your help is needed.

Installation 🏹

Cocol is written in Crystal, so make sure to follow the installation instructions first.

After setting up Crystal you can clone the Cocol repository and install the dependencies:

> git clone
> cd cocol
> shards install

Usage ⚔

Make your changes to the code-base and than build Cocol

> make

The binary ./cocol offers the following CLI options


-p --port            The port your Cocol node is going to run on
-m --master          Making this node a master (there can only be one)
--max-connections    Setting the max-connections for peers.
--miner              Making this node a miner
--update             Triggering an update on launch (will catch up with the current height)

There is also a script that starts multiple nodes and the master for you

> ./script/ 66 5

First option is the amount of nodes and the second amount of miner. It will start the master node with the port 3000 and every other node with 3000 + n, while all miner have port 4000 + n

Now go ahead and open the explorer in a browser:

> open ./explorer/index.html

You should see 66 nodes and a miner (red border)

Each one of the nodes has a REST API on the corresponding port (e.g. 3001)

Start creating live fake transactions and watch the network come alive

> crystal script/

Development 👩‍💻👨‍💻

Cocol is in a very early stage. Expect changes, bugs and messy code. Test coverage sucks atm.

Contributing ️👷‍♀️👷‍♂

  1. Fork it ( )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request


  • github: cserb | twitter: @cerbivore | Cristian Șerb - creator, maintainer
You can’t perform that action at this time.