Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Balancer Composable stable pool strategy #1839

Open
wants to merge 161 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 150 commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
21d28ff
initail commit
sparrowDom Jun 14, 2023
ca4b9c7
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Jun 29, 2023
bd17a59
intermediary commit
sparrowDom Jun 30, 2023
e218397
commit research files
sparrowDom Jul 3, 2023
e40539a
balancer booster abi
sparrowDom Jul 4, 2023
fddfc96
intermittent commit
sparrowDom Jul 5, 2023
4d61080
add base balancer contract that implements checkBalance functionality
sparrowDom Jul 11, 2023
c941766
add some additional initial integration
sparrowDom Jul 12, 2023
4e2a0ac
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Jul 12, 2023
a163e8f
intermittent commit
sparrowDom Jul 14, 2023
6322507
add deployment file
sparrowDom Jul 14, 2023
5150986
add fork test fixture
sparrowDom Jul 14, 2023
fa5838b
intermittent commit
sparrowDom Jul 18, 2023
74f1403
prettier
sparrowDom Jul 20, 2023
10b6fdc
add basic withdrawal / deposit functionality
sparrowDom Jul 21, 2023
807e8c4
correct the BPT calculation
sparrowDom Jul 21, 2023
8f16b4e
prettier + lint
sparrowDom Jul 23, 2023
1c782a5
simplify the BPT price calculation
sparrowDom Jul 23, 2023
faa7eb5
add read-only re-entrancy protection
sparrowDom Jul 23, 2023
c6b45c3
add some missing tests and adjust existing. Deparate deposit and with…
sparrowDom Jul 24, 2023
c77a296
fix check balance implementation
sparrowDom Jul 24, 2023
75329db
Balancer review changes (#1726)
naddison36 Jul 31, 2023
ea68019
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
naddison36 Aug 1, 2023
5607b5d
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
naddison36 Aug 1, 2023
012a83d
[ DFD-1 ] Balancer's checkBalance (#1730)
sparrowDom Aug 2, 2023
b120330
Balancer fork tests (#1727)
naddison36 Aug 2, 2023
39a7b3f
Add read-only reentrancy test (#1731)
shahthepro Aug 2, 2023
346d949
Balancer fixes (#1734)
sparrowDom Aug 3, 2023
fbafb80
Balancer withdrawal fix (#1739)
sparrowDom Aug 5, 2023
430fbad
use only 1 safeApprove when applicable
sparrowDom Aug 5, 2023
3ec984c
some renames and more correct application of approves
sparrowDom Aug 5, 2023
ecceeb1
renames, additional requires, move initializer to a better location, …
sparrowDom Aug 6, 2023
eb11498
bug fix
sparrowDom Aug 6, 2023
a25a661
Generated latest Balancer strategy diagrams
naddison36 Aug 7, 2023
b9dd480
re-deploy BPT tokens sitting in the strategy
sparrowDom Aug 7, 2023
3af8527
Merge branch 'master' into sparrowDom/balancer-sfrxETH-stETH-rETH
sparrowDom Aug 9, 2023
3767bb2
fix re-entrancy test
sparrowDom Aug 10, 2023
3cdbdba
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Aug 16, 2023
c69369e
fixture fix
sparrowDom Aug 17, 2023
8a26a4e
bug fix
sparrowDom Aug 17, 2023
afb2d67
prettier
sparrowDom Aug 17, 2023
3ae0892
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Aug 17, 2023
b321712
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Aug 23, 2023
34608a7
L02 improve naming (#1783)
sparrowDom Aug 28, 2023
a323447
do a check that supported assets are being withdrawn (#1784)
sparrowDom Aug 28, 2023
7d8c3fa
set uint256 max instead of magic number (#1782)
sparrowDom Aug 28, 2023
d4eef49
remove unused files (#1785)
sparrowDom Aug 28, 2023
4d36852
fix renaming bug
sparrowDom Aug 29, 2023
d206ce4
correct safe approve all tokens and adjust the documentation (#1776)
sparrowDom Aug 30, 2023
b127355
prettier
sparrowDom Aug 30, 2023
6ad405c
M04 - minBptFunction robustness (#1795)
sparrowDom Aug 30, 2023
04b3010
M02 withdrawal fuzzing tests (#1801)
sparrowDom Aug 30, 2023
852afa4
N02 gas inefficiencies (#1786)
sparrowDom Aug 30, 2023
abf482f
remove todo comments (#1796)
sparrowDom Aug 30, 2023
d159fbe
use a more appropriate array initialisation length (#1800)
sparrowDom Aug 30, 2023
e09a9b9
more consistant function naming (#1797)
sparrowDom Aug 30, 2023
daeab91
fix typo (#1798)
sparrowDom Aug 30, 2023
a2f8fcd
simplify the way we withdrawAll. no need to pass along min amonts (#1…
sparrowDom Aug 30, 2023
cf4122a
M03 - missing or misleading documentation (#1781)
sparrowDom Aug 30, 2023
fcc08f7
M01 More comprehensive test suite (#1780)
sparrowDom Aug 31, 2023
5a338d6
fix bad merge + prettier & lint
sparrowDom Aug 31, 2023
d2c0039
fix fork tests remove .only
sparrowDom Aug 31, 2023
70b4481
remove only
sparrowDom Aug 31, 2023
71332e5
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Aug 31, 2023
900e6d0
lint
sparrowDom Aug 31, 2023
38a7e86
fix unit tests
sparrowDom Aug 31, 2023
3fd8f23
add more tests to see how checkBalance behaves
sparrowDom Aug 31, 2023
88bfd30
remove console log
sparrowDom Aug 31, 2023
b7e0dc3
improve checkBalance test by testing that checkBalance amount doesn't…
sparrowDom Aug 31, 2023
a0cb919
confirm that yield gained by 3rd party tilting the pool can be extrac…
sparrowDom Sep 6, 2023
0f02fad
rename internal functions by prepending them with underscore
sparrowDom Sep 11, 2023
e95315a
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Sep 11, 2023
3019b49
Generated latest Balancer strategy diagrams (#1805)
naddison36 Sep 11, 2023
6b5a2b4
bug fix
sparrowDom Sep 11, 2023
09684fd
bug fix
sparrowDom Sep 11, 2023
d8d6aa5
Minor Balancer changes from final review (#1819)
naddison36 Sep 15, 2023
1ad9e71
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Sep 15, 2023
64a1ada
add proof of concept in brownie how to join/exit composable stable pools
sparrowDom Sep 20, 2023
535534d
make deposits function
sparrowDom Sep 21, 2023
932a198
commit intermediate work
sparrowDom Sep 21, 2023
730e7e7
intermediary work comitted
sparrowDom Sep 22, 2023
de35628
make withdrawals work
sparrowDom Sep 26, 2023
8bfb9b9
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Sep 26, 2023
95b1520
fix withdrawal tests
sparrowDom Sep 26, 2023
9bcac23
minor change
sparrowDom Sep 26, 2023
3db3802
remove unneeded files
sparrowDom Sep 26, 2023
e188604
remove unused lines
sparrowDom Sep 26, 2023
4aaa34b
cleanup
sparrowDom Sep 26, 2023
16c38bf
minor change
sparrowDom Sep 26, 2023
c26743d
wording
sparrowDom Sep 26, 2023
a1afaf3
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Sep 28, 2023
8c87320
cache the rateProviders request
sparrowDom Sep 28, 2023
c21d6f4
move some variable initialization to constructor
sparrowDom Sep 28, 2023
c87d2d1
reduce code by 1 line
sparrowDom Sep 28, 2023
9504702
make frxETH funding more resiliant
sparrowDom Sep 29, 2023
852f362
add the correct proposal id for 77 deploy
sparrowDom Sep 29, 2023
352a315
slither
sparrowDom Sep 29, 2023
175dc26
prettier
sparrowDom Sep 29, 2023
1f58b97
remove unneded line
sparrowDom Sep 29, 2023
ebbf77c
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 3, 2023
be15ba6
Balancer Strategy Code Simplification (#1851)
shahthepro Oct 4, 2023
d925894
add some documentation
sparrowDom Oct 4, 2023
d5f7e7e
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 5, 2023
fc2976d
fix non working trace
sparrowDom Oct 5, 2023
50aa75f
remove unneeded changes
sparrowDom Oct 5, 2023
4f10493
add tests for depositing withdrawing with the wrong asset
sparrowDom Oct 5, 2023
b5502a0
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 19, 2023
c64a329
prettier
sparrowDom Oct 19, 2023
f4ecf97
prettier & lint
sparrowDom Oct 19, 2023
b93e1be
Balancer Composable Pool contract diagrams (#1874)
naddison36 Oct 20, 2023
fd5c36b
Add generalised pool tilt functionality (#1849)
sparrowDom Oct 20, 2023
1eeb8a1
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 20, 2023
4075c4a
make immutables public for easier inspection
sparrowDom Oct 22, 2023
f0cb237
Hot deploy & Balancer rate provider fix (#1877)
sparrowDom Oct 22, 2023
d99a8ea
fix the fork test
sparrowDom Oct 23, 2023
5f09a8d
fix fork test
sparrowDom Oct 23, 2023
933009b
add comment
sparrowDom Oct 23, 2023
ab58728
prettier
sparrowDom Oct 24, 2023
5e18318
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 24, 2023
7f05e62
minor fix
sparrowDom Oct 24, 2023
bcb746c
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Oct 25, 2023
423be2a
prettier
sparrowDom Oct 25, 2023
292db7a
remove console log
sparrowDom Oct 26, 2023
4ac3998
rename deploy script
sparrowDom Nov 7, 2023
ea1c8ef
C-01 DoS Due to Unrestricted Growth of poolAssets Array (#1889)
sparrowDom Nov 8, 2023
b4afff5
fix an issue with calling withdrawAll (#1909)
sparrowDom Nov 8, 2023
5705849
M-02 Incorrect Assumption That Pool’s BPT Is the First Token in Balan…
sparrowDom Nov 8, 2023
e0005ec
L-01 Duplicate Strategy Assets Can Be Passed to _withdraw (#1913)
sparrowDom Nov 8, 2023
b2313d5
add support to withdraw the liquidity when balancer pool is in recove…
sparrowDom Nov 8, 2023
5b6066c
N-01 Gas Inefficiencies (#1919)
sparrowDom Nov 8, 2023
0d45ea7
safely approve assets where required (#1920)
sparrowDom Nov 8, 2023
bcaae0e
renames (#1921)
sparrowDom Nov 8, 2023
4d8a33a
N-04 Unused Code (#1922)
sparrowDom Nov 8, 2023
a6d6e4f
L-06 Test Coverage Gaps (#1918)
sparrowDom Nov 9, 2023
b13454b
L-04 Inaccurate IBalancerVault Integration Enums (#1915)
sparrowDom Nov 9, 2023
e2934e4
make documentation natspec compliant (#1925)
sparrowDom Nov 9, 2023
2777a80
Merge branch 'master' into sparrowDom/balancer-composable-st-pool
sparrowDom Nov 10, 2023
a251071
Merge branch 'master' into sparrowDom/balancer-composable-st-pool
sparrowDom Nov 13, 2023
2074f55
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Nov 13, 2023
1320ef5
Sparrow dom/balancer composable fixes (#1927)
sparrowDom Nov 13, 2023
815c310
remove .only
sparrowDom Nov 13, 2023
33a71ce
Revert "remove .only"
sparrowDom Nov 13, 2023
7729d17
remove .only
sparrowDom Nov 13, 2023
ddbfb4c
L-01, L-02 & L-03 addendum (#1929)
sparrowDom Nov 13, 2023
fde6b01
Merge branch 'master' into sparrowDom/balancer-composable-st-pool
sparrowDom Nov 14, 2023
0ec02f1
resolve slither issuegit st
sparrowDom Nov 14, 2023
8db6593
M-01-late Balancer Review: more robust withdraw from strategies (#1928)
sparrowDom Nov 15, 2023
a6f3285
M-02 addendum (#1930)
sparrowDom Nov 15, 2023
c25642a
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Nov 29, 2023
dce9bbc
prettier
sparrowDom Nov 29, 2023
25df2e6
Fix unit tests
shahthepro Dec 4, 2023
635f4a9
Fix unit test
shahthepro Dec 4, 2023
2e00076
Merge branch 'master' into sparrowDom/balancer-composable-st-pool
sparrowDom Dec 6, 2023
bbc2160
Merge remote-tracking branch 'origin/master' into sparrowDom/balancer…
sparrowDom Dec 6, 2023
47b9c0b
add hot-deploy support for another contract
sparrowDom Dec 6, 2023
8fb75ec
gas optimisation
sparrowDom Dec 6, 2023
6dbb9cd
rename variable, add test for double withdrawal. Gas optimisation whe…
sparrowDom Dec 6, 2023
d388725
fix the issue with hot deploying twice in the same fixture
sparrowDom Dec 7, 2023
63fb7fa
prettier
sparrowDom Dec 7, 2023
a3b3197
fix fork test failing on CI by funding timelock
sparrowDom Dec 7, 2023
8b94037
safeApprove an asset so it won't revert in case of USDT (#1949)
sparrowDom Jan 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ website/network.json

todo.txt
brownie/env-brownie/
brownie/env-brownie_pandas/

crytic-export
contracts/echidna-corpus
Expand Down
47 changes: 46 additions & 1 deletion brownie/balancer_deposit_withdrawal_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,52 @@


# DEPOSIT INTO COMPOSABLE POOL
# wstETH/sfrxETH/eETH Composable stable pool
pool_id=0x42ed016f826165c2e5976fe5bc3df540c5ad0af700000000000000000000058b
# BPT address
platform_address="0x42ED016F826165C2e5976fe5bC3df540C5aD0Af7"
amount=10
amountsIn = [0,0,0, 10 * 10**18]
# without BPT address
amountsInBPT = [0, 0, 10 * 10**18]
reth.approve(ba_vault.address, 10**50, STD)

tx_join = ba_vault.joinPool(
pool_id,
oeth_vault_admin.address, #sender
oeth_vault_admin.address, #recipient
[
# tokens need to be sorted numerically
[platform_address, wsteth.address, sfrxeth.address, reth.address], # assets
# indexes match above assets
amountsIn, # min amounts in
balancerUserDataEncoder.userDataExactTokenInForBPTOut.encode_input(1, amountsInBPT, amount * 10**18 * 0.9)[10:],
False, #fromInternalBalance
],
STD
)


# should be all 0 since user encoded data will already have min amounts, that
# can because of the rounding error actually be smaller than min amounts encoded
# in the user data. (1 wei off)
amountsOut = [0,0,0, 0]
# without BPT address
amountsOutBPT = [0, 0, 5 * 10**18]
tx_exit = ba_vault.exitPool(
pool_id,
oeth_vault_admin.address, #sender
oeth_vault_admin.address, #recipient
[
# tokens need to be sorted numerically
[platform_address, wsteth.address, sfrxeth.address, reth.address], # assets
# indexes match above assets
amountsOut, # min amounts out
balancerUserDataEncoder.userDataBPTinForExactTokensOut.encode_input(2, amountsOutBPT, amount * 10**18 * 1.1)[10:],
#Composable stable pools require "1" encoded for BPT_IN_FOR_EXACT_TOKENS_OUT and not 2 because of different enum ordering
balancerUserDataEncoder.userDataBPTinForExactTokensOut.encode_input(1, amountsOutBPT, amount * 10**18 * 1.1)[10:],
False, #fromInternalBalance
],
STD
)

# END DEPOSIT INTO COMPOSABLE POOL
2 changes: 2 additions & 0 deletions contracts/contracts/interfaces/IVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ interface IVault {

function withdrawAllFromStrategies() external;

function faultTolerantWithdrawAllFromStrategies() external;

function withdrawFromStrategy(
address _strategyFromAddress,
address[] calldata _assets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ pragma solidity ^0.8.0;

import { IRateProvider } from "./IRateProvider.sol";

interface IMetaStablePool {
interface IBalancerPool {
function getRateProviders()
external
view
returns (IRateProvider[] memory providers);

function inRecoveryMode() external view returns (bool);
}
15 changes: 9 additions & 6 deletions contracts/contracts/interfaces/balancer/IBalancerVault.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,22 @@ pragma solidity ^0.8.0;
import { IERC20 } from "../../utils/InitializableAbstractStrategy.sol";

interface IBalancerVault {
enum WeightedPoolJoinKind {
enum MetaStablePoolJoinKind {
INIT,
EXACT_TOKENS_IN_FOR_BPT_OUT,
TOKEN_IN_FOR_EXACT_BPT_OUT,
ALL_TOKENS_IN_FOR_EXACT_BPT_OUT,
ADD_TOKEN
TOKEN_IN_FOR_EXACT_BPT_OUT
}

enum WeightedPoolExitKind {
enum MetaStablePoolExitKind {
EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,
EXACT_BPT_IN_FOR_TOKENS_OUT,
BPT_IN_FOR_EXACT_TOKENS_OUT
}

enum ComposablePoolExitKind {
EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,
BPT_IN_FOR_EXACT_TOKENS_OUT,
REMOVE_TOKEN
EXACT_BPT_IN_FOR_ALL_TOKENS_OUT
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
* @title OETH Balancer BalancerComposablePoolTest Strategy
* This one is required to expose internal functions to our test suite. In fixtures
* we replace the mainnet byte code with the one from this contract.
*
* @author Origin Protocol Inc
*/
import { BalancerComposablePoolStrategy } from "../strategies/balancer/BalancerComposablePoolStrategy.sol";

contract BalancerComposablePoolBrokenTestStrategy is
BalancerComposablePoolStrategy
{
constructor(
BaseStrategyConfig memory _stratConfig,
BaseBalancerConfig memory _balancerConfig,
address _auraRewardPoolAddress,
uint256 _bptTokenPoolPosition
)
BalancerComposablePoolStrategy(
_stratConfig,
_balancerConfig,
_auraRewardPoolAddress,
_bptTokenPoolPosition
)
{}

function withdrawAll() external override onlyVaultOrGovernor nonReentrant {
require(false, "Simulating a failed call");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
* @title OETH Balancer BalancerComposablePoolTest Strategy
* This one is required to expose internal functions to our test suite. In fixtures
* we replace the mainnet byte code with the one from this contract.
*
* @author Origin Protocol Inc
*/
import { BalancerComposablePoolStrategy } from "../strategies/balancer/BalancerComposablePoolStrategy.sol";

contract BalancerComposablePoolTestStrategy is BalancerComposablePoolStrategy {
constructor(
BaseStrategyConfig memory _stratConfig,
BaseBalancerConfig memory _balancerConfig,
address _auraRewardPoolAddress,
uint256 _bptTokenPoolPosition
)
BalancerComposablePoolStrategy(
_stratConfig,
_balancerConfig,
_auraRewardPoolAddress,
_bptTokenPoolPosition
)
{}

function getRateProviderRate(address _asset)
external
view
returns (uint256)
{
return _getRateProviderRate(_asset);
}

function assetConfigVerification(address[] calldata _assets)
external
view
returns (uint256)
{
_assetConfigVerification(_assets);
}

function getUserDataEncodedAmounts(uint256[] memory _amounts)
external
view
returns (uint256[] memory amounts)
{
return _getUserDataEncodedAmounts(_amounts);
}

function getUserDataEncodedAssets(address[] memory _assets)
external
view
returns (address[] memory assets)
{
return _getUserDataEncodedAssets(_assets);
}
}
44 changes: 44 additions & 0 deletions contracts/contracts/mocks/BalancerMetaPoolTestStrategy.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
* @title OETH Balancer BalancerMetaPoolTest Strategy
* This one is required to expose internal functions to our test suite. In fixtures
* we replace the mainnet byte code with the one from this contract.
*
* @author Origin Protocol Inc
*/
import { BalancerMetaPoolStrategy } from "../strategies/balancer/BalancerMetaPoolStrategy.sol";

contract BalancerMetaPoolTestStrategy is BalancerMetaPoolStrategy {
constructor(
BaseStrategyConfig memory _stratConfig,
BaseBalancerConfig memory _balancerConfig,
address _auraRewardPoolAddress
)
BalancerMetaPoolStrategy(
_stratConfig,
_balancerConfig,
_auraRewardPoolAddress
)
{}

function getRateProviderRate(address _asset)
external
view
returns (uint256)
{
return _getRateProviderRate(_asset);
}

/**
* @notice This exposes the function that is currently not implemented
* just to future proof the usage of _deposit.
*/
function deposit(
address[] calldata _strategyAssets,
uint256[] calldata _strategyAmounts
) external override onlyVault nonReentrant {
_deposit(_strategyAssets, _strategyAmounts);
}
}
6 changes: 4 additions & 2 deletions contracts/contracts/mocks/MockEvilReentrantContract.sol
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ contract MockEvilReentrantContract {
);

bytes memory joinUserData = abi.encode(
IBalancerVault.WeightedPoolJoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT,
IBalancerVault.MetaStablePoolJoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT,
amounts,
minBPT
);
Expand All @@ -73,7 +73,9 @@ contract MockEvilReentrantContract {

// 2. Redeem as ETH
bytes memory exitUserData = abi.encode(
IBalancerVault.WeightedPoolExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,
IBalancerVault
.MetaStablePoolExitKind
.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,
bptTokenBalance,
1
);
Expand Down
8 changes: 8 additions & 0 deletions contracts/contracts/mocks/MockwstETH.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./MintableERC20.sol";

contract MockwstETH is MintableERC20 {
constructor() ERC20("wstETH", "wstETH") {}
}
20 changes: 20 additions & 0 deletions contracts/contracts/proxies/Proxies.sol
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,26 @@ contract OETHBalancerMetaPoolwstEthStrategyProxy is

}

/**
* @notice OETHBalancerComposablePoolwstEthStrategyProxy delegates calls to a
* BalancerComposablePoolStrategy implementation
*/
contract OETHBalancerComposablePoolwstEthStrategyProxy is
InitializeGovernedUpgradeabilityProxy
{

}

/**
* @notice OETHBalancerCompPoolSfrxEthWstETHrETHStrategyProxy delegates calls to a
* BalancerComposablePoolStrategy implementation
*/
contract OETHBalancerCompPoolSfrxEthWstETHrETHStrategyProxy is
InitializeGovernedUpgradeabilityProxy
{

}

/**
* @notice FluxStrategyProxy delegates calls to a CompoundStrategy implementation
*/
Expand Down