Pebble is an alternative scheduler for Frankendancer and 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 v0.1006:
git clone -b v0.1006.40100-pebble https://github.com/puffin-validator/firedancer.git
and modify the schedule_strategy and auctions_per_slot configurations as explained in default.toml.
PUFFIN has been running Pebble on mainnet since epoch 986.

Pebble performance

Comparison of Pebble with Jito enabled vs stock Firedancer (balanced strategy)
PebbleStockPebble Δ%Pebble winsWilcoxon P-Value
Priority fees60.1257.22+5.1%46%0.0826 (n.s.)
Jito tips31.576.54+382.9%81%0.0000
Total101.3473.84+37.2%56%0.0000
Epochs 994-1012, 893 paired leader windows, reference validator: Staking Facilities, median distance: 92 slots, rewards in lamports/µs, n.s.: not significant
Comparison of Pebble with Jito enabled vs BAM
PebbleBAMPebble Δ%Pebble winsWilcoxon P-Value
Priority fees59.8165.76-9.0%44%0.0001
Jito tips31.5923.12+36.6%51%0.3278 (n.s.)
Total101.0498.06+3.0%46%0.0340 (n.s.)
Epochs 994-1012, 891 paired leader windows, reference validators: any BAM validator, median distance: 4 slots, rewards in lamports/µs, n.s.: not significant
According to Jito, BAM runs an FBA scheduler with 50 ms auctions, like Pebble. However, we see that priority fees are higher with Pebble in less than 50% of pairs. Three reasons may explain this:
  • Transaction senders see BAM's scheduler as more deterministic, so paying high fees appears less risky. This is corroborated by a finer analysis of transaction distribution in BAM and Pebble blocks: the rewards from transactions paying less than 0.01 SOL are roughly equal. The number of whale transactions is similar, but those landing in BAM blocks tend to pay more, though this difference is not statistically robust in our sample.
  • Pebble (ironically) gives Jito bundles higher priority than BAM does. Some transaction senders are aware of this (at least 12 frequent signers have been identified) and bundle their transactions with Jito tips when sending to Pebble, and send plain priority-fee transactions to BAM. A non-negligible (~10%) amount of the priority-fee gap is thus not lost by Pebble but is paid in Jito tips instead.
  • BAM collects exclusive revenue via its plugin system that is passed to validators as additional priority fees.

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.