The claimThrone()
function accepts any amount greater than or equal to claimFee
but provides no refund mechanism for overpayments. When users accidentally send more ETH than required, the entire excess amount is absorbed by the contract, with the platform owner receiving an inflated fee percentage and the remaining going to the pot. This creates an unfair situation where user mistakes permanently benefit the platform and future winners.
The issue stems from using the entire msg.value
instead of just the required claimFee
:
Key issues:
No check for msg.value == claimFee
No refund of excess amount (msg.value - claimFee)
Platform fee calculated on entire overpayment
User gains no advantage from overpaying
Likelihood: Medium - User errors happen regularly, especially with manual transactions or unfamiliar UIs.
Impact: Low - Only affects users who make mistakes. No protocol risk or exploitation vector.
Low severity because:
Self-inflicted loss requiring user error
No malicious exploitation possible
Doesn't affect game mechanics or other players
Platform owner unfairly benefits from user mistakes
This test demonstrates how overpayments result in permanent loss with no benefit to the user:
Real-world scenario:
Current claimFee
= 0.1 ETH
Sends 1 ETH instead of 0.1 ETH
Loses 0.9 ETH permanently with zero benefit
Require exact payment to prevent accidental overpayments:
This simple change prevents accidental overpayments, ensures fair platform fee collection
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.