Holder list is read from the token's on-chain registry at a pinned block and its hash is committed on-chain — before any randomness exists.
The commit names a future drand round. The contract rejects rounds that already happened.
winner = ticket (randomness mod total tickets). Anyone can re-run the math from the snapshot and the beacon.
The pot pays the winner and the draw settles on-chain with a Winner event — the list above reads straight from it.