The protocol specification states that players must send enough ETH to match or exceed the current claimFee
.
However, when player activity is high, most players cannot precisely predict the exact claimFee
required at the time of their transaction.
As a result, during simultaneous participation between well-funded and less-funded players, those with limited funds may fail to claim the throne due to underpaying, even by a small margin.
Impact:
Well-funded players may feel compelled to consistently overpay significantly to ensure their transaction succeeds, leading to unnecessary capital expenditure.
Less-funded players face a higher risk of failure, as they cannot afford to overpay and are more sensitive to exact fee requirements.
This design unfairly disadvantages players with limited resources and may discourage participation, undermining the game's accessibility and fairness.
This verification assumes the claimThrone
function has already fixed the following two issues:
Correct initial check: require(msg.sender != currentKing, "Game: You are already the king. No need to re-claim.");
Proper handling of the previous king's reward: uint256 previousKingPayout = (sentAmount * previousKngFeePercentage) / 100;
Admin deploys the contract.
Player player_rich_1
sends 0.1 ether
and successfully calls claimThrone
.
Player player_rich_2
sends 0.105 ether
and successfully calls claimThrone
.
Players player_rich_3
and player_pool_1
attempt to claim simultaneously.
Player player_rich_3
sends 0.155 ether
and successfully claims the throne.
Player player_pool_1
sends 0.115 ether
, which is below the current claimFee
, and the call reverts.
Implement a mechanism to refund excess ETH sent by the player. This allows players to safely send more than the required fee without financial penalty:
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.