Beginner FriendlyGameFi
100 EXP
View results
Submission Details
Impact: medium
Likelihood: low
Invalid

M-03: Inefficient Claim Validation Logic

Root + Impact

Description

  • Claim validation should use efficient logic to check if a user has already claimed their pizza slice

  • The has_claimed_slice() function contains redundant conditional logic that can be simplified for better gas efficiency and code clarity

public fun has_claimed_slice(user_addr: address): bool acquires PizzaShop {
let shop = borrow_global<PizzaShop>(@pizza_drop);
@> if (simple_map::contains_key(&shop.claimed_slices, &user_addr)) {
@> true
@> } else {
@> false
@> }
}

Risk

Likelihood:

  • The redundant logic executes on every claim validation check

  • Unnecessary gas consumption occurs in every claim_slice() operation

Impact:

  • Increased gas costs for users claiming pizza slices

  • Reduced code readability and maintainability

Proof of Concept

// Demonstrate the redundant logic pattern
public fun demonstrate_redundancy(): bool {
let condition = simple_map::contains_key(&map, &key);
// Current inefficient pattern - unnecessary conditional
let result = if (condition) {
true
} else {
false
};
// This is logically equivalent to just: condition
// The if-else adds no value but consumes extra gas
result // Always equals the original condition
}

The current implementation uses an unnecessary if-else construct to return a boolean value that already exists. Since simple_map::contains_key() returns a boolean, wrapping it in a conditional that returns true or false is redundant and wastes gas on every validation call.

Recommended Mitigation

public fun has_claimed_slice(user_addr: address): bool acquires PizzaShop {
let shop = borrow_global<PizzaShop>(@pizza_drop);
- if (simple_map::contains_key(&shop.claimed_slices, &user_addr)) {
- true
- } else {
- false
- }
+ simple_map::contains_key(&shop.claimed_slices, &user_addr)
}

The optimized version directly returns the boolean result from simple_map::contains_key(). This eliminates unnecessary conditional logic, reduces gas consumption, and improves code clarity. The function behavior remains identical while being more efficient and readable.

Updates

Appeal created

bube Lead Judge 10 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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