@@ -1011,148 +1011,216 @@ contract DeployScroll is DeterminsticDeployment {
1011
1011
**********************/
1012
1012
1013
1013
function initializeScrollChain () private {
1014
- ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).initialize (
1015
- notnull (L1_MESSAGE_QUEUE_PROXY_ADDR),
1016
- notnull (L1_MULTIPLE_VERSION_ROLLUP_VERIFIER_ADDR),
1017
- MAX_TX_IN_CHUNK
1018
- );
1014
+ if (getInitializeCount (L1_SCROLL_CHAIN_PROXY_ADDR) == 0 ) {
1015
+ ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).initialize (
1016
+ notnull (L1_MESSAGE_QUEUE_PROXY_ADDR),
1017
+ notnull (L1_MULTIPLE_VERSION_ROLLUP_VERIFIER_ADDR),
1018
+ MAX_TX_IN_CHUNK
1019
+ );
1020
+ }
1019
1021
1020
- ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).addSequencer (L1_COMMIT_SENDER_ADDR);
1021
- ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).addProver (L1_FINALIZE_SENDER_ADDR);
1022
+ if (! ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).isSequencer (L1_COMMIT_SENDER_ADDR)) {
1023
+ ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).addSequencer (L1_COMMIT_SENDER_ADDR);
1024
+ }
1025
+ if (! ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).isProver (L1_FINALIZE_SENDER_ADDR)) {
1026
+ ScrollChain (L1_SCROLL_CHAIN_PROXY_ADDR).addProver (L1_FINALIZE_SENDER_ADDR);
1027
+ }
1022
1028
}
1023
1029
1024
1030
function initializeL2GasPriceOracle () private {
1025
- L2GasPriceOracle (L2_GAS_PRICE_ORACLE_PROXY_ADDR).initialize (
1026
- 21000 , // _txGas
1027
- 53000 , // _txGasContractCreation
1028
- 4 , // _zeroGas
1029
- 16 // _nonZeroGas
1030
- );
1031
-
1032
- L2GasPriceOracle (L2_GAS_PRICE_ORACLE_PROXY_ADDR).updateWhitelist (L1_WHITELIST_ADDR);
1031
+ if (getInitializeCount (L2_GAS_PRICE_ORACLE_PROXY_ADDR) == 0 ) {
1032
+ L2GasPriceOracle (L2_GAS_PRICE_ORACLE_PROXY_ADDR).initialize (
1033
+ 21000 , // _txGas
1034
+ 53000 , // _txGasContractCreation
1035
+ 4 , // _zeroGas
1036
+ 16 // _nonZeroGas
1037
+ );
1038
+ }
1039
+ if (L2GasPriceOracle (L2_GAS_PRICE_ORACLE_PROXY_ADDR).whitelist () != L1_WHITELIST_ADDR) {
1040
+ L2GasPriceOracle (L2_GAS_PRICE_ORACLE_PROXY_ADDR).updateWhitelist (L1_WHITELIST_ADDR);
1041
+ }
1033
1042
}
1034
1043
1035
1044
function initializeL1MessageQueue () private {
1036
- L1MessageQueueWithGasPriceOracle (L1_MESSAGE_QUEUE_PROXY_ADDR).initialize (
1037
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR),
1038
- notnull (L1_SCROLL_CHAIN_PROXY_ADDR),
1039
- notnull (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR),
1040
- notnull (L2_GAS_PRICE_ORACLE_PROXY_ADDR),
1041
- MAX_L1_MESSAGE_GAS_LIMIT
1042
- );
1043
-
1044
- L1MessageQueueWithGasPriceOracle (L1_MESSAGE_QUEUE_PROXY_ADDR).initializeV2 ();
1045
+ if (getInitializeCount (L1_MESSAGE_QUEUE_PROXY_ADDR) == 0 ) {
1046
+ L1MessageQueueWithGasPriceOracle (L1_MESSAGE_QUEUE_PROXY_ADDR).initialize (
1047
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR),
1048
+ notnull (L1_SCROLL_CHAIN_PROXY_ADDR),
1049
+ notnull (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR),
1050
+ notnull (L2_GAS_PRICE_ORACLE_PROXY_ADDR),
1051
+ MAX_L1_MESSAGE_GAS_LIMIT
1052
+ );
1053
+ }
1054
+ if (
1055
+ getInitializeCount (L1_MESSAGE_QUEUE_PROXY_ADDR) == 0 || getInitializeCount (L1_MESSAGE_QUEUE_PROXY_ADDR) == 1
1056
+ ) {
1057
+ L1MessageQueueWithGasPriceOracle (L1_MESSAGE_QUEUE_PROXY_ADDR).initializeV2 ();
1058
+ }
1045
1059
}
1046
1060
1047
1061
function initializeL1ScrollMessenger () private {
1048
- L1ScrollMessenger (payable (L1_SCROLL_MESSENGER_PROXY_ADDR)).initialize (
1049
- notnull (L2_SCROLL_MESSENGER_PROXY_ADDR),
1050
- notnull (L1_FEE_VAULT_ADDR),
1051
- notnull (L1_SCROLL_CHAIN_PROXY_ADDR),
1052
- notnull (L1_MESSAGE_QUEUE_PROXY_ADDR)
1053
- );
1062
+ if (getInitializeCount (L1_SCROLL_MESSENGER_PROXY_ADDR) == 0 ) {
1063
+ L1ScrollMessenger (payable (L1_SCROLL_MESSENGER_PROXY_ADDR)).initialize (
1064
+ notnull (L2_SCROLL_MESSENGER_PROXY_ADDR),
1065
+ notnull (L1_FEE_VAULT_ADDR),
1066
+ notnull (L1_SCROLL_CHAIN_PROXY_ADDR),
1067
+ notnull (L1_MESSAGE_QUEUE_PROXY_ADDR)
1068
+ );
1069
+ }
1054
1070
}
1055
1071
1056
1072
function initializeEnforcedTxGateway () private {
1057
- EnforcedTxGateway (payable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR)).initialize (
1058
- notnull (L1_MESSAGE_QUEUE_PROXY_ADDR),
1059
- notnull (L1_FEE_VAULT_ADDR)
1060
- );
1073
+ if (getInitializeCount (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR) == 0 ) {
1074
+ EnforcedTxGateway (payable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR)).initialize (
1075
+ notnull (L1_MESSAGE_QUEUE_PROXY_ADDR),
1076
+ notnull (L1_FEE_VAULT_ADDR)
1077
+ );
1078
+ }
1061
1079
1062
1080
// disable gateway
1063
- EnforcedTxGateway (payable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR)).setPause (true );
1081
+ if (! EnforcedTxGateway (payable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR)).paused ()) {
1082
+ EnforcedTxGateway (payable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR)).setPause (true );
1083
+ }
1064
1084
}
1065
1085
1066
1086
function initializeL1GatewayRouter () private {
1067
- L1GatewayRouter (L1_GATEWAY_ROUTER_PROXY_ADDR).initialize (
1068
- notnull (L1_ETH_GATEWAY_PROXY_ADDR),
1069
- notnull (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR)
1070
- );
1087
+ if (getInitializeCount (L1_GATEWAY_ROUTER_PROXY_ADDR) == 0 ) {
1088
+ L1GatewayRouter (L1_GATEWAY_ROUTER_PROXY_ADDR).initialize (
1089
+ notnull (L1_ETH_GATEWAY_PROXY_ADDR),
1090
+ notnull (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR)
1091
+ );
1092
+ }
1071
1093
}
1072
1094
1073
1095
function initializeL1CustomERC20Gateway () private {
1074
- L1CustomERC20Gateway (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).initialize (
1075
- notnull (L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR),
1076
- notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1077
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1078
- );
1096
+ if (getInitializeCount (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR) == 0 ) {
1097
+ L1CustomERC20Gateway (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).initialize (
1098
+ notnull (L2_CUSTOM_ERC20_GATEWAY_PROXY_ADDR),
1099
+ notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1100
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1101
+ );
1102
+ }
1079
1103
}
1080
1104
1081
1105
function initializeL1ERC1155Gateway () private {
1082
- L1ERC1155Gateway (L1_ERC1155_GATEWAY_PROXY_ADDR).initialize (
1083
- notnull (L2_ERC1155_GATEWAY_PROXY_ADDR),
1084
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1085
- );
1106
+ if (getInitializeCount (L1_ERC1155_GATEWAY_PROXY_ADDR) == 0 ) {
1107
+ L1ERC1155Gateway (L1_ERC1155_GATEWAY_PROXY_ADDR).initialize (
1108
+ notnull (L2_ERC1155_GATEWAY_PROXY_ADDR),
1109
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1110
+ );
1111
+ }
1086
1112
}
1087
1113
1088
1114
function initializeL1ERC721Gateway () private {
1089
- L1ERC721Gateway (L1_ERC721_GATEWAY_PROXY_ADDR).initialize (
1090
- notnull (L2_ERC721_GATEWAY_PROXY_ADDR),
1091
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1092
- );
1115
+ if (getInitializeCount (L1_ERC721_GATEWAY_PROXY_ADDR) == 0 ) {
1116
+ L1ERC721Gateway (L1_ERC721_GATEWAY_PROXY_ADDR).initialize (
1117
+ notnull (L2_ERC721_GATEWAY_PROXY_ADDR),
1118
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1119
+ );
1120
+ }
1093
1121
}
1094
1122
1095
1123
function initializeL1ETHGateway () private {
1096
- L1ETHGateway (L1_ETH_GATEWAY_PROXY_ADDR).initialize (
1097
- notnull (L2_ETH_GATEWAY_PROXY_ADDR),
1098
- notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1099
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1100
- );
1124
+ if (getInitializeCount (L1_ETH_GATEWAY_PROXY_ADDR) == 0 ) {
1125
+ L1ETHGateway (L1_ETH_GATEWAY_PROXY_ADDR).initialize (
1126
+ notnull (L2_ETH_GATEWAY_PROXY_ADDR),
1127
+ notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1128
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1129
+ );
1130
+ }
1101
1131
}
1102
1132
1103
1133
function initializeL1StandardERC20Gateway () private {
1104
- L1StandardERC20Gateway (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR).initialize (
1105
- notnull (L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR),
1106
- notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1107
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR),
1108
- notnull (L2_SCROLL_STANDARD_ERC20_ADDR),
1109
- notnull (L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR)
1110
- );
1134
+ if (getInitializeCount (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR) == 0 ) {
1135
+ L1StandardERC20Gateway (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR).initialize (
1136
+ notnull (L2_STANDARD_ERC20_GATEWAY_PROXY_ADDR),
1137
+ notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1138
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR),
1139
+ notnull (L2_SCROLL_STANDARD_ERC20_ADDR),
1140
+ notnull (L2_SCROLL_STANDARD_ERC20_FACTORY_ADDR)
1141
+ );
1142
+ }
1111
1143
}
1112
1144
1113
1145
function initializeL1WETHGateway () private {
1114
- L1WETHGateway (payable (L1_WETH_GATEWAY_PROXY_ADDR)).initialize (
1115
- notnull (L2_WETH_GATEWAY_PROXY_ADDR),
1116
- notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1117
- notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1118
- );
1146
+ if (getInitializeCount (L1_WETH_GATEWAY_PROXY_ADDR) == 0 ) {
1147
+ L1WETHGateway (payable (L1_WETH_GATEWAY_PROXY_ADDR)).initialize (
1148
+ notnull (L2_WETH_GATEWAY_PROXY_ADDR),
1149
+ notnull (L1_GATEWAY_ROUTER_PROXY_ADDR),
1150
+ notnull (L1_SCROLL_MESSENGER_PROXY_ADDR)
1151
+ );
1152
+ }
1119
1153
1120
1154
// set WETH gateway in router
1121
1155
{
1122
1156
address [] memory _tokens = new address [](1 );
1123
1157
_tokens[0 ] = notnull (L1_WETH_ADDR);
1124
1158
address [] memory _gateways = new address [](1 );
1125
1159
_gateways[0 ] = notnull (L1_WETH_GATEWAY_PROXY_ADDR);
1126
- L1GatewayRouter (L1_GATEWAY_ROUTER_PROXY_ADDR).setERC20Gateway (_tokens, _gateways);
1160
+ if (L1GatewayRouter (L1_GATEWAY_ROUTER_PROXY_ADDR).ERC20Gateway (_tokens[0 ]) != _gateways[0 ]) {
1161
+ L1GatewayRouter (L1_GATEWAY_ROUTER_PROXY_ADDR).setERC20Gateway (_tokens, _gateways);
1162
+ }
1127
1163
}
1128
1164
}
1129
1165
1130
1166
function initializeL1Whitelist () private {
1131
1167
address [] memory accounts = new address [](1 );
1132
1168
accounts[0 ] = L1_GAS_ORACLE_SENDER_ADDR;
1133
- Whitelist (L1_WHITELIST_ADDR).updateWhitelistStatus (accounts, true );
1169
+ if (! Whitelist (L1_WHITELIST_ADDR).isSenderAllowed (accounts[0 ])) {
1170
+ Whitelist (L1_WHITELIST_ADDR).updateWhitelistStatus (accounts, true );
1171
+ }
1134
1172
}
1135
1173
1136
1174
function transferL1ContractOwnership () private {
1137
1175
if (DEPLOYER_ADDR == OWNER_ADDR) {
1138
1176
return ;
1139
1177
}
1140
1178
1141
- Ownable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1142
- Ownable (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1143
- Ownable (L1_ERC1155_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1144
- Ownable (L1_ERC721_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1145
- Ownable (L1_ETH_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1146
- Ownable (L1_GATEWAY_ROUTER_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1147
- Ownable (L1_MESSAGE_QUEUE_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1148
- Ownable (L1_SCROLL_MESSENGER_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1149
- Ownable (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1150
- Ownable (L1_WETH_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1151
- Ownable (L2_GAS_PRICE_ORACLE_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1152
- Ownable (L1_MULTIPLE_VERSION_ROLLUP_VERIFIER_ADDR).transferOwnership (OWNER_ADDR);
1153
- Ownable (L1_PROXY_ADMIN_ADDR).transferOwnership (OWNER_ADDR);
1154
- Ownable (L1_SCROLL_CHAIN_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1155
- Ownable (L1_WHITELIST_ADDR).transferOwnership (OWNER_ADDR);
1179
+ if (Ownable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1180
+ Ownable (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1181
+ }
1182
+ if (Ownable (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1183
+ Ownable (L1_CUSTOM_ERC20_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1184
+ }
1185
+ if (Ownable (L1_ERC1155_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1186
+ Ownable (L1_ERC1155_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1187
+ }
1188
+ if (Ownable (L1_ERC721_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1189
+ Ownable (L1_ERC721_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1190
+ }
1191
+ if (Ownable (L1_ETH_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1192
+ Ownable (L1_ETH_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1193
+ }
1194
+ if (Ownable (L1_GATEWAY_ROUTER_PROXY_ADDR).owner () != OWNER_ADDR) {
1195
+ Ownable (L1_GATEWAY_ROUTER_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1196
+ }
1197
+ if (Ownable (L1_MESSAGE_QUEUE_PROXY_ADDR).owner () != OWNER_ADDR) {
1198
+ Ownable (L1_MESSAGE_QUEUE_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1199
+ }
1200
+ if (Ownable (L1_SCROLL_MESSENGER_PROXY_ADDR).owner () != OWNER_ADDR) {
1201
+ Ownable (L1_SCROLL_MESSENGER_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1202
+ }
1203
+ if (Ownable (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1204
+ Ownable (L1_STANDARD_ERC20_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1205
+ }
1206
+ if (Ownable (L1_WETH_GATEWAY_PROXY_ADDR).owner () != OWNER_ADDR) {
1207
+ Ownable (L1_WETH_GATEWAY_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1208
+ }
1209
+ if (Ownable (L2_GAS_PRICE_ORACLE_PROXY_ADDR).owner () != OWNER_ADDR) {
1210
+ Ownable (L2_GAS_PRICE_ORACLE_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1211
+ }
1212
+ if (Ownable (L1_MULTIPLE_VERSION_ROLLUP_VERIFIER_ADDR).owner () != OWNER_ADDR) {
1213
+ Ownable (L1_MULTIPLE_VERSION_ROLLUP_VERIFIER_ADDR).transferOwnership (OWNER_ADDR);
1214
+ }
1215
+ if (Ownable (L1_PROXY_ADMIN_ADDR).owner () != OWNER_ADDR) {
1216
+ Ownable (L1_PROXY_ADMIN_ADDR).transferOwnership (OWNER_ADDR);
1217
+ }
1218
+ if (Ownable (L1_SCROLL_CHAIN_PROXY_ADDR).owner () != OWNER_ADDR) {
1219
+ Ownable (L1_SCROLL_CHAIN_PROXY_ADDR).transferOwnership (OWNER_ADDR);
1220
+ }
1221
+ if (Ownable (L1_WHITELIST_ADDR).owner () != OWNER_ADDR) {
1222
+ Ownable (L1_WHITELIST_ADDR).transferOwnership (OWNER_ADDR);
1223
+ }
1156
1224
}
1157
1225
1158
1226
/**********************
0 commit comments