Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4daab31
AccessControl
RenanSouza2 Jun 5, 2023
ebf635c
AccessControlEnumerable
RenanSouza2 Jun 5, 2023
7a0466f
Governor
RenanSouza2 Jun 5, 2023
f377dd4
IGovernor
RenanSouza2 Jun 5, 2023
6b50b81
TimelockController
RenanSouza2 Jun 5, 2023
bec26fc
Votes
RenanSouza2 Jun 5, 2023
17401ed
ERC1271WalletMock
RenanSouza2 Jun 5, 2023
8db131c
ERC3156FlashBorrowerMock
RenanSouza2 Jun 5, 2023
5d29695
ERC20VotesLegacyMock
RenanSouza2 Jun 5, 2023
75cb14f
ERC721ReceiverMock
RenanSouza2 Jun 5, 2023
92dad67
ERC1155ReceiverMock
RenanSouza2 Jun 5, 2023
f20a8d1
UpgradeableBeacon
RenanSouza2 Jun 5, 2023
86519c3
UUPSUpgradeable
RenanSouza2 Jun 5, 2023
88e9853
ERC2981
RenanSouza2 Jun 5, 2023
cdf8b1d
ERC1155
RenanSouza2 Jun 5, 2023
4326964
ERC20
RenanSouza2 Jun 5, 2023
320a0c2
ERC20FlashMint
RenanSouza2 Jun 5, 2023
5da5221
ERC20Permit
RenanSouza2 Jun 5, 2023
9fb85db
ERC4626
RenanSouza2 Jun 5, 2023
8cc7431
ERC721
RenanSouza2 Jun 5, 2023
ff241a8
ERC721Enumerable
RenanSouza2 Jun 5, 2023
da12258
ERC721Wrapper
RenanSouza2 Jun 5, 2023
6ee337d
ERC721Holder
RenanSouza2 Jun 5, 2023
3cdda53
EIP712
RenanSouza2 Jun 5, 2023
307c154
EIP165
RenanSouza2 Jun 5, 2023
1372aeb
Recover comments
RenanSouza2 Jun 5, 2023
ac0a4b2
Add changeset
RenanSouza2 Jun 5, 2023
13b211b
Fix changeset
RenanSouza2 Jun 6, 2023
e6d8ee1
Update .changeset/violet-dancers-cough.md
ernestognw Jun 6, 2023
52229bf
Merge remote-tracking branch 'upstream/master' into remove-override-i…
RenanSouza2 Jun 6, 2023
6ab19df
Merge branch 'master' into remove-override-interface-implementations
RenanSouza2 Jun 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ERC4626
  • Loading branch information
RenanSouza2 committed Jun 5, 2023
commit 9fb85dbdfd07964fa03b4e8bf7fbecffbec45e77
34 changes: 17 additions & 17 deletions contracts/token/ERC20/extensions/ERC4626.sol
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import "../../../utils/math/Math.sol";
* The drawback of this approach is that the virtual shares do capture (a very small) part of the value being accrued
* to the vault. Also, if the vault experiences losses, the users try to exit the vault, the virtual shares and assets
* will cause the first user to exit to experience reduced losses in detriment to the last users that will experience
* bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to override the
* bigger losses. Developers willing to revert back to the pre-v4.9 behavior just need to the
* `_convertToShares` and `_convertToAssets` functions.
*
* To learn more, check out our xref:ROOT:erc4626.adoc[ERC-4626 guide].
Expand Down Expand Up @@ -90,67 +90,67 @@ abstract contract ERC4626 is ERC20, IERC4626 {
}

