Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 1.7 KB

File metadata and controls

60 lines (44 loc) · 1.7 KB

Firedancer

This repo contains two validator clients:

  • Firedancer — A fully C-based Solana validator client.
  • Frankendancer — Legacy Rust/C hybrid validator.

Unless prompted, only focus on Firedancer and avoid Frankendancer specific parts (fdctl, fddev, discoh). Focus on Firedancer equivalents (firedancer-dev, discof).

Firedancer only supports x86-64 on Linux, other targets are not correct for example ARM due to TSO assumptions.

Topology: src/app/firedancer/topology.c. Tiles: src/disco, src/discof.

Building

make -j - builds everything make -j firedancer-dev - builds dev validator make -j test_blake3 - builds a test

The default make parameters are:

  • CC=gcc
  • MACHINE=native
  • EXTRAS=''

Always isolate build dirs when changing Make params, e.g.:

  • make -j BUILDDIR=clang-fuzz-asan CC=clang EXTRAS="fuzz asan"
  • make -j BUILDDIR=clang-cov CC=clang EXTRAS=cov

For Firedancer builds:

  • keep a single flat name for BUILDDIR
  • never pass arbitrary other make variables
  • never invoke raw gcc

Auto-generated Code

  • Metrics: After changing metrics.xml, run:

    make -C src/disco/metrics metrics

    Regenerates all files in src/disco/metrics/generated/ and book/api/metrics-generated.md.

  • Features: After changing feature_map.json, run:

    cd src/flamenco/features && make generate

    Regenerates fd_features_generated.h and fd_features_generated.c.

  • Protobufs: After protosol proto definitions change, run:

    make -C src/flamenco/runtime/tests protobufs

    Regenerates all files in src/flamenco/runtime/tests/generated/.

Code Style

Follow the coding conventions in CONTRIBUTING.md when making code changes.