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 about 1 month ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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