Blockchain Stack

Celo Blockchain

All Grassroots Economics components have been specifically developed to run on EVM blockchains, specifically targetting Celo, however it should be possible to adapt it to other blockchain and distributed ledgers technologies.

Full node

Sarafu Network and the Custodial Stack specifically requires a full node with the flowing API's enabled:

  • eth.
  • net.
  • txpool.
  • debug.

And the following transports also enabled:

  • GraphQL.
  • Websocket.
  • RPC.

Docker deployment

We provide an easy to use Docker setup (opens in a new tab) to quickly setup a full node.

System Requirements

For Alfajores testnet:

  • 4 vCPU
  • 8 GB RAM
  • 200 GB SSD storage
  • 100Mbps network connection

For Mainnet:

  • 4 vCPU
  • 12 GB RAM
  • 500 GB SSD storage
  • 100Mbps network connection


  • Docker
  • chrony or any other NTP daemon
  • A download manager e.g. aria2
  • zstd

Firewall Requirements

The following ports should be open to the internet:

  • 30303/udp
  • 30303/tcp
  • 443/tcp
  • 80/tcp

Quick Docker installation


This step can be skipped if you have Docker already installed.

$ apt update && apt upgrade --yes
$ apt install curl
$ curl -fsSL | bash

Quick Other Required Packages installation


This step assumes you are on an Ubuntu/Debian based OS.

$ apt install git chrony aria2 unzip


1. Download Celo snapshot

Celo offers periodic snapshots that allow you to get you blockchain node up and running as fast as possible. The links are:

  • Mainnet: (Contains a missing block, may require manual rewinding)
  • Alfajores Tesnet:
  • Baklava Testnet:

To download either of these:

$ aria2c -x 16 -s 16 $DOWNLOAD_LINK

The downloaded archive will be used in step 4.

2. Clone grassrootseconomics/celo-node Repo

Grassroots Economics provides an opinionated and alternative devops setup flavor to the official full node setup provided by Celo (opens in a new tab).

$ git clone

3. Prepare directories

$ cd celo
$ docker network create celo
$ docker compose up
# After a few seconds, cancel the operation with CTRL+C

This step will create a data folder inside the current celo folder.

4. Extract and restore the downloaded snapshot


This step requires sudo permissions because of the container init user. It also requires running sensitive delete commands i.e. rm and mv.

$ tar --use-compress-program=unzstd -xvf chaindata-latest.tar.zst
# This assumes you are in the root folder of the cloned celo-node
$ sudo mv chaindata data/celo

4. Bring up Celo node container

# If you want to run the testnet node, modify the docker-compose.yaml file first! i.e. --alfajores flag
$ docker compose up -d

4. Bring up Caddy container


This step should only be run if you plan on exposing your node's APIs to the internet.

# In the celo-node folder
$ cd caddy
# Update the Caddyfile with correct values
$ docker compose up -d