Getting Set Up
If you’re on macOS, install Homebrew and run
that if you don’t have Homebrew or you’re not on macOS, the below information
details what you’ll need. The script additionally sets up pre-commit hooks.
Currently the easiest way to build is using the
Dockerfile at the root of the
repository. A simple
docker build should get you a functioning container.
If you want to build natively, there are a few prereqs you’ll need to go through.
In particular, you’ll need the
compiler. You’ll also need to install the
which you can install using
go get -u github.com/gogo/protobuf/protoc-gen-gogoslick
go generate ./.../ from
keep-core and if everything is fine, start the
Keep client with
go run main.go.
For development purposes, it is convenient to set up local Ethereum client with a group of connected peers. A note-taken walkthrough covers the entire process including setting up local Ethereum client, deploying Keep contracts and configuring Keep peers.
To quickly install and start a client use the following scripts.
install.sh script will:
update client config files
The script will ask you for the password to previously created ethereum accounts.
To start the installation execute:
Starting a client
To start a client execute:
start.sh script will ask you to:
provide ethereum password
provide path to
keep-coreconfig files directory
select a config
.tomlfile for your client
There are two primary languages in the Keep code right now:
Go code largely adheres to community practices where they have been decided. Divergences and additional tidbits are listed in the Go Guidelines document.
There is a set of threshold relay state diagrams auto-generated from this
docs available at https://docs.keep.network/relay-states.pdf. The
images in the diagram, whose sources are at
img-src/*.tikz, are also
https://docs.keep.network/img/generated/*.png (the filenames
are identical to their TikZ sources, with a
.png suffix instead of
.tikz). These URLs are for the
main version of the repo; non-
branches are instead published to
Please avoid using
$GOBINlocation and use
$HOMEinstead. We’ve been observing some issues with locating
For Mojave, if you have a problem with missing include or missing library and you are sure that you have installed xcode with
xcode-select --install. Then install the following package:
Working with Solidity contracts
The fastest and easiest way to have local Ethereum testent is to use Ganache app. https://truffleframework.com/ganache/
You can also use a demo script to help you deploy contracts to your local testnet and to have demo balances (token, staking and token grants) allocated between first two accounts.
solidity directory and run:
npm install npm run demo