Skip to content

Commit

Permalink
fix: revert all script changes
Browse files Browse the repository at this point in the history
  • Loading branch information
sakulstra committed Jan 30, 2025
1 parent e18d81a commit 2821339
Show file tree
Hide file tree
Showing 9 changed files with 116 additions and 96 deletions.
93 changes: 11 additions & 82 deletions src/deployments/contracts/procedures/AaveV3SetupProcedure.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {TransparentUpgradeableProxy} from 'openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol';
import '../../interfaces/IMarketReportTypes.sol';
import {Ownable} from '../../../contracts/dependencies/openzeppelin/contracts/Ownable.sol';
import {ACLManager} from '../../../contracts/protocol/configuration/ACLManager.sol';
Expand All @@ -11,8 +10,6 @@ import {PoolAddressesProvider} from '../../../contracts/protocol/configuration/P
import {PoolAddressesProviderRegistry} from '../../../contracts/protocol/configuration/PoolAddressesProviderRegistry.sol';
import {IEmissionManager} from '../../../contracts/rewards/interfaces/IEmissionManager.sol';
import {IRewardsController} from '../../../contracts/rewards/interfaces/IRewardsController.sol';
import {Collector} from '../../../contracts/treasury/Collector.sol';
import {RevenueSplitter} from '../../../contracts/treasury/RevenueSplitter.sol';

