Skip to content

Commit bd1002b

Browse files
feat: scroll deploy scripts (#212)
* feat: scroll deploy scripts * fix: chainId * fix: add base payload for scroll config engine
1 parent 0d01980 commit bd1002b

11 files changed

Lines changed: 109 additions & 9 deletions

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ deploy-engine-met :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineM
2424
deploy-engine-bas :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineBas --rpc-url base --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
2525
deploy-engine-gno :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineGno --rpc-url gnosis --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
2626
deploy-engine-bnb :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineBnb --rpc-url bnb --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
27+
deploy-engine-scroll :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineScroll --rpc-url scroll --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
2728
deploy-engine-zkevm :; forge script scripts/AaveV3ConfigEngine.s.sol:DeployEngineZkEvm --rpc-url zkevm --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
2829

2930
deploy-rates-factory-eth :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryEth --rpc-url mainnet --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
@@ -33,6 +34,7 @@ deploy-rates-factory-arb :; forge script scripts/V3RateStrategyFactory.s.sol:Dep
3334
deploy-rates-factory-ava :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryAva --rpc-url avalanche --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
3435
deploy-rates-factory-met :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryMet --rpc-url metis --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
3536
deploy-rates-factory-bas :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryBas --rpc-url base --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
37+
deploy-rates-factory-scroll :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryScroll--rpc-url scroll --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
3638
deploy-rates-factory-gno :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryGno --rpc-url gnosis --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
3739
deploy-rates-factory-bnb :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryBnb --rpc-url bnb --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
3840
deploy-rates-factory-zkevm :; forge script scripts/V3RateStrategyFactory.s.sol:DeployRatesFactoryZkEvm --rpc-url zkevm --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
@@ -50,10 +52,12 @@ deploy-steward-met :; forge script scripts/RiskStewards.s.sol:DeployMet --rpc-ur
5052
deploy-steward-bas :; forge script scripts/RiskStewards.s.sol:DeployBas --rpc-url base --broadcast --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5153
deploy-steward-gno :; forge script scripts/RiskStewards.s.sol:DeployGno --rpc-url gnosis --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5254
deploy-steward-bnb :; forge script scripts/RiskStewards.s.sol:DeployBnb --rpc-url bnb --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
55+
deploy-steward-scroll :; forge script scripts/RiskStewards.s.sol:DeployScroll --rpc-url scroll --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5356
deploy-steward-zkevm :; forge script scripts/RiskStewards.s.sol:DeployZkEvm --rpc-url zkevm --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5457

5558
deploy-freezing-steward-bnb :; forge script scripts/FreezingStewards.s.sol:DeployBnb --rpc-url bnb --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5659
deploy-freezing-steward-gno :; forge script scripts/FreezingStewards.s.sol:DeployGno --rpc-url gnosis --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
60+
deploy-freezing-steward-scroll :; forge script scripts/FreezingStewards.s.sol:DeployScroll --rpc-url scroll --broadcast --legacy --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5761
deploy-freezing-steward-zkevm :; forge script scripts/FreezingStewards.s.sol:DeployZkEvm --rpc-url zkevm --broadcast --legacy --ledger --legacy --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv
5862

5963
deploy-rates-factory-v2-eth :; forge script scripts/V2RateStrategyFactory.s.sol:DeployV2RatesFactoryEth --mnemonics random --rpc-url mainnet --broadcast --ledger --mnemonic-indexes ${MNEMONIC_INDEX} --sender ${LEDGER_SENDER} --verify -vvvv

foundry.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ base = "${RPC_BASE}"
2323
bnb = "${RPC_BNB}"
2424
sepolia = "${RPC_SEPOLIA}"
2525
gnosis="${RPC_GNOSIS}"
26+
scroll="${RPC_SCROLL}"
2627
zkevm = "${RPC_ZKEVM}"
2728

2829
[etherscan]
@@ -36,5 +37,6 @@ base={key="${ETHERSCAN_API_KEY_BASE}",chain=8453}
3637
bnb={key="${ETHERSCAN_API_KEY_BNB}",chainId=56,url='https://api.bscscan.com/api'}
3738
sepolia={key="${ETHERSCAN_API_KEY_MAINNET}",chainId=11155111}
3839
gnosis={key="${ETHERSCAN_API_KEY_GNOSIS}",chainId=100, url='https://api.gnosisscan.io/api'}
40+
scroll={key="${ETHERSCAN_API_KEY_SCROLL}",chainId=534352}
3941
zkevm={key="${ETHERSCAN_API_KEY_ZKEVM}",chainId=1101}
4042
# See more config options https://github.com/gakonst/foundry/tree/master/config

lib/aave-address-book

scripts/AaveV3ConfigEngine.s.sol

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import '../src/ScriptUtils.sol';
55
import {AaveV3ConfigEngine as Engine} from '../src/v3-config-engine/AaveV3ConfigEngine.sol';
66
import {IAaveV3ConfigEngine as IEngine} from '../src/v3-config-engine/IAaveV3ConfigEngine.sol';
77
import {IV3RateStrategyFactory} from '../src/v3-config-engine/IV3RateStrategyFactory.sol';
8-
import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol';
8+
import {AaveV3Ethereum, IPool, IPoolConfigurator, IAaveOracle} from 'aave-address-book/AaveV3Ethereum.sol';
99
import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol';
1010
import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
1111
import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol';
@@ -15,6 +15,7 @@ import {AaveV3Avalanche} from 'aave-address-book/AaveV3Avalanche.sol';
1515
import {AaveV3Metis} from 'aave-address-book/AaveV3Metis.sol';
1616
import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol';
1717
import {AaveV3Base} from 'aave-address-book/AaveV3Base.sol';
18+
import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol';
1819
import {CapsEngine} from '../src/v3-config-engine/libraries/CapsEngine.sol';
1920
import {BorrowEngine} from '../src/v3-config-engine/libraries/BorrowEngine.sol';
2021
import {CollateralEngine} from '../src/v3-config-engine/libraries/CollateralEngine.sol';
@@ -320,6 +321,40 @@ library DeployEngineBnbLib {
320321
}
321322
}
322323

