Payouts

Protocol fees from minting are distributed as ETH to stakers and burners through a cycle-based system.

Fee Flow

1

Accumulation

Mint fees accumulate as undistributed ETH in the contract.
2

Distribution

Anyone calls distributeETH() to split accumulated fees into pools. Caller receives a 0.33% incentive fee.
3

Trigger Payouts

Anyone calls triggerPayouts() when a cycle’s maturity day is reached. This calculates the reward per share for that cycle.
4

Claim

Stakers claim their ETH. Burners claim their burn pool ETH separately.

Cycle Payout System

The 28% cycle payout pool is split across four independent cycles:
CycleShareEffective % of Total FeesTriggers Every
Day 830% of 28%8.4%8 days
Day 2830% of 28%8.4%28 days
Day 9020% of 28%5.6%90 days
Day 36920% of 28%5.6%369 days

How Payouts Are Calculated

When triggerPayouts() is called and a cycle is mature:
payoutPerShare = cyclePoolReward x 1e18 / globalActiveShares
yourReward = yourActiveShares x payoutPerShare / 1e18
Your payout depends on the shares you held when the cycle was triggered, not when you claim.

Claiming

Staker Payouts

Claim all unclaimed ETH from all four cycles in a single transaction.

Burn Pool Payouts

Claim burn pool ETH rewards separately (28-day cycle only).
You don’t need to claim every cycle. Rewards accumulate and you can claim everything at once whenever you’re ready.

Incentive Fees

Both distributeETH() and triggerPayouts() pay the caller a 0.33% incentive fee. This creates a natural incentive for bots and users to keep the payout system running.
triggerPayouts() will automatically call distributeETH() first if there are undistributed fees, so you only need to call one function.

Timing

  • Payouts accumulate over time. If no one triggers them, the pools grow larger
  • Multiple cycles can be triggered in a single call
  • If a cycle’s maturity day is missed, it triggers on the next call
  • New stakers are only eligible for payouts triggered after their stake is created