Home for all packages related to the Counterfactual project
Clone or download



Simple off-chain applications framework for Ethereum.

circleci license

Counterfactual is a simple off-chain framework for building state channel applications on top of the Ethereum blockchain. It aims to make it simpler to build permissionless applications that have instant finality with zero-fee transactions.

You can learn more about what state channels are by reading our whitepaper or a less technical written description. Further, if you want to dive into the specifications of the Counterfactual protocol you can read them here.


Installing dependencies

Make sure you have Yarn v1.10.1. Refer to Yarn's installation guide for setup instructions for your operating system.

To install the dependencies:


Building packages

To build all packages:

yarn build


To clean all packages:

yarn clean


To lint all packages:

yarn lint

To also apply automatic fixes:

yarn lint:fix


Presently for some of the tests to work, you need to have a ganache-cli instance running in the background. To do this, run using:

yarn ganache

You also need to migrate the contracts in the contracts package to generate a networks file which the machine package directly consume (for now).

cd packages/contracts
yarn migrate --network ganache

Finally, to run all tests:

yarn test