SafeERC20Namer.tokenDecimals returns zero in case the decimals is not implemented by the provided token address:
https://github.com/yieldprotocol/yield-utils-v2/blob/dbeb85ac94befc477bf8cdff9f178fdf331eb83d/src/token/SafeERC20Namer.sol#L99-102
However, this is not necessary, because "0" is the implicit default value for uint8. You might be able to save a little bit of gas if you refactor the code like this:
- function tokenDecimals(address token) public view returns (uint8) {
+ function tokenDecimals(address token) public view returns (uint8 decimals) {
(bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(IERC20Metadata.decimals.selector));
- return success && data.length == 32 ? abi.decode(data, (uint8)) : 0;
+ if (success && data.length == 32) {
+ decimals = abi.decode(data, (uint8));
+ }
SafeERC20Namer.tokenDecimalsreturns zero in case thedecimalsis not implemented by the providedtokenaddress:https://github.com/yieldprotocol/yield-utils-v2/blob/dbeb85ac94befc477bf8cdff9f178fdf331eb83d/src/token/SafeERC20Namer.sol#L99-102
However, this is not necessary, because "0" is the implicit default value for
uint8. You might be able to save a little bit of gas if you refactor the code like this: