Stratax Contracts

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

Unused Interface Leads to ABI Drift Risk

Author Revealed upon completion

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.

Support

FAQs

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

Give us feedback!