/** @dev See {IERC4626-asset}. */
function asset() public view virtual override returns (address) {
function asset() public view virtual returns (address) {
return address(_asset);
}

/** @dev See {IERC4626-totalAssets}. */
function totalAssets() public view virtual override returns (uint256) {
function totalAssets() public view virtual returns (uint256) {
return _asset.balanceOf(address(this));
}

/** @dev See {IERC4626-convertToShares}. */
function convertToShares(uint256 assets) public view virtual override returns (uint256) {
function convertToShares(uint256 assets) public view virtual returns (uint256) {
return _convertToShares(assets, Math.Rounding.Down);
}

/** @dev See {IERC4626-convertToAssets}. */
function convertToAssets(uint256 shares) public view virtual override returns (uint256) {
function convertToAssets(uint256 shares) public view virtual returns (uint256) {
return _convertToAssets(shares, Math.Rounding.Down);
}

/** @dev See {IERC4626-maxDeposit}. */
function maxDeposit(address) public view virtual override returns (uint256) {
function maxDeposit(address) public view virtual returns (uint256) {
return type(uint256).max;
}

/** @dev See {IERC4626-maxMint}. */
function maxMint(address) public view virtual override returns (uint256) {
function maxMint(address) public view virtual returns (uint256) {
return type(uint256).max;
}

/** @dev See {IERC4626-maxWithdraw}. */
function maxWithdraw(address owner) public view virtual override returns (uint256) {
function maxWithdraw(address owner) public view virtual returns (uint256) {
return _convertToAssets(balanceOf(owner), Math.Rounding.Down);
}

/** @dev See {IERC4626-maxRedeem}. */
function maxRedeem(address owner) public view virtual override returns (uint256) {
function maxRedeem(address owner) public view virtual returns (uint256) {
return balanceOf(owner);
}

/** @dev See {IERC4626-previewDeposit}. */
function previewDeposit(uint256 assets) public view virtual override returns (uint256) {
function previewDeposit(uint256 assets) public view virtual returns (uint256) {
return _convertToShares(assets, Math.Rounding.Down);
}

/** @dev See {IERC4626-previewMint}. */
function previewMint(uint256 shares) public view virtual override returns (uint256) {
function previewMint(uint256 shares) public view virtual returns (uint256) {
return _convertToAssets(shares, Math.Rounding.Up);
}

/** @dev See {IERC4626-previewWithdraw}. */
function previewWithdraw(uint256 assets) public view virtual override returns (uint256) {
function previewWithdraw(uint256 assets) public view virtual returns (uint256) {
return _convertToShares(assets, Math.Rounding.Up);
}

/** @dev See {IERC4626-previewRedeem}. */
function previewRedeem(uint256 shares) public view virtual override returns (uint256) {
function previewRedeem(uint256 shares) public view virtual returns (uint256) {
return _convertToAssets(shares, Math.Rounding.Down);
}

/** @dev See {IERC4626-deposit}. */
function deposit(uint256 assets, address receiver) public virtual override returns (uint256) {
function deposit(uint256 assets, address receiver) public virtual returns (uint256) {
require(assets <= maxDeposit(receiver), "ERC4626: deposit more than max");

uint256 shares = previewDeposit(assets);
Expand All @@ -164,7 +164,7 @@ abstract contract ERC4626 is ERC20, IERC4626 {
* As opposed to {deposit}, minting is allowed even if the vault is in a state where the price of a share is zero.
* In this case, the shares will be minted without requiring any assets to be deposited.
*/
function mint(uint256 shares, address receiver) public virtual override returns (uint256) {
function mint(uint256 shares, address receiver) public virtual returns (uint256) {
require(shares <= maxMint(receiver), "ERC4626: mint more than max");

uint256 assets = previewMint(shares);
Expand All @@ -174,7 +174,7 @@ abstract contract ERC4626 is ERC20, IERC4626 {
}

/** @dev See {IERC4626-withdraw}. */
function withdraw(uint256 assets, address receiver, address owner) public virtual override returns (uint256) {
function withdraw(uint256 assets, address receiver, address owner) public virtual returns (uint256) {
require(assets <= maxWithdraw(owner), "ERC4626: withdraw more than max");

uint256 shares = previewWithdraw(assets);
Expand All @@ -184,7 +184,7 @@ abstract contract ERC4626 is ERC20, IERC4626 {
}

/** @dev See {IERC4626-redeem}. */
function redeem(uint256 shares, address receiver, address owner) public virtual override returns (uint256) {
function redeem(uint256 shares, address receiver, address owner) public virtual returns (uint256) {
require(shares <= maxRedeem(owner), "ERC4626: redeem more than max");

uint256 assets = previewRedeem(shares);
Expand Down