<!-- canonical: https://0xsimao.com/findings/m-0-ierc3009-interface-fully-conforming -->

# The IERC3009 interface is not fully conforming to the standard

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

Finding 3S-M^0-N17 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

The [IERC3009](https://github.com/MZero-Labs/common/blob/4a37119f2da946c6d8ad7b9a70dfdd219225115b/src/interfaces/IERC3009.sol) defines a token interface following the EIP3009 standard. The interface is not
fully conforming to the standard and it's missing the following mandatory view functions:
- TRANSFER_WITH_AUTHORIZATION_TYPEHASH
- RECEIVE_WITH_AUTHORIZATION_TYPEHASH
Because the interface is also adding the optional canceling functions from EIP3009, it
should also be defining the CANCEL_AUTHORIZATION_TYPEHASH view function.

### Recommendation

Though the [ERC3009](https://github.com/MZero-Labs/common/blob/4a37119f2da946c6d8ad7b9a70dfdd219225115b/src/ERC3009.sol) contract does implement these functions, it is still recommended
that the interface implements them as well.

### Status

Addressed in [#ab7366e](https://github.com/MZero-Labs/common/commit/ab7366e1616f397d4ac2f6abda7537e42894d8be).
