Skip to content

Commit a80fc69

Browse files
committed
feat: l2 robust deployment script
1 parent a87c7d7 commit a80fc69

File tree

1 file changed

+112
-61
lines changed

1 file changed

+112
-61
lines changed

scripts/deterministic/DeployScroll.s.sol

Lines changed: 112 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,10 +1172,6 @@ contract DeployScroll is DeterminsticDeployment {
11721172
}
11731173

11741174
function transferL1ContractOwnership() private {
1175-
if (DEPLOYER_ADDR == OWNER_ADDR) {
1176-
return;
1177-
}
1178-
11791175
if (Ownable(L1_ENFORCED_TX_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
11801176
Ownable(L1_ENFORCED_TX_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
11811177
}
@@ -1228,113 +1224,168 @@ contract DeployScroll is DeterminsticDeployment {
12281224
**********************/
12291225

12301226
function initializeL2MessageQueue() private {
1231-
L2MessageQueue(L2_MESSAGE_QUEUE_ADDR).initialize(notnull(L2_SCROLL_MESSENGER_PROXY_ADDR));
1227+
if (getInitializeCount(L2_MESSAGE_QUEUE_ADDR) == 0) {
1228+
L2MessageQueue(L2_MESSAGE_QUEUE_ADDR).initialize(notnull(L2_SCROLL_MESSENGER_PROXY_ADDR));
1229+
}
12321230
}
12331231

12341232
function initializeL2TxFeeVault() private {
1235-
L2TxFeeVault(payable(L2_TX_FEE_VAULT_ADDR)).updateMessenger(notnull(L2_SCROLL_MESSENGER_PROXY_ADDR));
1233+
if (L2TxFeeVault(payable(L2_TX_FEE_VAULT_ADDR)).messenger() != notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)) {
1234+
L2TxFeeVault(payable(L2_TX_FEE_VAULT_ADDR)).updateMessenger(L2_SCROLL_MESSENGER_PROXY_ADDR);
1235+
}
12361236
}
12371237

12381238
function initializeL1GasPriceOracle() private {
1239-
L1GasPriceOracle(L1_GAS_PRICE_ORACLE_ADDR).updateWhitelist(notnull(L2_WHITELIST_ADDR));
1239+
if (address(L1GasPriceOracle(L1_GAS_PRICE_ORACLE_ADDR).whitelist()) != notnull(L2_WHITELIST_ADDR)) {
1240+
L1GasPriceOracle(L1_GAS_PRICE_ORACLE_ADDR).updateWhitelist(L2_WHITELIST_ADDR);
1241+
}
12401242
}
12411243

12421244
function initializeL2ScrollMessenger() private {
1243-
L2ScrollMessenger(payable(L2_SCROLL_MESSENGER_PROXY_ADDR)).initialize(notnull(L1_SCROLL_MESSENGER_PROXY_ADDR));
1245+
if (getInitializeCount(L2_SCROLL_MESSENGER_PROXY_ADDR) == 0) {
1246+
L2ScrollMessenger(payable(L2_SCROLL_MESSENGER_PROXY_ADDR)).initialize(
1247+
notnull(L1_SCROLL_MESSENGER_PROXY_ADDR)
1248+
);
1249+
}
12441250
}
12451251

12461252
function initializeL2GatewayRouter() private {
1247-
L2GatewayRouter(L2_GATEWAY_ROUTER_PROXY_ADDR).initialize(
1248-
notnull(L2_ETH_GATEWAY_PROXY_ADDR),
1249-
notnull(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR)
1250-
);
1253+
if (getInitializeCount(L2_GATEWAY_ROUTER_PROXY_ADDR) == 0) {
1254+
L2GatewayRouter(L2_GATEWAY_ROUTER_PROXY_ADDR).initialize(
1255+
notnull(L2_ETH_GATEWAY_PROXY_ADDR),
1256+
notnull(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR)
1257+
);
1258+
}
12511259
}
12521260

12531261
function initializeL2CustomERC20Gateway() private {
1254-
L2CustomERC20Gateway(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).initialize(
1255-
notnull(L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR),
1256-
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1257-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1258-
);
1262+
if (getInitializeCount(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR) == 0) {
1263+
L2CustomERC20Gateway(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).initialize(
1264+
notnull(L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR),
1265+
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1266+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1267+
);
1268+
}
12591269
}
12601270

12611271
function initializeL2ERC1155Gateway() private {
1262-
L2ERC1155Gateway(L2_ERC1155_GATEWAY_PROXY_ADDR).initialize(
1263-
notnull(L1_ERC1155_GATEWAY_PROXY_ADDR),
1264-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1265-
);
1272+
if (getInitializeCount(L2_ERC1155_GATEWAY_PROXY_ADDR) == 0) {
1273+
L2ERC1155Gateway(L2_ERC1155_GATEWAY_PROXY_ADDR).initialize(
1274+
notnull(L1_ERC1155_GATEWAY_PROXY_ADDR),
1275+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1276+
);
1277+
}
12661278
}
12671279

12681280
function initializeL2ERC721Gateway() private {
1269-
L2ERC721Gateway(L2_ERC721_GATEWAY_PROXY_ADDR).initialize(
1270-
notnull(L1_ERC721_GATEWAY_PROXY_ADDR),
1271-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1272-
);
1281+
if (getInitializeCount(L2_ERC721_GATEWAY_PROXY_ADDR) == 0) {
1282+
L2ERC721Gateway(L2_ERC721_GATEWAY_PROXY_ADDR).initialize(
1283+
notnull(L1_ERC721_GATEWAY_PROXY_ADDR),
1284+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1285+
);
1286+
}
12731287
}
12741288

12751289
function initializeL2ETHGateway() private {
1276-
L2ETHGateway(L2_ETH_GATEWAY_PROXY_ADDR).initialize(
1277-
notnull(L1_ETH_GATEWAY_PROXY_ADDR),
1278-
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1279-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1280-
);
1290+
if (getInitializeCount(L2_ETH_GATEWAY_PROXY_ADDR) == 0) {
1291+
L2ETHGateway(L2_ETH_GATEWAY_PROXY_ADDR).initialize(
1292+
notnull(L1_ETH_GATEWAY_PROXY_ADDR),
1293+
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1294+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1295+
);
1296+
}
12811297
}
12821298

12831299
function initializeL2StandardERC20Gateway() private {
1284-
L2StandardERC20Gateway(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR).initialize(
1285-
notnull(L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR),
1286-
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1287-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR),
1288-
notnull(L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR)
1289-
);
1300+
if (getInitializeCount(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR) == 0) {
1301+
L2StandardERC20Gateway(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR).initialize(
1302+
notnull(L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR),
1303+
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1304+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR),
1305+
notnull(L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR)
1306+
);
1307+
}
12901308
}
12911309

12921310
function initializeL2WETHGateway() private {
1293-
L2WETHGateway(payable(L2_WETH_GATEWAY_PROXY_ADDR)).initialize(
1294-
notnull(L1_WETH_GATEWAY_PROXY_ADDR),
1295-
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1296-
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1297-
);
1311+
if (getInitializeCount(L2_WETH_GATEWAY_PROXY_ADDR) == 0) {
1312+
L2WETHGateway(payable(L2_WETH_GATEWAY_PROXY_ADDR)).initialize(
1313+
notnull(L1_WETH_GATEWAY_PROXY_ADDR),
1314+
notnull(L2_GATEWAY_ROUTER_PROXY_ADDR),
1315+
notnull(L2_SCROLL_MESSENGER_PROXY_ADDR)
1316+
);
1317+
}
12981318

12991319
// set WETH gateway in router
13001320
{
13011321
address[] memory _tokens = new address[](1);
13021322
_tokens[0] = notnull(L2_WETH_ADDR);
13031323
address[] memory _gateways = new address[](1);
13041324
_gateways[0] = notnull(L2_WETH_GATEWAY_PROXY_ADDR);
1305-
L2GatewayRouter(L2_GATEWAY_ROUTER_PROXY_ADDR).setERC20Gateway(_tokens, _gateways);
1325+
if (L2GatewayRouter(L2_GATEWAY_ROUTER_PROXY_ADDR).ERC20Gateway(_tokens[0]) != _gateways[0]) {
1326+
L2GatewayRouter(L2_GATEWAY_ROUTER_PROXY_ADDR).setERC20Gateway(_tokens, _gateways);
1327+
}
13061328
}
13071329
}
13081330

13091331
function initializeScrollStandardERC20Factory() private {
1310-
ScrollStandardERC20Factory(L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR).transferOwnership(
1332+
if (
1333+
ScrollStandardERC20Factory(L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR).owner() !=
13111334
notnull(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR)
1312-
);
1335+
) {
1336+
ScrollStandardERC20Factory(L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR).transferOwnership(
1337+
L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR
1338+
);
1339+
}
13131340
}
13141341

13151342
function initializeL2Whitelist() private {
13161343
address[] memory accounts = new address[](1);
13171344
accounts[0] = L2_GAS_ORACLE_SENDER_ADDR;
1318-
Whitelist(L2_WHITELIST_ADDR).updateWhitelistStatus(accounts, true);
1345+
if (!Whitelist(L1_WHITELIST_ADDR).isSenderAllowed(accounts[0])) {
1346+
Whitelist(L2_WHITELIST_ADDR).updateWhitelistStatus(accounts, true);
1347+
}
13191348
}
13201349

13211350
function transferL2ContractOwnership() private {
1322-
if (DEPLOYER_ADDR == OWNER_ADDR) {
1323-
return;
1351+
if (Ownable(L1_GAS_PRICE_ORACLE_ADDR).owner() != OWNER_ADDR) {
1352+
Ownable(L1_GAS_PRICE_ORACLE_ADDR).transferOwnership(OWNER_ADDR);
1353+
}
1354+
if (Ownable(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1355+
Ownable(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1356+
}
1357+
if (Ownable(L2_ERC1155_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1358+
Ownable(L2_ERC1155_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1359+
}
1360+
if (Ownable(L2_ERC721_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1361+
Ownable(L2_ERC721_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1362+
}
1363+
if (Ownable(L2_ETH_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1364+
Ownable(L2_ETH_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1365+
}
1366+
if (Ownable(L2_GATEWAY_ROUTER_PROXY_ADDR).owner() != OWNER_ADDR) {
1367+
Ownable(L2_GATEWAY_ROUTER_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1368+
}
1369+
if (Ownable(L2_MESSAGE_QUEUE_ADDR).owner() != OWNER_ADDR) {
1370+
Ownable(L2_MESSAGE_QUEUE_ADDR).transferOwnership(OWNER_ADDR);
1371+
}
1372+
if (Ownable(L2_SCROLL_MESSENGER_PROXY_ADDR).owner() != OWNER_ADDR) {
1373+
Ownable(L2_SCROLL_MESSENGER_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1374+
}
1375+
if (Ownable(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1376+
Ownable(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1377+
}
1378+
if (Ownable(L2_TX_FEE_VAULT_ADDR).owner() != OWNER_ADDR) {
1379+
Ownable(L2_TX_FEE_VAULT_ADDR).transferOwnership(OWNER_ADDR);
1380+
}
1381+
if (Ownable(L2_WETH_GATEWAY_PROXY_ADDR).owner() != OWNER_ADDR) {
1382+
Ownable(L2_WETH_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1383+
}
1384+
if (Ownable(L2_PROXY_ADMIN_ADDR).owner() != OWNER_ADDR) {
1385+
Ownable(L2_PROXY_ADMIN_ADDR).transferOwnership(OWNER_ADDR);
1386+
}
1387+
if (Ownable(L2_WHITELIST_ADDR).owner() != OWNER_ADDR) {
1388+
Ownable(L2_WHITELIST_ADDR).transferOwnership(OWNER_ADDR);
13241389
}
1325-
1326-
Ownable(L1_GAS_PRICE_ORACLE_ADDR).transferOwnership(OWNER_ADDR);
1327-
Ownable(L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1328-
Ownable(L2_ERC1155_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1329-
Ownable(L2_ERC721_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1330-
Ownable(L2_ETH_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1331-
Ownable(L2_GATEWAY_ROUTER_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1332-
Ownable(L2_MESSAGE_QUEUE_ADDR).transferOwnership(OWNER_ADDR);
1333-
Ownable(L2_SCROLL_MESSENGER_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1334-
Ownable(L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1335-
Ownable(L2_TX_FEE_VAULT_ADDR).transferOwnership(OWNER_ADDR);
1336-
Ownable(L2_WETH_GATEWAY_PROXY_ADDR).transferOwnership(OWNER_ADDR);
1337-
Ownable(L2_PROXY_ADMIN_ADDR).transferOwnership(OWNER_ADDR);
1338-
Ownable(L2_WHITELIST_ADDR).transferOwnership(OWNER_ADDR);
13391390
}
13401391
}

0 commit comments

Comments
 (0)