<!-- canonical: https://0xsimao.com/findings/mitosis-decimals-part-erc20-initialize -->

# decimals() is not part of the ERC20 standard and not all tokens may implement it as expected, which may cause initialize() to fail

Low/Info · Three Sigma · Cross-chain liquidity layer 1 · 25th June, 2024

Finding 3S-Mitosis-N14 of the Mitosis security review.

- Protocol: https://mitosis.org/
- Report: /reports/mitosis
- Source: https://cdn.sanity.io/files/qoqld077/production/b6b3bd7bb47407d99e76abb7c6dc615c1db5018e.pdf

---

### Description

BasicVault is initialized by calling asset::decimals(), but as it is not part of the standard,
it may not be implement the function in the expected way or at all.

### Recommendation

Nothing may be required if the tokens to be integrated all implement the decimals function
as is. Alternatively, decimals could be passed as argument.

### Status

Acknowledged

---

Related findings:

- [OstiumTradesUpKeep Triggers Automation for Pending Orders Expected to Fail](https://0xsimao.com/findings/ostium-trades-triggers-pending-expected): Ostium
- [Throughout code base, implement using SafeERC20 for IERC20 for better readability](https://0xsimao.com/findings/fuji-finance-erc20-ierc20-better-readability): Fuji Finance
- [Pausable or Blacklist tokens may cause liquidations to fail](https://0xsimao.com/findings/nerite-pausable-blacklist-liquidations-fail): Nerite
- [Erc20Utils::safeTransferFrom() assumes the tokens are transferred to this, which may not be the case](https://0xsimao.com/findings/districtone-erc20-utils-transfer-transferred): DistrictOne
