<!-- canonical: https://0xsimao.com/findings/m-0-don-implement-entire-interface -->

# Some contracts don't implement their entire interface

Low/Info · Three Sigma · Stablecoin framework · 8th January, 2024

Finding 3S-M^0-N02 of the M^0 Minter Gateway security review.

- Protocol: https://www.m0.org/
- Report: /reports/m-0
- Codebase: https://github.com/0xsimao/ttg/tree/a8127901fa1f24a2e821cf4d9854a1aa6ac8088c
- Source: https://cdn.sanity.io/files/qoqld077/production/1cdafafad874aba76e062ad8c216c98338c096db.pdf

---

### Description

There are some contracts that don't fully implement the interface with the same name. For
example, [IERC5805](https://github.com/MZero-Labs/ttg/blob/a8127901fa1f24a2e821cf4d9854a1aa6ac8088c/src/abstract/interfaces/IERC5805.sol) defines functions such as delegates, getPastVotes and getVotes.
These functions are not implemented in ERC5805, only in EpochBasedVoteToken.

### Recommendation

Implement all interface functions in the contract with the same name, even if said
implementation remains empty and virtual.

### Status

Acknowledged

---

Related findings:

- [_crossTransfer(...) reverts for smart contracts that don't share the same address on different chains](https://0xsimao.com/findings/fuji-finance-cross-transfer-reverts-share): Fuji Finance
- [Contracts should inherit their interfaces](https://0xsimao.com/findings/nftperp-i-contracts-inherit-their-interfaces): Nftperp Exchange
