Skip to main content

Intro

Run with Docker Compose​

You can (preferably) use docker to run the system. Instructions for building from source is provided in the next section.

Install Docker:​

Follow the docker install instructions for your platform/architecture.

Onboarding instructions will be based on Ubuntu 22.04 LTS x86_64 / amd64.

Install direnv:

sudo apt update
sudo apt get direnv

# bash users - add the following line to your ~/.bashrc
eval "$(direnv hook bash)"
source ~/.bashrc

# zsh users - add the following line to your ~/.zshrc
eval "$(direnv hook zsh)"
source ~/.zshrc

Clone and Set Env Vars​

  1. Clone the covalenthq/rudder repo.
git clone https://github.com/covalenthq/rudder
cd rudder
cat docker-compose-mbase.yml
  1. Check global environment variables
$ cat .envrc

export IPFS_PINNER_URL="http://127.0.0.1:3001"
export EVM_SERVER_URL="http://127.0.0.1:3002"

[[ -f .envrc.local ]] && source_env .envrc.local

Note: .envrc.local overrides any env vars set with .envrc on calling direnv allow .

  1. Set local environment variables.
$ touch .envrc.local

export BLOCK_RESULT_OPERATOR_PRIVATE_KEY="BRP-OPERATOR-PK-WITHOUT-0x-PREFIX"
export NODE_ETHEREUM_MAINNET="<<ASK-ON-DISCORD>>"
export IPFS_PINNER_URL="http://ipfs-pinner:3001"
export EVM_SERVER_URL="http://evm-server:3002"
export WEB3_JWT="<<WEB3.STORAGE-API-TOKEN>>"

Note: When passing the private key into the env vars as above please remove the 0x prefix so the private key env var has exactly 64 characters.

  • BLOCK_RESULT_OPERATOR_PRIVATE_KEY: Your personal Block Result Producer (BRP) operator private key.

  • WEB3_JWT: Your personal web3.storage API token used by the ipfs-pinner service.

  • IPFS_PINNER_URL: Service (ipfs-pinner) used by Rudder to access IPFS assets like Block Specimens (the service is automatically invoked and run with the in-repo Docker compose files, e.g., docker-compose-mbase.yml).

  • EVM_SERVER_URL: Service (evm-server) used by Rudder for stateless execution of Block Specimens into indexable (queryable) Block Results.

Start Services​

Load env vars into the shell.

$ direnv allow .

# make sure you see these being loaded
direnv: loading ~/rudder/.envrc
direnv: loading ~/rudder/.envrc.local
direnv: export +BLOCK_RESULT_OPERATOR_PRIVATE_KEY +ERIGON_NODE +EVM_SERVER_URL +IPFS_PINNER_URL +NODE_ETHEREUM_MAINNET +WEB3_JWT

Start all 3 services in the background for Moonbase alpha

```bash
$ docker compose -f "docker-compose-mbase.yml" up -d --remove-orphans


[+] Running 3/3
⠿ Container rudder Started 3.2s
⠿ Container ipfs-pinner Started 1.9s
⠿ Container evm-server Started 1.8s

NOTE: On a system where an ipfs-pinner instance is already running, check the instruction in the Appendix to run rudder docker alongside.

Monitor the logs for Block Result submissions.

$ docker compose -f "docker-compose-mbase.yml" logs -f –tail 2

rudder | [info] curr_block: 4591264 and latest_block_num:4591263
ipfs-pinner | 2023/06/22 13:45:49 Received /health request: source= 127.0.0.1:54420 status= OK
rudder | [info] curr_block: 4591264 and latest_block_num:4591263
ipfs-pinner | 2023/06/22 13:46:00 Received /health request: source= 127.0.0.1:54430 status= OK
rudder | [info] curr_block: 4591264 and latest_block_num:4591264
rudder | [info] listening for events at 4591264
rudder | [info] found 0 bsps to process