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

Feat/upgrade pool #46

Open
wants to merge 67 commits into
base: feat/prod
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
d22623f
1st draft) create LP for wombat commit
MuesliW Aug 16, 2023
26f54a1
Merge pull request #42 from Kinza-Finance/feat/prod
MuesliW Aug 23, 2023
ba7b50f
2nd draft (including use of a new AToken impl that stake LP into Mast…
MuesliW Aug 23, 2023
a64cc35
consolidate the change into 1 contract: ATokenMagpieStaker
MuesliW Aug 29, 2023
acfb648
add basic fork test setup; add bsc mainnet contract dependency
MuesliW Aug 29, 2023
ca0fdd0
basic integration test setup, 1 test
MuesliW Aug 31, 2023
a700cca
update fetching of wombatStaking() from the new helper, not the old
MuesliW Aug 31, 2023
b9daf40
refactor to add direct wombat staking since magpie does not support L…
MuesliW Aug 31, 2023
15d9ba4
change directory name
MuesliW Aug 31, 2023
d35b0b0
1st working wombat minimal test suite
MuesliW Aug 31, 2023
e29aa6f
add profile for targeted test run
MuesliW Aug 31, 2023
7a7f6ec
add test to verify flashloan, borrow are disabled on all cases
MuesliW Sep 1, 2023
0ec7263
add setup oracle
MuesliW Sep 1, 2023
4ed3a26
add basic fuzzing
MuesliW Sep 1, 2023
e645bf6
add testing on reward distribution and accrual;
MuesliW Sep 3, 2023
386f0d1
pendingRewards are retrived in getUserRewards instead of AccruedRewards
MuesliW Sep 4, 2023
5feb3b9
remove unnecessary reminder
MuesliW Sep 4, 2023
114b2b0
add reward splitting test
MuesliW Sep 4, 2023
43add3e
make change to function name to improve readeability
MuesliW Sep 4, 2023
e103005
add test on enable/disable collateral
MuesliW Sep 5, 2023
fbac6a4
setup test for eMode and liquidation check, both inside and outside e…
MuesliW Sep 5, 2023
efd73d6
update enableCollateral behavior due to validateUseAsCollateral check
MuesliW Sep 5, 2023
7c3a5a2
update reward distribute check
VinciXie Sep 5, 2023
88de10a
add test for transfer, use startPrank instead of prank to override pr…
MuesliW Sep 6, 2023
8aa9f05
update startPrank instead of prank in reward test
MuesliW Sep 6, 2023
b83dd02
add some reward fuzz testing
VinciXie Sep 6, 2023
646e197
add custom price feed for emode
MuesliW Sep 7, 2023
6f669fa
MVP for leverageHelper
MuesliW Sep 11, 2023
ce4e6eb
refactor levHelper to work for generalized underlying and lp
MuesliW Sep 11, 2023
f1c3379
minimal test for leverage helper
MuesliW Sep 11, 2023
6782f1f
add loop test to levHelper
MuesliW Sep 11, 2023
021b7ac
support first deposit
MuesliW Sep 12, 2023
aa9c74b
a minimal change to test poolUpgrade
MuesliW Sep 12, 2023
3382743
allowance object updated
MuesliW Sep 13, 2023
2ab6ab3
the previous version is wrong with the depositing function, using the…
MuesliW Sep 13, 2023
001a852
Merge pull request #44 from Kinza-Finance/feat/wombat-LP
MuesliW Sep 13, 2023
83e40fd
update deployment script to use the new poolImpl with new supplyLogic…
MuesliW Sep 13, 2023
b6e2d34
add use of whitelist to control deposit in the beginning
MuesliW Sep 14, 2023
0c19e26
add testnet deployment and config
MuesliW Sep 14, 2023
2d7708d
update deployment scripts
MuesliW Sep 14, 2023
e402f61
minor update on source code.
MuesliW Sep 14, 2023
a29c5ba
update deployment of eMode to not use emode feed
MuesliW Sep 14, 2023
a72a165
add test coverage to verify LP cannot be liquidated outside emode, ev…
MuesliW Sep 14, 2023
74e5d40
use noraml price feed instead of emode price feed
MuesliW Sep 14, 2023
5f629c3
wrong mainnet addresses
MuesliW Sep 14, 2023
097728a
add test coverage, verify the borrow loop works
MuesliW Sep 15, 2023
129ce02
make leverageHelper generic
MuesliW Sep 15, 2023
5b10578
add a vanilia loop function
MuesliW Sep 15, 2023
95b7156
add scrript
MuesliW Sep 15, 2023
f340ccb
Merge branch 'feat/prod' into feat/upgradePool
MuesliW Sep 15, 2023
592843f
remove redundent files
MuesliW Sep 15, 2023
9a2bceb
Merge branch 'feat/upgradePool' of https://github.com/Kinza-Finance/K…
MuesliW Sep 15, 2023
768fbff
remove redundent file
MuesliW Sep 15, 2023
3af3903
update mainnet supplyLogic
MuesliW Sep 15, 2023
8ed1fae
update mainnet supplyLogic in deployment
MuesliW Sep 15, 2023
ed1fd8c
remove unneeded interface
MuesliW Sep 16, 2023
f73fd1f
add emissionManager setup scrtip for WOM emission
MuesliW Sep 18, 2023
4fff4f8
add emergencyWithdraw which withdraw all deposit from masterWombat ba…
MuesliW Sep 18, 2023
5b86f64
Update ValidationLogic.sol
MuesliW Sep 19, 2023
10dacfe
merge test into unit.t.sol using proxyUpgrade, remove fallbackOracle
MuesliW Sep 19, 2023
c9a7e20
remove error 34 check
MuesliW Sep 19, 2023
b8233df
Revert "Update ValidationLogic.sol"
MuesliW Sep 19, 2023
d4e7eaa
revert change in validateUseAsCollateral from 3.0.2
MuesliW Sep 22, 2023
13d87bd
revert COLLATERAL_BALANCE_IS_ZERO check
MuesliW Sep 22, 2023
9c2914f
add space for diff
MuesliW Sep 22, 2023
6021d3a
Update ValidationLogic.sol
MuesliW Sep 22, 2023
b8a18ca
Update ValidationLogic.sol
MuesliW Sep 22, 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
merge test into unit.t.sol using proxyUpgrade, remove fallbackOracle
  • Loading branch information
MuesliW committed Sep 19, 2023
commit 10dacfe4d4b55d247e3956fabfb26a3f05a4565b
11 changes: 0 additions & 11 deletions src/core/misc/WombatOracle/GenericLPFallbackOracle.sol

This file was deleted.

30 changes: 14 additions & 16 deletions test/ATokenStaker/WombatStaker/ATokenWombatStakerBaseTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {IAaveOracle} from '../../../src/core/interfaces/IAaveOracle.sol';
import {IAaveIncentivesController} from '../../../src/core/interfaces/IAaveIncentivesController.sol';
import {IMasterWombat} from '../../../src/core/interfaces/IMasterWombat.sol';
import {AToken} from "../../../src/core/protocol/tokenization/AToken.sol";
import {GenericLPFallbackOracle} from "../../../src/core/misc/wombatOracle/GenericLPFallbackOracle.sol";
import {SmartHayPoolOracle} from "../../../src/core/misc/wombatOracle/SmartHayPoolOracle.sol";
import {ATokenWombatStaker} from "../../../src/core/protocol/tokenization/ATokenWombatStaker.sol";
import {ZeroReserveInterestRateStrategy} from "../../../src/core/misc/ZeroReserveInterestRateStrategy.sol";
Expand All @@ -33,12 +32,10 @@ contract ATokenWombatStakerBaseTest is BaseTest {
uint16 internal liquidationBonus = 10100;
// each eMode category may or may not have a custom oracle to override the individual assets price oracles
// use HAY oracle for now
address internal EmodeOracle;
address internal LpOracle;
string internal label = "wombat LP Emode";
function setUp() public virtual override(BaseTest) {
BaseTest.setUp();
//setup oracle
setUpOracleThroughFallback();
// deploy reserve, get ATokenProxy
address aTokenProxy = deployReserveForATokenStaker();
ATokenProxyStaker = ATokenWombatStaker(aTokenProxy);
Expand All @@ -52,7 +49,7 @@ contract ATokenWombatStakerBaseTest is BaseTest {
emissionAdmin = new EmissionAdminAndDirectTransferStrategy(pool, emissionManager);
ATokenProxyStaker.updateEmissionAdmin(address(emissionAdmin));
// add emode, setup oracle specific to the emode
EmodeOracle = address(new SmartHayPoolOracle(
LpOracle = address(new SmartHayPoolOracle(
USDC_AGGREGATOR, USDT_AGGREGATOR, HAY_AGGREGATOR, USDC, USDT, HAY
));
setUpEmodeAndOracle();
Expand Down Expand Up @@ -118,9 +115,9 @@ contract ATokenWombatStakerBaseTest is BaseTest {
ReservesSetupHelper.ConfigureReserveInput[] memory inputs = new ReservesSetupHelper.ConfigureReserveInput[](1);
inputs[0] = ReservesSetupHelper.ConfigureReserveInput(
underlying,
100, // baseLTV
100, // liquidationThreshold
10100, // liquidationBonus
0, // baseLTV
0, // liquidationThreshold
0, // liquidationBonus
1500, // reserveFactor
1, //borrowCap
2000000, //supplyCap
Expand All @@ -133,24 +130,25 @@ contract ATokenWombatStakerBaseTest is BaseTest {
aclManager.removePoolAdmin(address(helper));
}

function setUpOracleThroughFallback() internal {
GenericLPFallbackOracle LPFallbackOracle = new GenericLPFallbackOracle();
vm.startPrank(POOL_ADMIN);
IAaveOracle(oracle).setFallbackOracle(address(LPFallbackOracle));
}
// function setUpOracleThroughFallback() internal {
// GenericLPFallbackOracle LPFallbackOracle = new GenericLPFallbackOracle();
// vm.startPrank(POOL_ADMIN);
// IAaveOracle(oracle).setFallbackOracle(address(LPFallbackOracle));
// }

function setUpEmodeAndOracle() internal {


vm.startPrank(POOL_ADMIN);
configurator.setEModeCategory(eModeCategoryId, ltv, liquidationThreshold, liquidationBonus, address(0), label);
// then set oracle
address[] memory assets = new address[](1);
address[] memory sources = new address[](1);

assets[0] = underlying;
sources[0] = EmodeOracle;
sources[0] = LpOracle;
IAaveOracle(oracle).setAssetSources(assets, sources);
uint256[] memory price = new uint256[](1);
price = IAaveOracle(oracle).getAssetsPrices(assets);
assertGt(price[0], 0);
}

function addAssetIntoEmode() internal {
Expand Down
57 changes: 0 additions & 57 deletions test/ATokenStaker/WombatStaker/poolUpgrade.t.sol

This file was deleted.

74 changes: 55 additions & 19 deletions test/ATokenStaker/WombatStaker/unit.t.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,56 @@

import {ATokenWombatStakerBaseTest} from "./ATokenWombatStakerBaseTest.t.sol";
import {IERC20} from "../../../src/core/dependencies/openzeppelin/contracts/IERC20.sol";
import {ADDRESSES_PROVIDER, POOLDATA_PROVIDER, ACL_MANAGER, POOL, POOL_CONFIGURATOR, EMISSION_MANAGER,
import {ValidationLogic} from "../../../src/core/protocol/libraries/logic/ValidationLogic.sol";
import {IPoolAddressesProvider} from "../../../src/core/interfaces/IPoolAddressesProvider.sol";
import {Pool} from "../../../src/core/protocol/pool/Pool.sol";

import {TIMELOCK, ADDRESSES_PROVIDER, POOLDATA_PROVIDER, ACL_MANAGER, POOL, POOL_CONFIGURATOR, EMISSION_MANAGER,
ATOKENIMPL, SDTOKENIMPL, VDTOKENIMPL, TREASURY, POOL_ADMIN, HAY_AGGREGATOR, HAY,
MASTER_WOMBAT, SMART_HAY_LP, LIQUIDATION_ADAPTOR} from "test/utils/Addresses.sol";
MASTER_WOMBAT, SMART_HAY_LP, LIQUIDATION_ADAPTOR, BORROWABLE_DATA_PROVIDER} from "test/utils/Addresses.sol";

contract unitTest is ATokenWombatStakerBaseTest {
// @dev disable linked lib in foundry.toml, since forge test would inherit those setting
// https://book.getfoundry.sh/reference/forge/forge-build?highlight=link#linker-options
contract poolUpgradeUnitTest is ATokenWombatStakerBaseTest {

function setUp() public virtual override(ATokenWombatStakerBaseTest) {
ATokenWombatStakerBaseTest.setUp();
// deploy new pool impl with new validationLogic

Pool poolV2 = new Pool(IPoolAddressesProvider(ADDRESSES_PROVIDER));
poolV2.initialize(IPoolAddressesProvider(ADDRESSES_PROVIDER));
// upgrade
vm.startPrank(TIMELOCK);
provider.setPoolImpl(address(poolV2));
assertEq(Pool(address(pool)).POOL_REVISION(), 0x2);
}

function test_enableCollateralWithZeroLTV() public {
setReserveAsZeroLTV();
address bob = address(1);
turnOnEmode(bob);
deposit(bob, 1e18, underlying);
turnOnCollateral(bob, underlying);
}

function test_liquidateRevertOutsideEmodeAfterProxyUpgrade() public {
setReserveAsZeroLTV();
address bob = address(1);
uint256 collateralAmount = 100 * 1e18;
deposit(bob, collateralAmount, underlying);
turnOnCollateral(bob, underlying);
// now setup a bad debt
prepUSDC(bob, 1e18);
address debtAsset = HAY;
borrow(bob, 6e17, debtAsset);
// pass 100y
vm.warp(36500 days);
// verify health factor < 1;
(,,,,, uint256 healthFactor) = pool.getUserAccountData(bob);
assertLt(healthFactor, 1e18);
// attempt to liquidate half of original debt
liquidateRevertWith46(bob, debtAsset, underlying, 3e17);

}

function test_deposit() public {
Expand Down Expand Up @@ -51,20 +93,6 @@ contract unitTest is ATokenWombatStakerBaseTest {
borrowExpectFail(bob, borrow_amount, underlying, 'ATokenStaker does not allow flashloan or borrow');
}

function test_borrowWhenBorrowEnabledNonZeroPrice() public {
address bob = address(1);
uint256 collateralAmount = 100_000 * 1e18;
uint256 borrow_amount = 100 * 1e18;
// have a deposit first, so there is reserve available
deposit(bob, borrow_amount, underlying);
prepUSDC(bob, collateralAmount);
turnOnBorrow();
// this is a set-up to test the error, in mainnet we wont set price for LP
setUpOracle(HAY_AGGREGATOR, underlying);
//when borrow is enabled, price is non-zero borrow is reverted by AToken
borrowExpectFail(bob, borrow_amount, underlying, 'ATokenStaker does not allow flashloan or borrow');
}


function test_flashloanWhenDisabled() public {
address bob = address(1);
Expand Down Expand Up @@ -179,9 +207,16 @@ contract unitTest is ATokenWombatStakerBaseTest {
// borrow
uint256 borrowAmount = 100;
// borrow(bob, borrowAmount, HAY);
borrowExpectFail(bob, borrowAmount, HAY, '34');
borrowExpectFail(bob, borrowAmount, HAY, '');
}

function test_borrowWithEmode() public {
address bob = address(1);
uint256 collateralAmount = 100 * 1e18;
deposit(bob, collateralAmount, underlying);
turnOnEmode(bob);
turnOnCollateral(bob, underlying);

}
function test_borrowWithEmode() public {
address bob = address(1);
uint256 collateralAmount = 100 * 1e18;
Expand Down Expand Up @@ -245,5 +280,6 @@ contract unitTest is ATokenWombatStakerBaseTest {
toggleEmergency();
withdraw(bob, collateralAmount, underlying);
}


}