Pebble is an alternative scheduler for Firedancer.
The goal is to increase validator revenue compared to the default scheduler, while ensuring:
  • independence: no reliance on an external block builder,
  • compliance with SFDP requirements,
  • alignment with expected scheduling behavior under Constellation,
  • Jito compatibility, if desired.
Unlike the balanced strategy or the Agave greedy scheduler, non-vote and non-bundled transactions are only scheduled during periodic auctions (typically every 50 ms).
This kind of scheduler, called Frequent Batch Auctions (FBA) or Frequent Batch Ordering (FBO), requires transaction senders seeking fast inclusion to compete primarily through priority fees, rather than:
  • trying to outpace others to reach the validator first, or
  • paying tips to one or more transaction landing services, hoping that one of them can deliver the transaction sooner, or has an opaque prioritization arrangement with the validator or its external block builder.
The key objective is therefore to restore the value of priority fees.
To use Pebble for your validator, clone one of the Pebble branches from the Puffin GitHub repository. For instance, for version v26.09.5:
git clone -b v26.09.5-pebble https://github.com/puffin-validator/firedancer.git
and modify the schedule_strategy and auctions_per_slot configurations as explained in default.toml.
⚠ this version if for TowerBFT only, for experimenting with Alpenglow, use main-pebble branch instead
PUFFIN has been running Pebble on mainnet since epoch 986, with Jito enabled.

Pebble performance

Comparison of Pebble with Jito enabled vs stock Firedancer (balanced strategy)
PebbleStockPebble Δ%Pebble winsWilcoxon P-Value
Base fees13.0214.55-10.5%22%0.0000
Priority fees78.5666.30+18.5%52%0.1339 (n.s.)
Jito tips43.946.68+557.7%84%0.0000
Total135.5387.53+54.8%59%0.0000
Epochs 1035-1047, 681 paired leader windows, reference validators: PUFFIN and Firedancer Development, median distance: 364 slots, rewards in lamports/µs, n.s.: not significant
Comparison of Pebble with Jito enabled vs BAM
PebbleBAMPebble Δ%Pebble winsWilcoxon P-Value
Base fees13.0211.99+8.5%76%0.0000
Priority fees78.6769.80+12.7%51%0.5469 (n.s.)
Jito tips44.1022.44+96.5%54%0.2095 (n.s.)
Total135.79104.24+30.3%52%0.1429 (n.s.)
Epochs 1035-1047, 682 paired leader windows, reference validators: PUFFIN and any BAM validator, median distance: 4 slots, rewards in lamports/µs, n.s.: not significant
According to Jito, BAM runs an FBA scheduler with 25 ms auctions. PUFFIN, synchronizing with Jito Block Engine, run auctions approximately every 50ms.
For the epochs considered in this study, the tables above show that the revenue is not significantly different between BAM and Pebble, but Pebble earns more revenue than Firedancer Balanced scheduler mainly because of higher Jito tips.

Performance measurement methodology

Rigorously assessing the performance of a scheduler is not an easy task. Average or median block rewards as reported in various dashboards are misleading due to the distribution of block rewards, which is far from normal, with excess kurtosis of ~50. In other words, some "whale" transactions weigh heavily in the total rewards but occur rarely. One consequence is that a low-stake validator will, more often than not, show lower average rewards per epoch than a high-stake validator running the same scheduler.
Furthermore, market activity varies heavily with the time of day and the day of the week.
To overcome these difficulties, we compare Pebble separately with each other scheduler, using the following methodology:
  1. We collect all Pebble leader windows for the period of interest.
  2. For each Pebble leader window, we look for the closest leader window of the other scheduler.
  3. We compare the total priority fees and Jito tips of each pair of leader windows.
  4. We perform a Wilcoxon signed-rank test. The test is significant if the P-Value is smaller than 0.05.