Skip to content

Commit 73e2ba1

Browse files
authored
Merge pull request #329 from Instadapp/update-erc4626
Update ERC4626
2 parents ca7879d + 9175ffb commit 73e2ba1

File tree

5 files changed

+318
-166
lines changed

5 files changed

+318
-166
lines changed

contracts/mainnet/connectors/basic-ERC4626/events.sol

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ contract Events {
55
event LogDeposit(
66
address indexed token,
77
uint256 underlyingAmt,
8-
uint256 minSharesPerToken,
98
uint256 sharesReceieved,
109
uint256 getId,
1110
uint256 setId
@@ -14,16 +13,14 @@ contract Events {
1413
event LogMint(
1514
address indexed token,
1615
uint256 shareAmt,
17-
uint256 maxTokenPerShares,
18-
uint256 tokensDeducted,
16+
uint256 tokensDeposited,
1917
uint256 getId,
2018
uint256 setId
2119
);
2220

2321
event LogWithdraw(
2422
address indexed token,
2523
uint256 underlyingAmt,
26-
uint256 maxSharesPerToken,
2724
uint256 sharedBurned,
2825
address indexed to,
2926
uint256 getId,
@@ -33,7 +30,6 @@ contract Events {
3330
event LogRedeem(
3431
address indexed token,
3532
uint256 shareAmt,
36-
uint256 minTokenPerShares,
3733
uint256 underlyingAmtReceieved,
3834
address to,
3935
uint256 getId,

contracts/mainnet/connectors/basic-ERC4626/main.sol

Lines changed: 19 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
pragma solidity ^0.7.0;
33

44
/**
5-
* @title Basic D.
5+
* @title Basic D V2.
66
* @dev Deposit, Mint, Withdraw, & Redeem from ERC4626 DSA.
77
*/
88

@@ -14,19 +14,18 @@ import { Basic } from "../../common/basic.sol";
1414
import { Events } from "./events.sol";
1515

1616
abstract contract BasicConnector is Events, DSMath, Basic {
17+
1718
/**
1819
* @dev Deposit underlying asset to ERC4626 Vault.
1920
* @notice Mints vault shares by depositing exactly amount of underlying assets
2021
* @param vaultToken ERC4626 Token address.
2122
* @param underlyingAmt The amount of the underlying asset to deposit. (For max: `uint256(-1)`)
22-
* @param minSharesPerToken The min share rate of deposit. Should always be in 18 decimals.
2323
* @param getId ID to retrieve amt.
2424
* @param setId ID stores the amount of tokens deposited.
25-
*/
25+
*/
2626
function deposit(
2727
address vaultToken,
2828
uint256 underlyingAmt,
29-
uint256 minSharesPerToken,
3029
uint256 getId,
3130
uint256 setId
3231
) public returns (string memory _eventName, bytes memory _eventParam) {
@@ -41,31 +40,18 @@ abstract contract BasicConnector is Events, DSMath, Basic {
4140
? _underlyingTokenContract.balanceOf(address(this))
4241
: _underlyingAmt;
4342

44-
// Returns final amount in token decimals.
45-
uint256 _minShares = wmul(minSharesPerToken, _underlyingAmt);
46-
47-
// Initial share balance
48-
uint256 _initialVaultBal = vaultTokenContract.balanceOf(address(this));
49-
5043
approve(_underlyingTokenContract, vaultToken, _underlyingAmt);
5144

5245
// Deposit tokens for shares
53-
vaultTokenContract.deposit(_underlyingAmt, address(this));
54-
55-
uint256 _sharesReceieved = sub(
56-
vaultTokenContract.balanceOf(address(this)),
57-
_initialVaultBal
58-
);
59-
60-
require(_minShares <= _sharesReceieved, "Less shares received");
46+
uint256 _sharesReceieved =
47+
vaultTokenContract.deposit(_underlyingAmt, address(this));
6148

6249
setUint(setId, _sharesReceieved);
6350

64-
_eventName = "LogDeposit(address,uint256,uint256,uint256,uint256,uint256)";
51+
_eventName = "LogDeposit(address,uint256,uint256,uint256,uint256)";
6552
_eventParam = abi.encode(
6653
vaultToken,
6754
_underlyingAmt,
68-
minSharesPerToken,
6955
_sharesReceieved,
7056
getId,
7157
setId
@@ -77,14 +63,12 @@ abstract contract BasicConnector is Events, DSMath, Basic {
7763
* @notice Mints vault shares by minting exactly amount of underlying assets
7864
* @param vaultToken ERC4626 Token address.
7965
* @param shareAmt The amount of the share to mint. (For max: `uint256(-1)`)
80-
* @param maxTokenPerShares The max underyling token rate of mint. Always in 18 decimals.
8166
* @param getId ID to retrieve amt.
8267
* @param setId ID stores the amount of tokens minted.
8368
*/
8469
function mint(
8570
address vaultToken,
8671
uint256 shareAmt,
87-
uint256 maxTokenPerShares,
8872
uint256 getId,
8973
uint256 setId
9074
) public returns (string memory _eventName, bytes memory _eventParam) {
@@ -95,41 +79,23 @@ abstract contract BasicConnector is Events, DSMath, Basic {
9579
vaultTokenContract.asset()
9680
);
9781

98-
_shareAmt = _shareAmt == uint256(-1)
99-
? vaultTokenContract.balanceOf(address(this))
100-
: _shareAmt;
101-
102-
// Returns final amount in token decimals.
103-
uint256 _maxTokens = wmul(maxTokenPerShares, _shareAmt);
104-
10582
uint256 _underlyingTokenAmount = vaultTokenContract.previewMint(
10683
_shareAmt
10784
);
10885

109-
uint256 _initalUnderlyingBal = underlyingTokenContract.balanceOf(
110-
address(this)
111-
);
112-
11386
approve(underlyingTokenContract, vaultToken, _underlyingTokenAmount);
11487

11588
// Mint shares for tokens
116-
vaultTokenContract.mint(_shareAmt, address(this));
89+
uint256 _tokensDeposited =
90+
vaultTokenContract.mint(_shareAmt, address(this));
11791

118-
uint256 _tokensDeducted = sub(
119-
_initalUnderlyingBal,
120-
underlyingTokenContract.balanceOf(address(this))
121-
);
122-
123-
require(_maxTokens >= _tokensDeducted, "maxTokenPerShares-exceeds");
124-
125-
setUint(setId, _shareAmt);
92+
setUint(setId, _tokensDeposited);
12693

127-
_eventName = "LogMint(address,uint256,uint256,uint256,uint256,uint256)";
94+
_eventName = "LogMint(address,uint256,uint256,uint256,uint256)";
12895
_eventParam = abi.encode(
12996
vaultToken,
13097
_shareAmt,
131-
maxTokenPerShares,
132-
_tokensDeducted,
98+
_tokensDeposited,
13399
getId,
134100
setId
135101
);
@@ -140,15 +106,13 @@ abstract contract BasicConnector is Events, DSMath, Basic {
140106
* @notice Withdraw vault shares with exactly amount of underlying assets
141107
* @param vaultToken ERC4626 Token address.
142108
* @param underlyingAmt The amount of the token to withdraw. (For max: `uint256(-1)`)
143-
* @param maxSharesPerToken The max share rate of withdrawn amount. Always send in 18 decimals.
144109
* @param to The address of receiver.
145110
* @param getId ID to retrieve amt.
146111
* @param setId ID stores the amount of tokens withdrawn.
147112
*/
148113
function withdraw(
149114
address vaultToken,
150115
uint256 underlyingAmt,
151-
uint256 maxSharesPerToken,
152116
address payable to,
153117
uint256 getId,
154118
uint256 setId
@@ -164,25 +128,16 @@ abstract contract BasicConnector is Events, DSMath, Basic {
164128
? underlyingTokenContract.balanceOf(address(this))
165129
: _underlyingAmt;
166130

167-
// Returns final amount in token decimals.
168-
uint256 _maxShares = wmul(maxSharesPerToken, _underlyingAmt);
169-
170-
uint256 _initialVaultBal = vaultTokenContract.balanceOf(to);
171-
172131
// Withdraw tokens for shares
173-
vaultTokenContract.withdraw(_underlyingAmt, to, address(this));
174-
175-
uint256 _sharesBurned = sub(_initialVaultBal, vaultTokenContract.balanceOf(to));
176-
177-
require(_maxShares >= _sharesBurned, "maxShares-exceeds");
132+
uint256 _sharesBurned =
133+
vaultTokenContract.withdraw(_underlyingAmt, to, address(this));
178134

179135
setUint(setId, _underlyingAmt);
180136

181-
_eventName = "LogWithdraw(address,uint256,uint256,uint256,address,uint256,uint256)";
137+
_eventName = "LogWithdraw(address,uint256,uint256,address,uint256,uint256)";
182138
_eventParam = abi.encode(
183139
vaultToken,
184140
_underlyingAmt,
185-
maxSharesPerToken,
186141
_sharesBurned,
187142
to,
188143
getId,
@@ -195,7 +150,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
195150
* @notice Redeem vault shares with exactly amount of underlying assets
196151
* @param vaultToken ERC4626 Token address.
197152
* @param shareAmt The amount of the token to redeem. (For max: `uint256(-1)`)
198-
* @param minTokenPerShares The min underlying token rate of withdraw. Always in 18 decimals.
199153
* @param to The address of receiver.
200154
* @param getId ID to retrieve amt.
201155
* @param setId ID stores the amount of tokens redeem.
@@ -204,7 +158,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
204158
function redeem(
205159
address vaultToken,
206160
uint256 shareAmt,
207-
uint256 minTokenPerShares,
208161
address payable to,
209162
uint256 getId,
210163
uint256 setId
@@ -220,28 +173,16 @@ abstract contract BasicConnector is Events, DSMath, Basic {
220173
? vaultTokenContract.balanceOf(address(this))
221174
: _shareAmt;
222175

223-
// Returns final amount in token decimals.
224-
uint256 _minUnderlyingAmt = wmul(minTokenPerShares, _shareAmt);
225-
226-
uint256 _initalUnderlyingBal = underlyingTokenContract.balanceOf(to);
227-
228176
// Redeem tokens for shares
229-
vaultTokenContract.redeem(_shareAmt, to, address(this));
230-
231-
uint256 _underlyingAmtReceieved = sub(
232-
underlyingTokenContract.balanceOf(to),
233-
_initalUnderlyingBal
234-
);
235-
236-
require(_minUnderlyingAmt <= _underlyingAmtReceieved, "_minUnderlyingAmt-exceeds");
177+
uint256 _underlyingAmtReceieved =
178+
vaultTokenContract.redeem(_shareAmt, to, address(this));
237179

238180
setUint(setId, _shareAmt);
239181

240-
_eventName = "LogRedeem(address,uint256,uint256,uint256,address,uint256,uint256)";
182+
_eventName = "LogRedeem(address,uint256,uint256,address,uint256,uint256)";
241183
_eventParam = abi.encode(
242184
vaultToken,
243185
_shareAmt,
244-
minTokenPerShares,
245186
_underlyingAmtReceieved,
246187
to,
247188
getId,
@@ -250,6 +191,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
250191
}
251192
}
252193

253-
contract ConnectV2BasicERC4626 is BasicConnector {
254-
string public constant name = "BASIC-ERC4626-v1.0";
194+
contract ConnectV2BasicERC4626V2 is BasicConnector {
195+
string public constant name = "BASIC-ERC4626-v2.0";
255196
}

contracts/polygon/connectors/basic-ERC4626/events.sol

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ contract Events {
55
event LogDeposit(
66
address indexed token,
77
uint256 underlyingAmt,
8-
uint256 minSharesPerToken,
98
uint256 sharesReceieved,
109
uint256 getId,
1110
uint256 setId
@@ -14,16 +13,14 @@ contract Events {
1413
event LogMint(
1514
address indexed token,
1615
uint256 shareAmt,
17-
uint256 maxTokenPerShares,
18-
uint256 tokensDeducted,
16+
uint256 tokensDeposited,
1917
uint256 getId,
2018
uint256 setId
2119
);
2220

2321
event LogWithdraw(
2422
address indexed token,
2523
uint256 underlyingAmt,
26-
uint256 maxSharesPerToken,
2724
uint256 sharedBurned,
2825
address indexed to,
2926
uint256 getId,
@@ -33,7 +30,6 @@ contract Events {
3330
event LogRedeem(
3431
address indexed token,
3532
uint256 shareAmt,
36-
uint256 minTokenPerShares,
3733
uint256 underlyingAmtReceieved,
3834
address to,
3935
uint256 getId,

0 commit comments

Comments
 (0)