From dc535ea84d229d64252b3e0113de7bf5ed8b5ed5 Mon Sep 17 00:00:00 2001 From: Veliko Minkov <2662912+vminkov@users.noreply.github.com> Date: Mon, 3 Jul 2023 16:41:53 +0300 Subject: [PATCH 1/5] testing the extensions fns signatures --- contracts/compound/CTokenFirstExtension.sol | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/contracts/compound/CTokenFirstExtension.sol b/contracts/compound/CTokenFirstExtension.sol index 8246bff9b..3611d4f67 100644 --- a/contracts/compound/CTokenFirstExtension.sol +++ b/contracts/compound/CTokenFirstExtension.sol @@ -47,15 +47,14 @@ contract CTokenFirstExtension is functionSelectors[--fnsCount] = this.flash.selector; functionSelectors[--fnsCount] = this.getAccountSnapshot.selector; functionSelectors[--fnsCount] = this.borrowBalanceCurrent.selector; - functionSelectors[--fnsCount] = this.asCTokenExtensionInterface.selector; + functionSelectors[--fnsCount] = this.getExtensionForFunction.selector; require(fnsCount == 0, "use the correct array length"); return functionSelectors; } - // TODO remove after next deploy - function asCTokenExtensionInterface() external view returns (CTokenFirstExtension) { - return this; + function getExtensionForSig(bytes4 fnSig) external view returns (address) { + return LibDiamond.getExtensionForFunction(fnSig); } function getTotalUnderlyingSupplied() public view override returns (uint256) { From 02fff7dccde917adfadb5a149f7b9e73f8d5f42d Mon Sep 17 00:00:00 2001 From: Veliko Minkov <2662912+vminkov@users.noreply.github.com> Date: Mon, 3 Jul 2023 16:59:50 +0300 Subject: [PATCH 2/5] compiling --- contracts/compound/CTokenFirstExtension.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/compound/CTokenFirstExtension.sol b/contracts/compound/CTokenFirstExtension.sol index 3611d4f67..ccc2adeca 100644 --- a/contracts/compound/CTokenFirstExtension.sol +++ b/contracts/compound/CTokenFirstExtension.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity >=0.8.0; -import { DiamondExtension } from "../midas/DiamondExtension.sol"; +import { DiamondExtension, LibDiamond } from "../midas/DiamondExtension.sol"; import { IFlashLoanReceiver } from "../midas/IFlashLoanReceiver.sol"; import { CTokenExtensionBase, CTokenExtensionInterface, CTokenInterface } from "./CTokenInterfaces.sol"; import { ComptrollerV3Storage, UnitrollerAdminStorage } from "./ComptrollerStorage.sol"; @@ -47,7 +47,7 @@ contract CTokenFirstExtension is functionSelectors[--fnsCount] = this.flash.selector; functionSelectors[--fnsCount] = this.getAccountSnapshot.selector; functionSelectors[--fnsCount] = this.borrowBalanceCurrent.selector; - functionSelectors[--fnsCount] = this.getExtensionForFunction.selector; + functionSelectors[--fnsCount] = this.getExtensionForSig.selector; require(fnsCount == 0, "use the correct array length"); return functionSelectors; From 14b56be5b9923cf027a2313ec016b6422ee08e5b Mon Sep 17 00:00:00 2001 From: Veliko Minkov <2662912+vminkov@users.noreply.github.com> Date: Mon, 3 Jul 2023 17:45:39 +0300 Subject: [PATCH 3/5] tests fixes --- contracts/test/ExtensionsTest.sol | 26 +++++++++++++++++++ contracts/test/FusePoolLensTest.t.sol | 7 ++--- contracts/test/LiquidatorsRegistryTest.t.sol | 9 ++++--- .../BalancerLpTokenLiquidatorTest.t.sol | 2 +- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/contracts/test/ExtensionsTest.sol b/contracts/test/ExtensionsTest.sol index fc22979aa..8d51f3807 100644 --- a/contracts/test/ExtensionsTest.sol +++ b/contracts/test/ExtensionsTest.sol @@ -88,6 +88,32 @@ contract ExtensionsTest is MarketsTest { third = new MockThirdComptrollerExtension(); } + function testChapelAccrue() public fork(BSC_CHAPEL) { + address marketAddress = 0x5aF82b72E4fA372e69765DeAc2e1B06acCD8DE15; + CTokenFirstExtension asExt = CTokenFirstExtension(marketAddress); + + emit log_named_address("irm", address(asExt.interestRateModel())); + + asExt.accrueInterest(); + } + + function testChapelExtensionFns() public fork(BSC_CHAPEL) { + address marketAddress = 0x5aF82b72E4fA372e69765DeAc2e1B06acCD8DE15; + DiamondBase asBase = DiamondBase(marketAddress); + address[] memory extensions = asBase._listExtensions(); + + emit log_named_address("first ext", extensions[0]); + + DiamondExtension firstExt = DiamondExtension(extensions[0]); + bytes4[] memory fns = firstExt._getExtensionFunctions(); + + CTokenFirstExtension asExt = CTokenFirstExtension(marketAddress); + + asExt.supplyRatePerBlock(); + + // emit log_named_array("fn selectors", fns); + } + function testExtensionReplace() public debuggingOnly fork(BSC_MAINNET) { address payable jFiatPoolAddress = payable(0x31d76A64Bc8BbEffb601fac5884372DEF910F044); _upgradeExistingPool(jFiatPoolAddress); diff --git a/contracts/test/FusePoolLensTest.t.sol b/contracts/test/FusePoolLensTest.t.sol index 65142ffd0..800dd083b 100644 --- a/contracts/test/FusePoolLensTest.t.sol +++ b/contracts/test/FusePoolLensTest.t.sol @@ -12,8 +12,9 @@ contract FusePoolLensTest is BaseTest { fpl.getPoolAssetsWithData(IComptroller(0xB08A309eFBFFa41f36A06b2D0C9a4629749b17a2)); } - function testWhitelistsFPL() public debuggingOnly fork(BSC_CHAPEL) { - FusePoolLens fpl = FusePoolLens(0x604805B587C939042120D2e22398f299547A130c); - fpl.getSupplyCapsDataForPool(IComptroller(0x307BEc9d1368A459E9168fa6296C1e69025ab30f)); + function testChapelFPL() public debuggingOnly fork(BSC_CHAPEL) { + FusePoolLens fpl = FusePoolLens(0xD880d5D33221F3992E695f5C6bFBC558e9Ad31cF); + //vm.prank(0x8982aa50bb919E42e9204f12e5b59D053Eb2A602); + fpl.getPoolAssetsWithData(IComptroller(0x044c436b2f3EF29D30f89c121f9240cf0a08Ca4b)); } } diff --git a/contracts/test/LiquidatorsRegistryTest.t.sol b/contracts/test/LiquidatorsRegistryTest.t.sol index ea92d8808..49d556690 100644 --- a/contracts/test/LiquidatorsRegistryTest.t.sol +++ b/contracts/test/LiquidatorsRegistryTest.t.sol @@ -76,11 +76,12 @@ contract LiquidatorsRegistryTest is BaseTest { return returndata; } - function testResetStrategies() public debuggingOnly fork(POLYGON_MAINNET) { - upgradeRegistry(); + function testSwapAllowance() public debuggingOnly fork(BSC_CHAPEL) { + vm.prank(0x8982aa50bb919E42e9204f12e5b59D053Eb2A602); + IERC20Upgradeable chapelBomb = IERC20Upgradeable(0xe45589fBad3A1FB90F5b2A8A3E8958a8BAB5f768); + IERC20Upgradeable chapelTUsd = IERC20Upgradeable(0x4f1885D25eF219D3D4Fa064809D6D4985FAb9A0b); - vm.prank(ap.getAddress("deployer")); - _functionCall(address(registry), hex"00", "reset strategies failed"); + registry.amountOutAndSlippageOfSwap(chapelTUsd, 1000000000000000000000, chapelBomb); } function testRedemptionPathChapel() public debuggingOnly fork(BSC_CHAPEL) { diff --git a/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol b/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol index e43137523..f7cfe97e4 100644 --- a/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol +++ b/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol @@ -149,7 +149,7 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address maticX = 0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6; address erc4626TokenAddress = 0xE4885Ed2818Cc9E840A25f94F9b2A28169D1AEA7; // bb-a-WMATIC address poolAddress = 0xE78b25c06dB117fdF8F98583CDaaa6c92B79E917; // Balancer MaticX Boosted Aave WMATIC StablePool - address maticXWhale = 0x4bE0eB1Ed4dcd216c303Cf964F3730Eda6EC3051; + address maticXWhale = 0x80cA0d8C38d2e2BcbaB66aA1648Bd1C7160500FE; address outputTokenAddress = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; // WMATIC testRedeemLinearPool(amount, maticXWhale, maticX, poolAddress, erc4626TokenAddress); From 49ff2e0df8c2991ad03b11ac0d6b8605846b169b Mon Sep 17 00:00:00 2001 From: Veliko Minkov <2662912+vminkov@users.noreply.github.com> Date: Tue, 4 Jul 2023 12:11:58 +0300 Subject: [PATCH 4/5] tests stuff --- contracts/test/ExtensionsTest.sol | 3 ++- contracts/test/FusePoolLensTest.t.sol | 2 +- contracts/test/LiquidatorsRegistryTest.t.sol | 7 ++----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/contracts/test/ExtensionsTest.sol b/contracts/test/ExtensionsTest.sol index 8d51f3807..c00cb6fd6 100644 --- a/contracts/test/ExtensionsTest.sol +++ b/contracts/test/ExtensionsTest.sol @@ -109,7 +109,8 @@ contract ExtensionsTest is MarketsTest { CTokenFirstExtension asExt = CTokenFirstExtension(marketAddress); - asExt.supplyRatePerBlock(); + asExt.getExtensionForSig(asExt.borrowBalanceCurrent.selector); + //asExt.supplyRatePerBlock(); // emit log_named_array("fn selectors", fns); } diff --git a/contracts/test/FusePoolLensTest.t.sol b/contracts/test/FusePoolLensTest.t.sol index 800dd083b..9a28dafa0 100644 --- a/contracts/test/FusePoolLensTest.t.sol +++ b/contracts/test/FusePoolLensTest.t.sol @@ -14,7 +14,7 @@ contract FusePoolLensTest is BaseTest { function testChapelFPL() public debuggingOnly fork(BSC_CHAPEL) { FusePoolLens fpl = FusePoolLens(0xD880d5D33221F3992E695f5C6bFBC558e9Ad31cF); - //vm.prank(0x8982aa50bb919E42e9204f12e5b59D053Eb2A602); + vm.prank(0x8982aa50bb919E42e9204f12e5b59D053Eb2A602); fpl.getPoolAssetsWithData(IComptroller(0x044c436b2f3EF29D30f89c121f9240cf0a08Ca4b)); } } diff --git a/contracts/test/LiquidatorsRegistryTest.t.sol b/contracts/test/LiquidatorsRegistryTest.t.sol index 49d556690..31f7d5596 100644 --- a/contracts/test/LiquidatorsRegistryTest.t.sol +++ b/contracts/test/LiquidatorsRegistryTest.t.sol @@ -77,11 +77,8 @@ contract LiquidatorsRegistryTest is BaseTest { } function testSwapAllowance() public debuggingOnly fork(BSC_CHAPEL) { - vm.prank(0x8982aa50bb919E42e9204f12e5b59D053Eb2A602); - IERC20Upgradeable chapelBomb = IERC20Upgradeable(0xe45589fBad3A1FB90F5b2A8A3E8958a8BAB5f768); - IERC20Upgradeable chapelTUsd = IERC20Upgradeable(0x4f1885D25eF219D3D4Fa064809D6D4985FAb9A0b); - - registry.amountOutAndSlippageOfSwap(chapelTUsd, 1000000000000000000000, chapelBomb); + vm.prank(0xdc3d8A4ee43dDe6a4E92F0D7A749C8eBD921239b); + registry.amountOutAndSlippageOfSwap(chapelBomb, 1e18, chapelTUsd); } function testRedemptionPathChapel() public debuggingOnly fork(BSC_CHAPEL) { From 708c8cb48918472b86b729a041ae1839fc90f001 Mon Sep 17 00:00:00 2001 From: Veliko Minkov <2662912+vminkov@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:43:14 +0300 Subject: [PATCH 5/5] fixed the merging --- .../BalancerLpTokenLiquidatorTest.t.sol | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol b/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol index 6033d600c..ac44fe062 100644 --- a/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol +++ b/contracts/test/liquidators/BalancerLpTokenLiquidatorTest.t.sol @@ -84,7 +84,6 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address lpToken = 0x82d7f08026e21c7713CfAd1071df7C8271B17Eae; //MIMO-PAR 8020 address lpTokenWhale = 0xbB60ADbe38B4e6ab7fb0f9546C2C1b665B86af11; address outputTokenAddress = 0xE2Aa7db6dA1dAE97C5f5C6914d285fBfCC32A128; // PAR - testRedeemLpToken(lpTokenWhale, lpToken, outputTokenAddress); } @@ -92,7 +91,6 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address lpToken = 0x8159462d255C1D24915CB51ec361F700174cD994; // stMATIC-WMATIC stable address lpTokenWhale = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; // Balancer V2 address outputTokenAddress = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; // WMATIC - testRedeemLpToken(lpTokenWhale, lpToken, outputTokenAddress); } @@ -100,7 +98,6 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address lpToken = 0xC17636e36398602dd37Bb5d1B3a9008c7629005f; // WMATIC-MaticX stable address lpTokenWhale = 0x48534d027f8962692122dB440714fFE88Ab1fA85; address outputTokenAddress = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; // WMATIC - testRedeemLpToken(lpTokenWhale, lpToken, outputTokenAddress); } @@ -108,7 +105,6 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address lpToken = 0xE22483774bd8611bE2Ad2F4194078DaC9159F4bA; // jBRL-BRZ stable address lpTokenWhale = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; // Balancer V2 address outputTokenAddress = 0xf2f77FE7b8e66571E0fca7104c4d670BF1C8d722; // jBRL - testRedeemLpToken(lpTokenWhale, lpToken, outputTokenAddress); } @@ -116,29 +112,9 @@ contract BalancerLpTokenLiquidatorTest is BaseTest { address inputToken = 0x48e6B98ef6329f8f0A30eBB8c7C960330d648085; // bb-am-USD address lpTokenWhale = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; // Balancer V2 address outputTokenAddress = 0xF93579002DBE8046c43FEfE86ec78b1112247BB8; // linear aaver usdc - testRedeemLpToken(lpTokenWhale, inputToken, outputTokenAddress); } - function testBoostedAaaveWmaticMaticXRedeem() public fork(POLYGON_MAINNET) { - uint256 amount = 1e18; - address maticX = 0xfa68FB4628DFF1028CFEc22b4162FCcd0d45efb6; - address erc4626TokenAddress = 0xE4885Ed2818Cc9E840A25f94F9b2A28169D1AEA7; // bb-a-WMATIC - address poolAddress = 0xE78b25c06dB117fdF8F98583CDaaa6c92B79E917; // Balancer MaticX Boosted Aave WMATIC StablePool - address maticXWhale = 0x80cA0d8C38d2e2BcbaB66aA1648Bd1C7160500FE; - address outputTokenAddress = 0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270; // WMATIC - - testRedeemLinearPool(amount, maticXWhale, maticX, poolAddress, erc4626TokenAddress); - - IERC20Upgradeable erc4626Token = IERC20Upgradeable(erc4626TokenAddress); - uint256 balance = erc4626Token.balanceOf(address(linearPoolLiquidator)); - vm.prank(address(linearPoolLiquidator)); - erc4626Token.transfer(address(swapLiquidator), balance); - - bytes memory data = abi.encode(outputTokenAddress); - swapLiquidator.redeem(erc4626Token, balance, data); - } - function testWmaticStmaticLiquidatorRedeem() public fork(POLYGON_MAINNET) { address inputToken = 0x8159462d255C1D24915CB51ec361F700174cD994; // Balancer stMATIC Stable Pool address lpTokenWhale = 0xBA12222222228d8Ba445958a75a0704d566BF2C8; // Balancer Gauge