contract AaveV3SetupProcedure {
error MarketOwnerMustBeSet();
Expand All @@ -30,14 +27,6 @@ contract AaveV3SetupProcedure {
address priceOracleSentinel;
}

struct TreasuryInput {
address treasuryProxy;
address treasuryPartner;
uint16 treasurySplitPercent;
address aclAdmin;
bytes32 salt;
}

function _initialDeployment(
address providerRegistry,
address marketOwner,
Expand Down Expand Up @@ -70,17 +59,17 @@ contract AaveV3SetupProcedure {
_validateMarketSetup(roles);

SetupReport memory report = _setupPoolAddressesProvider(
AddressProviderInput({
initialReport: initialReport,
poolImplementation: poolImplementation,
poolConfiguratorImplementation: poolConfiguratorImplementation,
protocolDataProvider: protocolDataProvider,
poolAdmin: roles.poolAdmin,
aaveOracle: aaveOracle,
rewardsControllerProxy: config.incentivesProxy,
rewardsControllerImplementation: rewardsControllerImplementation,
priceOracleSentinel: priceOracleSentinel
})
AddressProviderInput(
initialReport,
poolImplementation,
poolConfiguratorImplementation,
protocolDataProvider,
roles.poolAdmin,
aaveOracle,
config.incentivesProxy,
rewardsControllerImplementation,
priceOracleSentinel
)
);

report.aclManager = _setupACL(
Expand All @@ -91,16 +80,6 @@ contract AaveV3SetupProcedure {
config.flashLoanPremiumToProtocol
);

(report.treasuryProxy, report.treasuryImplementation, report.revenueSplitter) = _setupTreasury(
TreasuryInput({
treasuryProxy: config.treasury,
treasuryPartner: config.treasuryPartner,
treasurySplitPercent: config.treasurySplitPercent,
aclAdmin: roles.poolAdmin,
salt: config.salt
})
);

_transferMarketOwnership(roles, initialReport);

return report;
Expand Down Expand Up @@ -204,56 +183,6 @@ contract AaveV3SetupProcedure {
return aclManager;
}

function _deployAaveV3Treasury(
address aclAdmin,
bytes32 salt
) internal returns (address treasuryProxy, address treasuryImplementation) {
if (salt != '') {
treasuryImplementation = address(new Collector{salt: salt}());

treasuryProxy = address(
new TransparentUpgradeableProxy{salt: salt}(
treasuryImplementation,
aclAdmin,
abi.encodeWithSelector(Collector.initialize.selector, 100_000, aclAdmin)
)
);
} else {
treasuryImplementation = address(new Collector());

treasuryProxy = address(
new TransparentUpgradeableProxy(
treasuryImplementation,
aclAdmin,
abi.encodeWithSelector(Collector.initialize.selector, 100_000, aclAdmin)
)
);
}
}

function _setupTreasury(
TreasuryInput memory input
)
internal
returns (address treasuryProxy, address treasuryImplementation, address revenueSplitter)
{
if (input.treasuryProxy == address(0)) {
(treasuryProxy, treasuryImplementation) = _deployAaveV3Treasury(input.aclAdmin, input.salt);
} else {
treasuryProxy = input.treasuryProxy;
}

if (
input.treasuryPartner != address(0) &&
input.treasurySplitPercent > 0 &&
input.treasurySplitPercent < 100_00
) {
revenueSplitter = address(
new RevenueSplitter(treasuryProxy, input.treasuryPartner, input.treasurySplitPercent)
);
}
}

function _configureFlashloanParams(
ACLManager manager,
address poolConfiguratorProxy,
Expand Down
55 changes: 55 additions & 0 deletions src/deployments/contracts/procedures/AaveV3TreasuryProcedure.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {TransparentUpgradeableProxy} from 'openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol';
import {Collector} from '../../../contracts/treasury/Collector.sol';
import '../../interfaces/IMarketReportTypes.sol';

contract AaveV3TreasuryProcedure {
struct TreasuryReport {
address treasuryImplementation;
address treasury;
}

function _deployAaveV3Treasury(
address poolAdmin,
bytes32 collectorSalt
) internal returns (TreasuryReport memory) {
TreasuryReport memory treasuryReport;
bytes32 salt = collectorSalt;

if (salt != '') {
Collector treasuryImplementation = new Collector{salt: salt}();
treasuryReport.treasuryImplementation = address(treasuryImplementation);

treasuryReport.treasury = address(
new TransparentUpgradeableProxy{salt: salt}(
treasuryReport.treasuryImplementation,
poolAdmin,
abi.encodeWithSelector(
treasuryImplementation.initialize.selector,
100_000,
poolAdmin
)
)
);
} else {
Collector treasuryImplementation = new Collector();
treasuryReport.treasuryImplementation = address(treasuryImplementation);

treasuryReport.treasury = address(
new TransparentUpgradeableProxy(
treasuryReport.treasuryImplementation,
poolAdmin,
abi.encodeWithSelector(
treasuryImplementation.initialize.selector,
poolAdmin,
100_000
)
)
);
}

return treasuryReport;
}
}
6 changes: 3 additions & 3 deletions src/deployments/interfaces/IMarketReportTypes.sol
Original file line number Diff line number Diff line change
Expand Up @@ -164,15 +164,15 @@ struct SetupReport {
address poolConfiguratorProxy;
address rewardsControllerProxy;
address aclManager;
address treasuryProxy;
address treasuryImplementation;
address revenueSplitter;
}

struct PeripheryReport {
address aaveOracle;
address treasury;
address treasuryImplementation;
address emissionManager;
address rewardsControllerImplementation;
address revenueSplitter;
}

struct ParaswapReport {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ library AaveV3BatchOrchestration {
);

PeripheryReport memory peripheryReport = _deployPeripherals(
roles,
config,
initialReport.poolAddressesProvider,
address(setupBatch)
Expand Down Expand Up @@ -170,9 +171,9 @@ library AaveV3BatchOrchestration {
PeripheryReport memory peripheryReport,
AaveV3TokensBatch.TokensReport memory tokensReport
) internal returns (ConfigEngineReport memory) {
address treasury = setupReport.treasuryProxy;
if (setupReport.revenueSplitter != address(0)) {
treasury = setupReport.revenueSplitter;
address treasury = peripheryReport.treasury;
if (peripheryReport.revenueSplitter != address(0)) {
treasury = peripheryReport.revenueSplitter;
}

AaveV3HelpersBatchOne helpersBatchOne = new AaveV3HelpersBatchOne(
Expand Down Expand Up @@ -235,11 +236,13 @@ library AaveV3BatchOrchestration {
}

function _deployPeripherals(
Roles memory roles,
MarketConfig memory config,
address poolAddressesProvider,
address setupBatch
) internal returns (PeripheryReport memory) {
AaveV3PeripheryBatch peripheryBatch = new AaveV3PeripheryBatch(
roles.poolAdmin,
config,
poolAddressesProvider,
setupBatch
Expand Down Expand Up @@ -309,8 +312,8 @@ library AaveV3BatchOrchestration {
report.paraSwapLiquiditySwapAdapter = paraswapReport.paraSwapLiquiditySwapAdapter;
report.paraSwapRepayAdapter = paraswapReport.paraSwapRepayAdapter;
report.paraSwapWithdrawSwapAdapter = paraswapReport.paraSwapWithdrawSwapAdapter;
report.treasuryImplementation = setupReport.treasuryImplementation;
report.treasury = setupReport.treasuryProxy;
report.treasuryImplementation = peripheryReport.treasuryImplementation;
report.treasury = peripheryReport.treasury;
report.poolProxy = setupReport.poolProxy;
report.poolConfiguratorProxy = setupReport.poolConfiguratorProxy;
report.rewardsControllerProxy = setupReport.rewardsControllerProxy;
Expand All @@ -324,7 +327,7 @@ library AaveV3BatchOrchestration {
report.staticATokenFactoryProxy = staticATokenReport.staticATokenFactoryProxy;
report.staticATokenImplementation = staticATokenReport.staticATokenImplementation;
report.transparentProxyFactory = staticATokenReport.transparentProxyFactory;
report.revenueSplitter = setupReport.revenueSplitter;
report.revenueSplitter = peripheryReport.revenueSplitter;

return report;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,49 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {AaveV3TreasuryProcedure} from '../../../contracts/procedures/AaveV3TreasuryProcedure.sol';
import {AaveV3OracleProcedure} from '../../../contracts/procedures/AaveV3OracleProcedure.sol';
import {AaveV3IncentiveProcedure} from '../../../contracts/procedures/AaveV3IncentiveProcedure.sol';
import {AaveV3DefaultRateStrategyProcedure} from '../../../contracts/procedures/AaveV3DefaultRateStrategyProcedure.sol';
import {Ownable} from '../../../../contracts/dependencies/openzeppelin/contracts/Ownable.sol';
import '../../../interfaces/IMarketReportTypes.sol';
import {IRewardsController} from '../../../../contracts/rewards/interfaces/IRewardsController.sol';
import {RevenueSplitter} from '../../../../contracts/treasury/RevenueSplitter.sol';

contract AaveV3PeripheryBatch is AaveV3OracleProcedure, AaveV3IncentiveProcedure {
contract AaveV3PeripheryBatch is
AaveV3TreasuryProcedure,
AaveV3OracleProcedure,
AaveV3IncentiveProcedure
{
PeripheryReport internal _report;

constructor(MarketConfig memory config, address poolAddressesProvider, address setupBatch) {
constructor(
address poolAdmin,
MarketConfig memory config,
address poolAddressesProvider,
address setupBatch
) {
_report.aaveOracle = _deployAaveOracle(config.oracleDecimals, poolAddressesProvider);

if (config.treasury == address(0)) {
TreasuryReport memory treasuryReport = _deployAaveV3Treasury(poolAdmin, config.salt);

_report.treasury = treasuryReport.treasury;
_report.treasuryImplementation = treasuryReport.treasuryImplementation;
} else {
_report.treasury = config.treasury;
}

if (
config.treasuryPartner != address(0) &&
config.treasurySplitPercent > 0 &&
config.treasurySplitPercent < 100_00
) {
_report.revenueSplitter = address(
new RevenueSplitter(_report.treasury, config.treasuryPartner, config.treasurySplitPercent)
);
}

if (config.incentivesProxy == address(0)) {
(_report.emissionManager, _report.rewardsControllerImplementation) = _deployIncentives(
setupBatch
Expand Down
3 changes: 2 additions & 1 deletion tests/deployments/AaveV3BatchTests.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ contract AaveV3BatchTests is BatchTestProcedures {

function test4PeripheralsRelease() public {
new AaveV3PeripheryBatch(
roles.poolAdmin,
config,
marketReportOne.poolAddressesProvider,
address(aaveV3SetupOne)
Expand Down Expand Up @@ -188,7 +189,7 @@ contract AaveV3BatchTests is BatchTestProcedures {
miscReport.defaultInterestRateStrategy,
peripheryReportOne.aaveOracle,
setupReportTwo.rewardsControllerProxy,
setupReportTwo.treasuryProxy,
peripheryReportOne.treasury,
tokensReport.aToken,
tokensReport.variableDebtToken
);
Expand Down
1 change: 0 additions & 1 deletion tests/deployments/AaveV3PermissionsTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
pragma solidity ^0.8.0;

import 'forge-std/Test.sol';
import {IAccessControl} from 'openzeppelin-contracts/contracts/access/IAccessControl.sol';
import {Ownable} from '../../src/contracts/dependencies/openzeppelin/contracts/Ownable.sol';
import {IPoolAddressesProvider} from '../../src/contracts/interfaces/IPoolAddressesProvider.sol';
import '../../src/deployments/interfaces/IMarketReportTypes.sol';
Expand Down
4 changes: 3 additions & 1 deletion tests/deployments/DeploymentsGasLimits.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ contract DeploymentsGasLimits is BatchTestProcedures {

function test5PeripheralsRelease() public {
new AaveV3PeripheryBatch(
roles.poolAdmin,
config,
marketReportOne.poolAddressesProvider,
address(aaveV3SetupOne)
Expand Down Expand Up @@ -173,7 +174,7 @@ contract DeploymentsGasLimits is BatchTestProcedures {
miscReport.defaultInterestRateStrategy,
peripheryReportOne.aaveOracle,
setupReportTwo.rewardsControllerProxy,
setupReportTwo.treasuryProxy,
peripheryReportOne.treasury,
tokensReport.aToken,
tokensReport.variableDebtToken
);
Expand All @@ -191,6 +192,7 @@ contract DeploymentsGasLimits is BatchTestProcedures {
config.treasuryPartner = address(1);
config.treasurySplitPercent = 5000;
new AaveV3PeripheryBatch(
roles.poolAdmin,
config,
marketReportOne.poolAddressesProvider,
address(aaveV3SetupOne)
Expand Down
1 change: 1 addition & 0 deletions tests/utils/BatchTestProcedures.sol
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ contract BatchTestProcedures is Test, DeployUtils, FfiUtils, DefaultMarketInput
);

peripheryReport = AaveV3BatchOrchestration._deployPeripherals(
roles,
config,
initialReport.poolAddressesProvider,
address(setupContract)
Expand Down

0 comments on commit 2821339

Please sign in to comment.