Last Man Standing

First Flight #45
Beginner FriendlyFoundrySolidity
100 EXP
View results
Submission Details
Severity: medium
Valid

[M-2]Missing payout to previous player breaks documented incentive model

Root + Impact

[M-2]Missing payout to previous player breaks documented incentive model

Description

The documentation states that when a player joins and calls claim(), part of the claimFee is sent to
the previous player. However, the smart contract does not contain any logic to actually perform this
payout. As a result, previous players receive nothing, which directly contradicts the intended reward
model and creates an unfair loss.

Impact:

This breaks the game’s incentive mechanism. Players are led to believe they will receive a portion of the claimFee when someone else joins after them, but in practice, they receive nothing. This creates:

1.An unfair economic loss for participants.

2.Broken trust and reduced participation due to false incentives.

3.A game model collapse if no one receives any reward beyond the chance to be the winner.

Proof of Concept

1.Player A joins by calling claim() and pays the claimFee.
2.Player B joins afterward, calling claim() and also pays the claimFee.
3.Expected: Part of Player B’s fee goes to Player A (as per docs).
4.Actual: There is no transfer or payout to Player A in code.
5.Player A ends up with 0 reward, despite the documented claim.

Recommended Mitigation

Add logic in the claim() function to transfer the specified share of the claimFee to the previous claimer, e.g.:

if (lastClaimer != address(0)) {
payable(lastClaimer).transfer(rewardAmount);
}

Ensure proper validation and state updates to prevent abuse.

Alternatively, if the reward is intentionally removed, update the documentation to reflect the actual behavior — no fee sharing — to avoid misleading players.

Updates

Appeal created

inallhonesty Lead Judge 15 days ago
Submission Judgement Published
Validated
Assigned finding tags:

Missing Previous King Payout Functionality

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.