Skip to main content
This table tracks all epoch transition events on the Monad network. Each epoch is approximately 50,000 blocks (~5.5 hours).

Table Schema

Column NameData TypeDescription
old_epochINTEGERThe epoch number before the transition
new_epochINTEGERThe epoch number after the transition
contract_addressVARCHARAddress of the staking precompile contract
transaction_hashVARCHARHash of the transaction containing the epoch change
transaction_indexINTEGERIndex of the transaction in the block
transaction_from_addressVARCHARAddress that initiated the transaction
transaction_to_addressVARCHARTarget address of the transaction
log_indexINTEGERIndex of the event log in the transaction
block_timestampTIMESTAMPTimestamp of the block at epoch boundary
block_numberINTEGERBlock number at epoch boundary
block_hashVARCHARHash of the block at epoch boundary
unique_idVARCHARUnique identifier for the epoch change event

Understanding Epochs

Epochs are fundamental time periods in Monad’s staking system:
  • Duration: Approximately 50,000 blocks (~5.5 hours)
  • Stake Activation: Delegation and undelegation actions take effect at epoch boundaries
  • Reward Distribution: Rewards are calculated and distributed per epoch
  • Validator Changes: Commission changes and other validator updates apply at epoch transitions

Sample Query

Calculate average epoch duration over time:
SELECT 
  new_epoch,
  block_timestamp as epoch_start,
  block_number as epoch_start_block,
  LAG(block_timestamp) OVER (ORDER BY new_epoch) as prev_epoch_start,
  DATEDIFF('hour', LAG(block_timestamp) OVER (ORDER BY new_epoch), block_timestamp) as epoch_duration_hours
FROM monad.staking.epochs
ORDER BY new_epoch DESC
LIMIT 100;