Skip to content

ethpandaops/forky

Repository files navigation

Forky

Forky captures, stores and visualizes fork choice data from the Ethereum Beacon Chain. Forky is designed to provide a live view of the Ethereum network, along with historical access.


Live Versions

Mainnet

Holesky

Sepolia


Contents


Features

  • Web interface for viewing fork choice data
  • Configurable retention period
  • Prometheus metrics

Capturing

  • Ethereum Beacon Node
  • Xatu

Storing

  • Memory
  • Filesystem
  • S3

Indexing

  • Sqlite
  • Postgres

Usage

Forky requires a config file. An example file can be found here.

forky - fetches and serves Ethereum fork choice data

Usage:
  forky [flags]

Flags:
      --config string   config file (default is config.yaml) (default "config.yaml")
  -h, --help            help for forky

Getting Started

Download a release

Download the latest release from the Releases page. Extract and run with:

./forky --config your-config.yaml

Docker

Available as a docker image at ethpandaops/forky

Images

  • latest - distroless, multiarch
  • latest-debian - debian, multiarch
  • $version - distroless, multiarch, pinned to a release (i.e. 0.1.0)
  • $version-debian - debian, multiarch, pinned to a release (i.e. 0.1.0-debian)

Quick start

docker run -d  --name forky -v $HOST_DIR_CHANGE_ME/config.yaml:/opt/forky/config.yaml -p 9090:9090 -p 5555:5555 -it ethpandaops/forky:latest --config /opt/forky/config.yaml;
docker logs -f forky;

Kubernetes via Helm

Read more

helm repo add ethereum-helm-charts https://ethpandaops.github.io/ethereum-helm-charts

helm install forky ethereum-helm-charts/forky -f your_values.yaml

Building yourself

  1. Clone the repo
    go get github.com/ethpandaops/forky
  2. Change directories
    cd ./forky
  3. Build the binary
     go build -o forky .
  4. Run the service
     ./forky

Contributing

Contributions are greatly appreciated! Pull requests will be reviewed and merged promptly if you're interested in improving the forky!

  1. Fork the project
  2. Create your feature branch:
    • git checkout -b feat/new-feature
  3. Commit your changes:
    • git commit -m 'feat(profit): new feature
  4. Push to the branch: -git push origin feat/new-feature
  5. Open a pull request

Running locally

Backend

go run main.go --config your_config.yaml

Frontend

A frontend is provided in this project in ./web directory which needs to be built before it can be served by the server, eg. http://localhost:5555.

The frontend can be built with the following command;

# install node modules and build
make build-web

Building frontend requires npm and NodeJS to be installed.

Contact

Sam - @samcmau

Andrew - @savid