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
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.