Solidity contracts which form the core of Project Entropy
JavaScript Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Project Entropy contracts

Stories in Ready Build Status

Entropy is an Ethereum-powered floating experiment

We're establishing a crowd-owned and community steered fleet of sailing hackspaces around the world.

This repository is a collection of Solidity scripts, used to create the Smart Contracts running on Ethereum which form the core of Project Entropy: it's governence model, citizenship and logic of operations.

We use Truffle as a contract development framework.

Throughput Graph


Entropy is built with an experimental but simple DAO structure designed to balance a real world project with the benefits of crowd wisdom and blockchain transparency.

Community 🏑

Citizens πŸ‘¬ hold the following rights:

  • A single Vote βœ‹ on every created Action πŸ’‘
  • Creating Actions πŸ’‘
  • Guardian πŸ’‚ nomination

Anyone can become a Citizen πŸƒ by obtaining and holding one or more Entropy Tokens πŸͺ

The individuality of citizens is confirmed by the guardians, once it is confirmed they become Trusted Citizens πŸ‘­

Trusted Citizens πŸ‘­ hold equal voting rights to all trusted individuals in the Entropy Community, they are able to suggest any Action πŸ’‘ for discussion and vote. These Actions πŸ’‘ can be anything at all, from destinations to sail to, events, changes to the mission itself and changes to the Guardians πŸ’‚

Guardians πŸ’‚

Guardians πŸ’‚ take on the responsibility to fulfil and document everything within the Action Stream πŸ“‹ as organised by and voted on by the wider community.

They have, in addition to the rights of all Citizens πŸƒ, access to any shared funds moved to the Slush Pool πŸ’° by the community voting as a whole.

Guardians are also able to mark Citizens as trusted, allowing for a human-based proof of individuality system.

Any Citizen πŸƒ can be elected to be a Guardian πŸ’‚ by an accepted Action πŸ’‘

Guardians are accountable to the wider community and can, if needs be, be unelected by a successful Action against them.

Actions and Funds πŸ’‘ πŸ’°

Any Citizen πŸƒ can propose a new Action πŸ’‘

All Actions πŸ’‘ can be voted βœ‹ on by the entire community for 5 days.

For an Action πŸ’‘ to be accepted, it must have more than 50% approval and at least as many votes βœ‹ as there are Guardian πŸ’‚ members (although voting is open to all Citizens πŸ‘ͺ).

After this period accepted Actions πŸ’‘ will be added to the Action Stream πŸ“‹ until they are marked as complete by one of the Guardians πŸ’‚

Declined Actions πŸ’‘ will be dismissed to the Archive ♻️

The Action Stream πŸ“‹ represents what the community is currently aiming to achieve.

Any funds associated with Actions πŸ’‘ in the Action Stream πŸ“‹ become available in the Slush Pool πŸ’° for the Guardians πŸ’‚ to use towards making those Actions πŸ’‘ happen.

🌈 ⛡️ πŸŽ†


The recommended workflow for developing and contributing to the contracts is using the truffle console for compiling, deploying and playing with contracts. In order to do that, just:

$ npm install -g truffle ethereumjs-testrpc

$ testrpc // leave process running
$ truffle console
> compile
Compiling Entropy.sol
> migrate --reset
> var entropy = Entropy.deployed()
Instance of an eth-pudding object to interactive with the live Entropy instance

You need to be running a Ethereum node with RPC enabled for Truffle to connect. In this example, we are just running it with testrpc, which is a in-memory RPC enabled node written in JS, that is very fast for development and testing. This can be run also on a private blockchain running with geth, the Ethereum testnet or the mainnet. See Truffle network configuration for more info.

To run the EntropyTestnet and connect to it with something expecting geth, run:

$ parity --chain ./entropy_testnet_chainspec.json --geth


Uncaught BigNumber Error: new BigNumber() not a base 16 number:

This can mean a string you were trying to access is null.


To run the tests, spin up an ethereum node and run:

$ truffle test

For running in the CI, a Docker image has been created for the sake of simplicity. It starts a testrpc node and runs the tests against it.


Project Entropy is licensed under the GNU AGPLv3 license