The round

The 3% fee and the burn

3% of every settled pot is the fee. It buys $RISE through Uniswap v4 and the keeper burns what it bought.

The flow

settle()3% to the keeperOwed USDGfees − already burnedUniswap v4USDG → ETH → $RISEBurnto 0x…dEaD
One burn batch: the owed fees are swapped, then the whole $RISE balance bought is burned.

When it runs

The keeper runs every five minutes. Once $RISE exists and the fees not yet burned reach 1 USDG, it swaps them to ETH on the USDG/ETH pool and the ETH to $RISE on the $RISE pool, both through the Uniswap v4 Universal Router with 2% slippage on the quote. It sends every $RISE it bought to 0x000000000000000000000000000000000000dEaD, then calls logBurn(usdgIn, riseBurned, swapTx, burnTx) so the burn sits on the rounds contract next to the fees.

Until $RISE exists, the fee accrues in the keeper's USDG balance and every RoundSettled event carries its amount, so the first burn covers every round settled until then.

Checking it

The contract keeps both totals: feesTotal() minus burnedUsdg() is what the next burn owes. The home page and /api/v1/rounds show the same figures as fees_accrued and burned_usdg.