Skip to content

Commit 3176182

Browse files
committed
fix: add Executor support for listings
1 parent 6cc1bdd commit 3176182

File tree

5 files changed

+49
-14
lines changed

5 files changed

+49
-14
lines changed

scripts/misc/ConfigureHorizonPhaseOne.sol

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import {MarketReport} from '../../src/deployments/interfaces/IMarketReportTypes.
55
import {HorizonPhaseOneListing} from '../../src/deployments/inputs/HorizonPhaseOneListing.sol';
66
import {IMetadataReporter} from '../../src/deployments/interfaces/IMetadataReporter.sol';
77
import {DeployUtils} from '../../src/deployments/contracts/utilities/DeployUtils.sol';
8+
import {HorizonInput} from '../../src/deployments/inputs/HorizonInput.sol';
89
import {Script} from 'forge-std/Script.sol';
910

10-
contract ConfigureHorizonPhaseOne is Script, DeployUtils {
11+
contract ConfigureHorizonPhaseOne is Script, DeployUtils, HorizonInput {
1112
function run(string memory reportPath) public {
1213
_run(msg.sender, reportPath);
1314
}
@@ -21,8 +22,17 @@ contract ConfigureHorizonPhaseOne is Script, DeployUtils {
2122

2223
vm.startBroadcast(deployer);
2324
HorizonPhaseOneListing horizonInitialListing = new HorizonPhaseOneListing(report);
24-
horizonInitialListing.ACL_MANAGER().addPoolAdmin(address(horizonInitialListing));
25-
horizonInitialListing.execute();
25+
(bool success, ) = PHASE_ONE_LISTING_EXECUTOR.call(
26+
abi.encodeWithSignature(
27+
'executeTransaction(address,uint256,string,bytes,bool)',
28+
address(horizonInitialListing), // target
29+
0, // value
30+
'execute()', // signature
31+
'', // data
32+
true // withDelegatecall
33+
)
34+
);
35+
require(success, 'Failed to execute transaction');
2636
vm.stopBroadcast();
2737
}
2838
}

src/deployments/inputs/HorizonInput.sol

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ pragma solidity ^0.8.0;
33
import './MarketInput.sol';
44

55
contract HorizonInput is MarketInput {
6-
address public constant DEPLOYER = 0xA22f39d5fEb10489F7FA84C2C545BAc4EA48eBB7;
6+
address public constant AAVE_DAO_EXECUTOR = 0x5300A1a15135EA4dc7aD5a167152C01EFc9b192A;
7+
address public constant AAVE_DAO_COLLECTOR = 0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c;
78
bytes32 public constant POOL_ADMIN_ROLE = keccak256('POOL_ADMIN');
8-
address public constant PHASE_ONE_LISTING_EXECUTOR = address(0); // todo
9+
address public constant PHASE_ONE_LISTING_EXECUTOR = 0xf046907a4371F7F027113bf751F3347459a08b71;
910

1011
function _getMarketInput(
1112
address
@@ -23,10 +24,10 @@ contract HorizonInput is MarketInput {
2324
bytes[] memory additionalRoles = new bytes[](1);
2425
additionalRoles[0] = abi.encode(POOL_ADMIN_ROLE, PHASE_ONE_LISTING_EXECUTOR);
2526
roles = Roles({
26-
marketOwner: DEPLOYER,
27-
emergencyAdmin: DEPLOYER,
28-
poolAdmin: DEPLOYER,
29-
rwaATokenManagerAdmin: DEPLOYER,
27+
marketOwner: AAVE_DAO_EXECUTOR,
28+
emergencyAdmin: AAVE_DAO_EXECUTOR,
29+
poolAdmin: AAVE_DAO_EXECUTOR,
30+
rwaATokenManagerAdmin: AAVE_DAO_EXECUTOR,
3031
additionalRoles: additionalRoles
3132
});
3233

@@ -45,7 +46,7 @@ contract HorizonInput is MarketInput {
4546
flashLoanPremiumToProtocol: 1e4,
4647
incentivesProxy: address(0),
4748
treasury: address(0),
48-
treasuryPartner: 0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c, // TreasuryCollector
49+
treasuryPartner: AAVE_DAO_COLLECTOR, // TreasuryCollector
4950
treasurySplitPercent: 50_00
5051
});
5152

src/deployments/inputs/HorizonPhaseOneListing.sol

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,12 @@ contract HorizonPhaseOneListing is AaveV3Payload {
286286
}
287287

288288
function _postExecute() internal override {
289+
CONFIGURATOR.setReservePause(GHO_ADDRESS, true, 0);
290+
CONFIGURATOR.setReservePause(USDC_ADDRESS, true, 0);
291+
CONFIGURATOR.setReservePause(RLUSD_ADDRESS, true, 0);
292+
CONFIGURATOR.setReservePause(USTB_ADDRESS, true, 0);
293+
CONFIGURATOR.setReservePause(USCC_ADDRESS, true, 0);
294+
CONFIGURATOR.setReservePause(USYC_ADDRESS, true, 0);
289295
ACL_MANAGER.renounceRole(POOL_ADMIN_ROLE_ID, address(this));
290296
}
291297
}

tests/deployments/HorizonDeployment.t.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ contract HorizonDeploymentTest is Test, Default {
2424
}
2525

2626
function test_HorizonInput() public {
27-
(, MarketConfig memory config, , ) = _getMarketInput(DEPLOYER);
27+
(, MarketConfig memory config, , ) = _getMarketInput(address(0));
2828
assertEq(contracts.poolAddressesProvider.getMarketId(), config.marketId);
2929
assertEq(
3030
contracts.poolAddressesProviderRegistry.getAddressesProviderAddressById(config.providerId),
@@ -37,14 +37,14 @@ contract HorizonDeploymentTest is Test, Default {
3737
contracts.poolProxy.FLASHLOAN_PREMIUM_TO_PROTOCOL(),
3838
config.flashLoanPremiumToProtocol
3939
);
40-
assertEq(contracts.treasury.isFundsAdmin(DEPLOYER), true);
40+
assertEq(contracts.treasury.isFundsAdmin(AAVE_DAO_EXECUTOR), true);
4141
assertEq(contracts.revenueSplitter.RECIPIENT_A(), marketReport.treasury);
4242
assertEq(contracts.revenueSplitter.RECIPIENT_B(), config.treasuryPartner);
4343
assertEq(contracts.revenueSplitter.SPLIT_PERCENTAGE_RECIPIENT_A(), config.treasurySplitPercent);
4444
}
4545

4646
function test_RewardsController() public {
4747
assertEq(contracts.rewardsControllerProxy.EMISSION_MANAGER(), marketReport.emissionManager);
48-
assertEq(Ownable(address(contracts.emissionManager)).owner(), DEPLOYER);
48+
assertEq(Ownable(address(contracts.emissionManager)).owner(), AAVE_DAO_EXECUTOR);
4949
}
5050
}

tests/deployments/HorizonPhaseOneListing.t.sol

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {IMetadataReporter} from '../../src/deployments/interfaces/IMetadataRepor
1212
import {IRevenueSplitter} from '../../src/contracts/treasury/IRevenueSplitter.sol';
1313
import {IDefaultInterestRateStrategyV2} from '../../src/contracts/interfaces/IDefaultInterestRateStrategyV2.sol';
1414
import {IERC20Detailed} from '../../src/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol';
15+
import {IACLManager} from '../../src/contracts/interfaces/IACLManager.sol';
1516
import {IAToken} from '../../src/contracts/interfaces/IAToken.sol';
1617
import {IPool} from '../../src/contracts/interfaces/IPool.sol';
1718
import {Errors} from '../../src/contracts/protocol/libraries/helpers/Errors.sol';
@@ -23,7 +24,7 @@ contract ConfigureHorizonPhaseOneTest is Test, ConfigureHorizonPhaseOne {
2324
}
2425
}
2526

26-
contract HorizonListingBaseTest is Test {
27+
abstract contract HorizonListingBaseTest is Test {
2728
using ReserveConfiguration for DataTypes.ReserveConfigurationMap;
2829

2930
IPool internal pool;
@@ -71,6 +72,15 @@ contract HorizonListingBaseTest is Test {
7172
variableDebtTokenImpl = variableDebtTokenImpl_;
7273
}
7374

75+
function getListingExecutor() internal view virtual returns (address);
76+
77+
function test_listingExecutor() public {
78+
assertEq(
79+
IACLManager(pool.ADDRESSES_PROVIDER().getACLManager()).isPoolAdmin(getListingExecutor()),
80+
false
81+
);
82+
}
83+
7484
function test_getConfiguration(address token, TokenListingParams memory params) private {
7585
DataTypes.ReserveConfigurationMap memory config = pool.getConfiguration(token);
7686
assertEq(config.getSupplyCap(), params.supplyCap);
@@ -86,6 +96,7 @@ contract HorizonListingBaseTest is Test {
8696
assertEq(config.getLiquidationBonus(), params.liquidationBonus);
8797
assertEq(config.getDebtCeiling(), params.debtCeiling);
8898
assertEq(config.getLiquidationProtocolFee(), params.liqProtocolFee);
99+
assertEq(config.getPaused(), true);
89100
}
90101

91102
function test_interestRateStrategy(address token, TokenListingParams memory params) private {
@@ -162,6 +173,9 @@ contract HorizonListingBaseTest is Test {
162173
}
163174

164175
contract HorizonListingMainnetTest is HorizonListingBaseTest {
176+
address internal constant DEPLOYER = 0xA22f39d5fEb10489F7FA84C2C545BAc4EA48eBB7;
177+
address internal constant LISTING_EXECUTOR = 0xf046907a4371F7F027113bf751F3347459a08b71;
178+
165179
address internal constant GHO_ADDRESS = 0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f;
166180
address internal constant USDC_ADDRESS = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
167181
address internal constant RLUSD_ADDRESS = 0x8292Bb45bf1Ee4d140127049757C2E0fF06317eD;
@@ -200,6 +214,10 @@ contract HorizonListingMainnetTest is HorizonListingBaseTest {
200214
function setUp() public virtual {
201215
vm.createSelectFork('mainnet');
202216
}
217+
218+
function getListingExecutor() internal pure override returns (address) {
219+
return LISTING_EXECUTOR;
220+
}
203221
}
204222

205223
contract HorizonPhaseOneListingTest is HorizonListingMainnetTest, Default {

0 commit comments

Comments
 (0)