ContractAddressFunction
LootMining 0x860fD1…3D4a Lottery engine — startRound / settleRound / claim
$LOOT Token 0xbf89Ef…d22af Standard ERC-20 — holding it = mining power, no tax
LOOT/WETH LP Pool 0xf66163…4ad7 Excluded from mining power (see exclusions below)
Round Cooldown
4 hours
fixed interval — a new round can start once the pool has funds and cooldown has passed
Contract Type
Immutable
no proxy, no upgrade path — what's deployed is what runs forever
Mechanism — Step by Step
01 · SNAPSHOT

Keeper calls startRound(). The entire $LOOT pool balance locks as the prize. A future block (targetBlock) is committed for randomness.

02 · SETTLE

Once targetBlock passes, the Keeper submits a merkle root of holder balances (built off-chain from Transfer events) plus the committed blockhash to pick a winner.

03 · PAYOUT

Winner is paid automatically in the same transaction as settlement. If the transfer somehow fails, a fallback claim() function exists.

Randomness

Uses the blockhash of a committed future block (targetBlock), combined with the merkle root, hashed via keccak256, then modulo the total mining weight. No off-chain oracle, no Chainlink VRF — pure on-chain commit-reveal against Robinhood Chain block production.

Exclusions (don't count as mining power)
  • Zero address & burn address (0x…dEaD)
  • The $LOOT token contract itself
  • The LootMining contract itself
  • LOOT/WETH LP pool (LP position holders still count — only the pool contract is excluded)
Roles
Owner

Admin control only — can update cooldown, keeper address, and commit delay. Cannot touch the prize pool or pick winners.

Keeper

Separate wallet, runs an automated bot that calls startRound() and settleRound() on schedule. Cannot touch admin functions.