Stratax Contracts

First Flight #57
Beginner FriendlyDeFi
100 EXP
View results
Submission Details
Impact: low
Likelihood: low
Invalid

Unused Interface Leads to ABI Drift Risk

Unused Interface Leads to ABI Drift Risk

Description:
The repository defines an IStratax interface that specifies the expected external API, events, and structs of the protocol, but the main implementation:

@> contract Stratax is Initializable {

does not inherit from nor explicitly implement IStratax.

As a result:

  • The compiler does not enforce that Stratax matches the declared interface.

  • Function signatures, return values, or visibility may unintentionally diverge.

  • Events defined in the interface may be missing or inconsistently emitted.

  • Future upgrades can silently break integrations without compilation errors.

Interfaces in Solidity serve as a compile-time contract. Not using them removes this safety layer and creates a risk of ABI drift between the documented API (IStratax) and the actual deployed implementation.

Impact:
This is primarily a maintainability and integration risk:

  • Integrators relying on IStratax may interact with a contract that does not fully conform to it.

  • Refactors can introduce breaking changes without being detected during compilation.

  • Audits and tooling cannot rely on the interface as the source of truth.

  • Event mismatches may break off-chain indexers or monitoring systems.

No immediate loss of funds is caused, but the pattern increases the likelihood of future integration or upgrade errors.

Recommended Mitigation:
Explicitly bind the implementation to the interface:

+ contract Stratax is Initializable, IStratax {
- contract Stratax is Initializable {

This ensures the compiler enforces:

  • Full implementation of all required functions

  • Correct signatures and visibility

  • ABI consistency with the documented specification

If certain functions are intentionally excluded, the interface should be updated to reflect the true external surface instead of remaining unused.

Updates

Lead Judging Commences

izuman Lead Judge 16 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
Assigned finding tags:

Interface discrepancy

Support

FAQs

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

Give us feedback!