Inherit asset decimals in ERC4626 (#3639)
This commit is contained in:
@ -4,7 +4,6 @@ pragma solidity ^0.8.0;
|
||||
|
||||
import "../token/ERC20/extensions/ERC4626.sol";
|
||||
|
||||
// mock class using ERC20
|
||||
contract ERC4626Mock is ERC4626 {
|
||||
constructor(
|
||||
IERC20Metadata asset,
|
||||
@ -20,3 +19,42 @@ contract ERC4626Mock is ERC4626 {
|
||||
_burn(account, amount);
|
||||
}
|
||||
}
|
||||
|
||||
contract ERC4626DecimalMock is ERC4626Mock {
|
||||
using Math for uint256;
|
||||
|
||||
uint8 private immutable _decimals;
|
||||
|
||||
constructor(
|
||||
IERC20Metadata asset,
|
||||
string memory name,
|
||||
string memory symbol,
|
||||
uint8 decimalsOverride
|
||||
) ERC4626Mock(asset, name, symbol) {
|
||||
_decimals = decimalsOverride;
|
||||
}
|
||||
|
||||
function decimals() public view virtual override returns (uint8) {
|
||||
return _decimals;
|
||||
}
|
||||
|
||||
function _initialConvertToShares(uint256 assets, Math.Rounding rounding)
|
||||
internal
|
||||
view
|
||||
virtual
|
||||
override
|
||||
returns (uint256 shares)
|
||||
{
|
||||
return assets.mulDiv(10**decimals(), 10**super.decimals(), rounding);
|
||||
}
|
||||
|
||||
function _initialConvertToAssets(uint256 shares, Math.Rounding rounding)
|
||||
internal
|
||||
view
|
||||
virtual
|
||||
override
|
||||
returns (uint256 assets)
|
||||
{
|
||||
return shares.mulDiv(10**super.decimals(), 10**decimals(), rounding);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user