324+
library DeployEngineScrollLib {
325+
function deploy() internal returns (address) {
326+
IEngine.EngineLibraries memory engineLibraries = IEngine.EngineLibraries({
327+
listingEngine: Create2Utils.create2Deploy('v1', type(ListingEngine).creationCode),
328+
eModeEngine: Create2Utils.create2Deploy('v1', type(EModeEngine).creationCode),
329+
borrowEngine: Create2Utils.create2Deploy('v1', type(BorrowEngine).creationCode),
330+
collateralEngine: Create2Utils.create2Deploy('v1', type(CollateralEngine).creationCode),
331+
priceFeedEngine: Create2Utils.create2Deploy('v1', type(PriceFeedEngine).creationCode),
332+
rateEngine: Create2Utils.create2Deploy('v1', type(RateEngine).creationCode),
333+
capsEngine: Create2Utils.create2Deploy('v1', type(CapsEngine).creationCode)
334+
});
335+
IEngine.EngineConstants memory engineConstants = IEngine.EngineConstants({
336+
pool: AaveV3Scroll.POOL,
337+
poolConfigurator: AaveV3Scroll.POOL_CONFIGURATOR,
338+
ratesStrategyFactory: IV3RateStrategyFactory(AaveV3Scroll.RATES_FACTORY),
339+
oracle: AaveV3Scroll.ORACLE,
340+
rewardsController: AaveV3Scroll.DEFAULT_INCENTIVES_CONTROLLER,
341+
collector: address(AaveV3Scroll.COLLECTOR)
342+
});
343+
344+
return
345+
address(
346+
new Engine(
347+
AaveV3Scroll.DEFAULT_A_TOKEN_IMPL_REV_1,
348+
AaveV3Scroll.DEFAULT_VARIABLE_DEBT_TOKEN_IMPL_REV_1,
349+
AaveV3Scroll.DEFAULT_STABLE_DEBT_TOKEN_IMPL_REV_1,
350+
engineConstants,
351+
engineLibraries
352+
)
353+
);
354+
}
355+
}
356+
357+
323358
library DeployEngineZkEvmLib {
324359
function deploy() internal returns (address) {
325360
IEngine.EngineLibraries memory engineLibraries = IEngine.EngineLibraries({
@@ -407,6 +442,12 @@ contract DeployEngineBnb is BNBScript {
407442
}
408443
}
409444

445+
contract DeployEngineScroll is ScrollScript {
446+
function run() external broadcast {
447+
DeployEngineScrollLib.deploy();
448+
}
449+
}
450+
410451
contract DeployEngineZkEvm is PolygonZkEvmScript {
411452
function run() external broadcast {
412453
DeployEngineZkEvmLib.deploy();

scripts/FreezingStewards.s.sol

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ pragma solidity ^0.8.0;
44
import '../src/ScriptUtils.sol';
55
import {FreezingSteward} from '../src/riskstewards/FreezingSteward.sol';
66
import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol';
7-
import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
87
import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol';
8+
import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol';
9+
import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
910

1011
contract DeployGno is GnosisScript {
1112
function run() external broadcast {
@@ -19,6 +20,12 @@ contract DeployBnb is BNBScript {
1920
}
2021
}
2122

23+
contract DeployScroll is ScrollScript {
24+
function run() external broadcast {
25+
new FreezingSteward(AaveV3Scroll.ACL_MANAGER, AaveV3Scroll.POOL_CONFIGURATOR);
26+
}
27+
}
28+
2229
contract DeployZkEvm is PolygonZkEvmScript {
2330
function run() external broadcast {
2431
new FreezingSteward(AaveV3PolygonZkEvm.ACL_MANAGER, AaveV3PolygonZkEvm.POOL_CONFIGURATOR);

scripts/RiskStewards.s.sol

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol';
1212
import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol';
1313
import {AaveV3Base} from 'aave-address-book/AaveV3Base.sol';
1414
import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol';
15+
import {IPoolAddressesProvider, IPool, IPoolConfigurator, IAaveOracle, IPoolDataProvider, IACLManager} from 'aave-address-book//AaveV3.sol';
1516
import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol';
17+
import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol';
1618
import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
1719

1820
contract DeployEth is EthereumScript {
@@ -105,6 +107,16 @@ contract DeployBNB is BNBScript {
105107
}
106108
}
107109

110+
contract DeployScroll is ScrollScript {
111+
function run() external broadcast {
112+
new CapsPlusRiskSteward(
113+
AaveV3Scroll.AAVE_PROTOCOL_DATA_PROVIDER,
114+
IAaveV3ConfigEngine(AaveV3Scroll.CONFIG_ENGINE),
115+
0x611439a74546888c3535B4dd119A5Cbb9f5332EA
116+
);
117+
}
118+
}
119+
108120
contract DeployZkEvm is PolygonZkEvmScript {
109121
function run() external broadcast {
110122
new CapsPlusRiskSteward(

scripts/V3RateStrategyFactory.s.sol

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import {MiscGnosis} from 'aave-address-book/MiscGnosis.sol';
1313
import {MiscBNB} from 'aave-address-book/MiscBNB.sol';
1414
import {MiscArbitrum} from 'aave-address-book/MiscArbitrum.sol';
1515
import {MiscOptimism} from 'aave-address-book/MiscOptimism.sol';
16-
import {MiscPolygonZkEvm} from 'aave-address-book/MiscPolygonZkEvm.sol';
16+
import {MiscScroll} from 'aave-address-book/MiscScroll.sol';
1717
import {AaveV3Ethereum} from 'aave-address-book/AaveV3Ethereum.sol';
18+
import {MiscPolygonZkEvm} from 'aave-address-book/MiscPolygonZkEvm.sol';
1819
import {AaveV3Optimism} from 'aave-address-book/AaveV3Optimism.sol';
1920
import {AaveV3Arbitrum} from 'aave-address-book/AaveV3Arbitrum.sol';
2021
import {AaveV3Polygon} from 'aave-address-book/AaveV3Polygon.sol';
@@ -23,6 +24,7 @@ import {AaveV3Metis} from 'aave-address-book/AaveV3Metis.sol';
2324
import {AaveV3Base} from 'aave-address-book/AaveV3Base.sol';
2425
import {AaveV3Gnosis} from 'aave-address-book/AaveV3Gnosis.sol';
2526
import {AaveV3BNB} from 'aave-address-book/AaveV3BNB.sol';
27+
import {AaveV3Scroll} from 'aave-address-book/AaveV3Scroll.sol';
2628
import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
2729
import {ITransparentProxyFactory} from 'solidity-utils/contracts/transparent-proxy/interfaces/ITransparentProxyFactory.sol';
2830
import {V3RateStrategyFactory} from '../src/v3-config-engine/V3RateStrategyFactory.sol';
@@ -184,6 +186,17 @@ library DeployRatesFactoryBnbLib {
184186
}
185187
}
186188

189+
library DeployRatesFactoryScrollLib {
190+
function deploy() internal returns (address, address[] memory) {
191+
return
192+
DeployRatesFactoryLib._createAndSetupRatesFactory(
193+
AaveV3Scroll.POOL_ADDRESSES_PROVIDER,
194+
MiscScroll.TRANSPARENT_PROXY_FACTORY,
195+
MiscScroll.PROXY_ADMIN
196+
);
197+
}
198+
}
199+
187200
library DeployRatesFactoryZkEvmLib {
188201
function deploy() internal returns (address, address[] memory) {
189202
return
@@ -249,6 +262,12 @@ contract DeployRatesFactoryBnb is BNBScript {
249262
}
250263
}
251264

265+
contract DeployRatesFactoryScroll is ScrollScript {
266+
function run() external broadcast {
267+
DeployRatesFactoryScrollLib.deploy();
268+
}
269+
}
270+
252271
contract DeployRatesFactoryZkEvm is PolygonZkEvmScript {
253272
function run() external broadcast {
254273
DeployRatesFactoryZkEvmLib.deploy();

src/ChainIds.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ library ChainIds {
1515
uint256 internal constant ARBITRUM = 42161;
1616
uint256 internal constant AVALANCHE = 43114;
1717
uint256 internal constant GNOSIS = 100;
18+
uint256 internal constant SCROLL = 534352;
1819
uint256 internal constant SEPOLIA = 11155111;
1920
uint256 internal constant HARMONY = 1666600000;
20-
uint256 internal constant SCROLL = 534352;
2121
}
2222

2323
library ChainHelpers {
@@ -47,6 +47,8 @@ library ChainHelpers {
4747
newFork = vm.createSelectFork(vm.rpcUrl('base'));
4848
} else if (chainId == ChainIds.GNOSIS) {
4949
newFork = vm.createSelectFork(vm.rpcUrl('gnosis'));
50+
} else if (chainId == ChainIds.SCROLL) {
51+
newFork = vm.createSelectFork(vm.rpcUrl('scroll'));
5052
} else if (chainId == ChainIds.ARBITRUM) {
5153
newFork = vm.createSelectFork(vm.rpcUrl('arbitrum'));
5254
} else if (chainId == ChainIds.AVALANCHE) {
@@ -55,8 +57,6 @@ library ChainHelpers {
5557
newFork = vm.createSelectFork(vm.rpcUrl('sepolia'));
5658
} else if (chainId == ChainIds.HARMONY) {
5759
newFork = vm.createSelectFork(vm.rpcUrl('harmony'));
58-
} else if (chainId == ChainIds.SCROLL) {
59-
newFork = vm.createSelectFork(vm.rpcUrl('scroll'));
6060
} else {
6161
revert UnknownChainId();
6262
}

src/v3-config-engine/AaveV3PayloadPolygonZkEvm.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {AaveV3PolygonZkEvm} from 'aave-address-book/AaveV3PolygonZkEvm.sol';
55
import './AaveV3Payload.sol';
66

77
/**
8-
* @dev Base smart contract for an Aave v3.0.1 (compatible with 3.0.0) listing on v3 Polygon.
8+
* @dev Base smart contract for an Aave v3.0.1 (compatible with 3.0.0) listing on v3 Polygon ZkEvm.
99
* @author BGD Labs
1010
*/
1111
abstract contract AaveV3PayloadPolygonZkEvm is AaveV3Payload(IEngine(AaveV3PolygonZkEvm.CONFIG_ENGINE)) {

0 commit comments

Comments
 (0)