@@ -21,6 +21,9 @@ import {ScrollChain} from "../../src/L1/rollup/ScrollChain.sol";
2121import {ScrollOwner} from "../../src/misc/ScrollOwner.sol " ;
2222import {Whitelist} from "../../src/L2/predeploys/Whitelist.sol " ;
2323
24+ import {SystemSignerRegistry} from "../../src/L1/system-contract/SystemSignerRegistry.sol " ;
25+
26+
2427// solhint-disable max-states-count
2528// solhint-disable state-visibility
2629// solhint-disable var-name-mixedcase
@@ -81,7 +84,8 @@ contract InitializeL1ScrollOwner is Script {
8184 configL1GatewayRouter ();
8285 configL1CustomERC20Gateway ();
8386 configL1ERC721Gateway ();
84- configL1ERC1155Gateway ();
87+ configL1ERC1155Gateway ();
88+ configSystemContract ();
8589
8690 configL1USDCGateway ();
8791 configEnforcedTxGateway ();
@@ -272,4 +276,21 @@ contract InitializeL1ScrollOwner is Script {
272276 owner.updateAccess (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR, _selectors, SCROLL_MULTISIG_NO_DELAY_ROLE, true );
273277 owner.updateAccess (L1_ENFORCED_TX_GATEWAY_PROXY_ADDR, _selectors, EMERGENCY_MULTISIG_NO_DELAY_ROLE, true );
274278 }
279+
280+ function configSystemContract () internal {
281+ // If we already have deployed it, just do:
282+ SystemSignerRegistry sys = SystemSignerRegistry (SYSTEM_CONTRACT_ADDR);
283+
284+ // sys has a normal constructor that set the "owner" to `ScrollOwner`.
285+ // Now we want to let the Security Council call `addSigner(...)` with no delay.
286+ bytes4 [] memory selectors = new bytes4 [](1 );
287+ selectors[0 ] = sys.addSigner.selector ;
288+
289+ owner.updateAccess (
290+ SYSTEM_CONTRACT_ADDR, // the system contract
291+ selectors, // array of function selectors (onlyOwner)
292+ SECURITY_COUNCIL_NO_DELAY_ROLE,
293+ true
294+ );
295+ }
275296}
0 commit comments