2
2
pragma solidity ^ 0.7.0 ;
3
3
4
4
/**
5
- * @title Basic D.
5
+ * @title Basic D V2 .
6
6
* @dev Deposit, Mint, Withdraw, & Redeem from ERC4626 DSA.
7
7
*/
8
8
@@ -14,19 +14,18 @@ import { Basic } from "../../common/basic.sol";
14
14
import { Events } from "./events.sol " ;
15
15
16
16
abstract contract BasicConnector is Events , DSMath , Basic {
17
+
17
18
/**
18
19
* @dev Deposit underlying asset to ERC4626 Vault.
19
20
* @notice Mints vault shares by depositing exactly amount of underlying assets
20
21
* @param vaultToken ERC4626 Token address.
21
22
* @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.
23
23
* @param getId ID to retrieve amt.
24
24
* @param setId ID stores the amount of tokens deposited.
25
- */
25
+ */
26
26
function deposit (
27
27
address vaultToken ,
28
28
uint256 underlyingAmt ,
29
- uint256 minSharesPerToken ,
30
29
uint256 getId ,
31
30
uint256 setId
32
31
) public returns (string memory _eventName , bytes memory _eventParam ) {
@@ -41,31 +40,18 @@ abstract contract BasicConnector is Events, DSMath, Basic {
41
40
? _underlyingTokenContract.balanceOf (address (this ))
42
41
: _underlyingAmt;
43
42
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
-
50
43
approve (_underlyingTokenContract, vaultToken, _underlyingAmt);
51
44
52
45
// 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 ));
61
48
62
49
setUint (setId, _sharesReceieved);
63
50
64
- _eventName = "LogDeposit(address,uint256,uint256,uint256,uint256,uint256 ) " ;
51
+ _eventName = "LogDeposit(address,uint256,uint256,uint256,uint256) " ;
65
52
_eventParam = abi.encode (
66
53
vaultToken,
67
54
_underlyingAmt,
68
- minSharesPerToken,
69
55
_sharesReceieved,
70
56
getId,
71
57
setId
@@ -77,14 +63,12 @@ abstract contract BasicConnector is Events, DSMath, Basic {
77
63
* @notice Mints vault shares by minting exactly amount of underlying assets
78
64
* @param vaultToken ERC4626 Token address.
79
65
* @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.
81
66
* @param getId ID to retrieve amt.
82
67
* @param setId ID stores the amount of tokens minted.
83
68
*/
84
69
function mint (
85
70
address vaultToken ,
86
71
uint256 shareAmt ,
87
- uint256 maxTokenPerShares ,
88
72
uint256 getId ,
89
73
uint256 setId
90
74
) public returns (string memory _eventName , bytes memory _eventParam ) {
@@ -95,41 +79,23 @@ abstract contract BasicConnector is Events, DSMath, Basic {
95
79
vaultTokenContract.asset ()
96
80
);
97
81
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
-
105
82
uint256 _underlyingTokenAmount = vaultTokenContract.previewMint (
106
83
_shareAmt
107
84
);
108
85
109
- uint256 _initalUnderlyingBal = underlyingTokenContract.balanceOf (
110
- address (this )
111
- );
112
-
113
86
approve (underlyingTokenContract, vaultToken, _underlyingTokenAmount);
114
87
115
88
// Mint shares for tokens
116
- vaultTokenContract.mint (_shareAmt, address (this ));
89
+ uint256 _tokensDeposited =
90
+ vaultTokenContract.mint (_shareAmt, address (this ));
117
91
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);
126
93
127
- _eventName = "LogMint(address,uint256,uint256,uint256,uint256,uint256 ) " ;
94
+ _eventName = "LogMint(address,uint256,uint256,uint256,uint256) " ;
128
95
_eventParam = abi.encode (
129
96
vaultToken,
130
97
_shareAmt,
131
- maxTokenPerShares,
132
- _tokensDeducted,
98
+ _tokensDeposited,
133
99
getId,
134
100
setId
135
101
);
@@ -140,15 +106,13 @@ abstract contract BasicConnector is Events, DSMath, Basic {
140
106
* @notice Withdraw vault shares with exactly amount of underlying assets
141
107
* @param vaultToken ERC4626 Token address.
142
108
* @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.
144
109
* @param to The address of receiver.
145
110
* @param getId ID to retrieve amt.
146
111
* @param setId ID stores the amount of tokens withdrawn.
147
112
*/
148
113
function withdraw (
149
114
address vaultToken ,
150
115
uint256 underlyingAmt ,
151
- uint256 maxSharesPerToken ,
152
116
address payable to ,
153
117
uint256 getId ,
154
118
uint256 setId
@@ -164,25 +128,16 @@ abstract contract BasicConnector is Events, DSMath, Basic {
164
128
? underlyingTokenContract.balanceOf (address (this ))
165
129
: _underlyingAmt;
166
130
167
- // Returns final amount in token decimals.
168
- uint256 _maxShares = wmul (maxSharesPerToken, _underlyingAmt);
169
-
170
- uint256 _initialVaultBal = vaultTokenContract.balanceOf (to);
171
-
172
131
// 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 ));
178
134
179
135
setUint (setId, _underlyingAmt);
180
136
181
- _eventName = "LogWithdraw(address,uint256,uint256,uint256, address,uint256,uint256) " ;
137
+ _eventName = "LogWithdraw(address,uint256,uint256,address,uint256,uint256) " ;
182
138
_eventParam = abi.encode (
183
139
vaultToken,
184
140
_underlyingAmt,
185
- maxSharesPerToken,
186
141
_sharesBurned,
187
142
to,
188
143
getId,
@@ -195,7 +150,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
195
150
* @notice Redeem vault shares with exactly amount of underlying assets
196
151
* @param vaultToken ERC4626 Token address.
197
152
* @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.
199
153
* @param to The address of receiver.
200
154
* @param getId ID to retrieve amt.
201
155
* @param setId ID stores the amount of tokens redeem.
@@ -204,7 +158,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
204
158
function redeem (
205
159
address vaultToken ,
206
160
uint256 shareAmt ,
207
- uint256 minTokenPerShares ,
208
161
address payable to ,
209
162
uint256 getId ,
210
163
uint256 setId
@@ -220,28 +173,16 @@ abstract contract BasicConnector is Events, DSMath, Basic {
220
173
? vaultTokenContract.balanceOf (address (this ))
221
174
: _shareAmt;
222
175
223
- // Returns final amount in token decimals.
224
- uint256 _minUnderlyingAmt = wmul (minTokenPerShares, _shareAmt);
225
-
226
- uint256 _initalUnderlyingBal = underlyingTokenContract.balanceOf (to);
227
-
228
176
// 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 ));
237
179
238
180
setUint (setId, _shareAmt);
239
181
240
- _eventName = "LogRedeem(address,uint256,uint256,uint256, address,uint256,uint256) " ;
182
+ _eventName = "LogRedeem(address,uint256,uint256,address,uint256,uint256) " ;
241
183
_eventParam = abi.encode (
242
184
vaultToken,
243
185
_shareAmt,
244
- minTokenPerShares,
245
186
_underlyingAmtReceieved,
246
187
to,
247
188
getId,
@@ -250,6 +191,6 @@ abstract contract BasicConnector is Events, DSMath, Basic {
250
191
}
251
192
}
252
193
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 " ;
255
196
}
0 commit comments