Skip to content

yano: pass a backfill block interval derived from the stability window - #191

Closed
rjharmon wants to merge 1 commit into
bloxbean:mainfrom
rjharmon:backfill-interval-passthrough
Closed

rjharmon wants to merge 1 commit into
bloxbean:mainfrom
rjharmon:backfill-interval-passthrough

Conversation

@rjharmon

@rjharmon rjharmon commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Yano's catch-up from the shifted genesis to wall clock places one empty block per slot, so create time grows with epoch length and the relay must copy the whole chain (about 550 blocks/s measured). A Haskell relay only needs one block per stability window (3k/f) to validate the history.

  • new property yano.backfill.block.interval.slots: auto (default) derives a quarter of the stability window 3k/f from the cluster's k and activeSlotsCoeff; an integer forces it; 1 keeps one block per slot
  • in past-time-travel mode the value is passed to Yano as yano.block-producer.backfill-block-interval-slots, through the environment and Yano's properties file; nothing is passed when the result is 1
  • documented in docs/pages/yano-node-modes.mdx and applications/cli/config/application.properties; unit tests cover the derivation and the overrides

Depends on bloxbean/yano#124 (yano.block-producer.backfill-block-interval-slots). Until the DevKit pins a Yano release that carries that property, this change has no effect: the bundled 0.1.0-pre6 starts cleanly with the property set and ignores it (verified against the beta5 image). It can merge before or after that release; it only becomes active with the pin bump. At activeSlotsCoeff below 1 the property also needs bloxbean/yano#125, since the slot-leader shift fails on Yano main before catch-up without it.

Measured with a Yano build from bloxbean/yano#124 and #125: a devnet with 3s blocks on 1s slots and 14-day epochs (k 80640, 3k/f 725760 slots) caught up 3,628,800 slots in 26 blocks, the relay accepted them all, PV11 cost models were enacted (332/332/350), and the whole create took under two minutes. With 7s blocks and 6-day epochs the same run placed 24 blocks. Create time no longer depends on epoch length.

Yano's catch-up placed one empty block per slot, so create time grew with
epoch length and the relay had to copy the whole chain. A relay only needs
one block per stability window (3k/f) to validate the history.

- add yano.backfill.block.interval.slots (auto: a quarter of 3k/f, an
  integer to force, 1 for one block per slot)
- pass it to Yano as yano.block-producer.backfill-block-interval-slots in
  past-time-travel mode, through the environment and the properties file
- document it in the node modes page and the CLI properties file

Needs a Yano build that knows the property; older builds ignore it.
@satran004

Copy link
Copy Markdown
Member

This one is superseded by #193, which is now merged, so I'm closing it.

@satran004 satran004 closed this Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants