@@ -18,7 +18,6 @@ import {IexecLayerZeroBridge} from "../src/bridges/layerZero/IexecLayerZeroBridg
1818 * for all deployed smart contracts on the current chain.
1919 */
2020contract TransferAdminRole is Script {
21-
2221 /**
2322 * @notice Transfers the default admin role to a new admin for all contracts on the current chain
2423 * @param newAdmin The address that will become the new default admin
@@ -27,199 +26,130 @@ contract TransferAdminRole is Script {
2726 */
2827 function run (address newAdmin ) external {
2928 require (newAdmin != address (0 ), "TransferAdminRole: New admin cannot be zero address " );
30-
29+
3130 string memory chain = vm.envString ("CHAIN " );
3231 console.log ("Starting admin role transfer on chain: " , chain);
3332 console.log ("New admin address: " , newAdmin);
34-
33+
3534 ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig (chain);
36-
35+
3736 vm.startBroadcast ();
38-
39- // Transfer admin role for contracts deployed on this chain
4037 if (params.approvalRequired) {
41- // This is a mainnet chain (Ethereum/Sepolia) - has RLCLiquidityUnifier
4238 transferRLCLiquidityUnifierAdmin (params.rlcLiquidityUnifierAddress, newAdmin);
4339 } else {
44- // This is a Layer 2 chain (Arbitrum/Arbitrum Sepolia) - has RLCCrosschainToken
4540 transferRLCCrosschainTokenAdmin (params.rlcCrosschainTokenAddress, newAdmin);
4641 }
47-
48- // All chains have IexecLayerZeroBridge
4942 transferIexecLayerZeroBridgeAdmin (params.iexecLayerZeroBridgeAddress, newAdmin);
50-
5143 vm.stopBroadcast ();
52-
53- console.log ("Admin role transfer completed successfully on chain: " , chain);
5444 }
55-
45+
5646 /**
5747 * @notice Transfers admin role for RLCLiquidityUnifier contract
5848 * @param contractAddress The address of the RLCLiquidityUnifier contract
5949 * @param newAdmin The new admin address
6050 */
6151 function transferRLCLiquidityUnifierAdmin (address contractAddress , address newAdmin ) internal {
62- require (contractAddress != address (0 ), "TransferAdminRole: RLCLiquidityUnifier address cannot be zero " );
63-
64- console.log ("Transferring admin role for RLCLiquidityUnifier at: " , contractAddress);
65-
6652 RLCLiquidityUnifier liquidityUnifier = RLCLiquidityUnifier (contractAddress);
67-
68- // Get current admin to verify permissions
53+
6954 address currentAdmin = liquidityUnifier.owner ();
7055 console.log ("Current admin: " , currentAdmin);
71-
72- // Begin the admin transfer process
56+
7357 liquidityUnifier.beginDefaultAdminTransfer (newAdmin);
74-
75- console.log ("Admin transfer initiated for RLCLiquidityUnifier " );
76- console.log ("New admin must call acceptDefaultAdminTransfer() to complete the transfer " );
58+ console.log ("Admin transfer initiated for RLCLiquidityUnifier at: " , contractAddress);
7759 }
78-
60+
7961 /**
8062 * @notice Transfers admin role for RLCCrosschainToken contract
8163 * @param contractAddress The address of the RLCCrosschainToken contract
8264 * @param newAdmin The new admin address
8365 */
8466 function transferRLCCrosschainTokenAdmin (address contractAddress , address newAdmin ) internal {
85- require (contractAddress != address (0 ), "TransferAdminRole: RLCCrosschainToken address cannot be zero " );
86-
87- console.log ("Transferring admin role for RLCCrosschainToken at: " , contractAddress);
88-
8967 RLCCrosschainToken crosschainToken = RLCCrosschainToken (contractAddress);
90-
91- // Get current admin to verify permissions
68+
9269 address currentAdmin = crosschainToken.owner ();
9370 console.log ("Current admin: " , currentAdmin);
94-
95- // Begin the admin transfer process
71+
9672 crosschainToken.beginDefaultAdminTransfer (newAdmin);
97-
98- console.log ("Admin transfer initiated for RLCCrosschainToken " );
99- console.log ("New admin must call acceptDefaultAdminTransfer() to complete the transfer " );
73+ console.log ("Admin transfer initiated for RLCCrosschainToken at: " , contractAddress);
10074 }
101-
75+
10276 /**
10377 * @notice Transfers admin role for IexecLayerZeroBridge contract
10478 * @param contractAddress The address of the IexecLayerZeroBridge contract
10579 * @param newAdmin The new admin address
10680 */
10781 function transferIexecLayerZeroBridgeAdmin (address contractAddress , address newAdmin ) internal {
108- require (contractAddress != address (0 ), "TransferAdminRole: IexecLayerZeroBridge address cannot be zero " );
109-
110- console.log ("Transferring admin role for IexecLayerZeroBridge at: " , contractAddress);
111-
11282 IexecLayerZeroBridge bridge = IexecLayerZeroBridge (contractAddress);
113-
114- // Get current admin to verify permissions
83+
11584 address currentAdmin = bridge.owner ();
11685 console.log ("Current admin: " , currentAdmin);
117-
118- // Begin the admin transfer process
86+
11987 bridge.beginDefaultAdminTransfer (newAdmin);
120-
121- console.log ("Admin transfer initiated for IexecLayerZeroBridge " );
122- console.log ("New admin must call acceptDefaultAdminTransfer() to complete the transfer " );
88+ console.log ("Admin transfer initiated for IexecLayerZeroBridge at: " , contractAddress);
12389 }
12490}
12591
12692/**
12793 * @title AcceptAdminRole
12894 * @dev Script to accept the default admin role transfer for all contracts on the current chain.
12995 * This script should be run by the new admin after the TransferAdminRole script has been executed.
130- *
131- * Usage:
132- * forge script script/TransferAdminRole.s.sol:AcceptAdminRole \
133- * --rpc-url <RPC_URL> \
134- * --account <NEW_ADMIN_ACCOUNT> \
135- * --broadcast \
136- * -vvv
137- *
138- * Environment variables required:
139- * - CHAIN: The chain identifier (e.g., "ethereum", "arbitrum", "sepolia", "arbitrum_sepolia")
14096 */
14197contract AcceptAdminRole is Script {
142-
14398 /**
14499 * @notice Accepts the default admin role transfer for all contracts on the current chain
145100 * @dev This function should be called by the new admin to complete the transfer process
146101 */
147102 function run () external {
148103 string memory chain = vm.envString ("CHAIN " );
149104 console.log ("Accepting admin role transfer on chain: " , chain);
150-
151105 ConfigLib.CommonConfigParams memory params = ConfigLib.readCommonConfig (chain);
152-
106+
153107 vm.startBroadcast ();
154-
155- // Accept admin role for contracts deployed on this chain
156108 if (params.approvalRequired) {
157- // This is a mainnet chain (Ethereum/Sepolia) - has RLCLiquidityUnifier
158109 acceptRLCLiquidityUnifierAdmin (params.rlcLiquidityUnifierAddress);
159110 } else {
160- // This is a Layer 2 chain (Arbitrum/Arbitrum Sepolia) - has RLCCrosschainToken
161111 acceptRLCCrosschainTokenAdmin (params.rlcCrosschainTokenAddress);
162112 }
163-
164- // All chains have IexecLayerZeroBridge
165113 acceptIexecLayerZeroBridgeAdmin (params.iexecLayerZeroBridgeAddress);
166-
167114 vm.stopBroadcast ();
168-
169- console.log ("Admin role transfer acceptance completed successfully on chain: " , chain);
170115 }
171-
116+
172117 /**
173118 * @notice Accepts admin role for RLCLiquidityUnifier contract
174119 * @param contractAddress The address of the RLCLiquidityUnifier contract
175120 */
176121 function acceptRLCLiquidityUnifierAdmin (address contractAddress ) internal {
177- require (contractAddress != address (0 ), "AcceptAdminRole: RLCLiquidityUnifier address cannot be zero " );
178-
179122 console.log ("Accepting admin role for RLCLiquidityUnifier at: " , contractAddress);
180-
123+
181124 RLCLiquidityUnifier liquidityUnifier = RLCLiquidityUnifier (contractAddress);
182-
183- // Accept the admin transfer
125+
184126 liquidityUnifier.acceptDefaultAdminTransfer ();
185-
186- console.log ("Admin role accepted for RLCLiquidityUnifier " );
187127 console.log ("New admin: " , liquidityUnifier.owner ());
188128 }
189-
129+
190130 /**
191131 * @notice Accepts admin role for RLCCrosschainToken contract
192132 * @param contractAddress The address of the RLCCrosschainToken contract
193133 */
194134 function acceptRLCCrosschainTokenAdmin (address contractAddress ) internal {
195- require (contractAddress != address (0 ), "AcceptAdminRole: RLCCrosschainToken address cannot be zero " );
196-
197135 console.log ("Accepting admin role for RLCCrosschainToken at: " , contractAddress);
198-
136+
199137 RLCCrosschainToken crosschainToken = RLCCrosschainToken (contractAddress);
200-
201- // Accept the admin transfer
138+
202139 crosschainToken.acceptDefaultAdminTransfer ();
203-
204- console.log ("Admin role accepted for RLCCrosschainToken " );
205140 console.log ("New admin: " , crosschainToken.owner ());
206141 }
207-
142+
208143 /**
209144 * @notice Accepts admin role for IexecLayerZeroBridge contract
210145 * @param contractAddress The address of the IexecLayerZeroBridge contract
211146 */
212147 function acceptIexecLayerZeroBridgeAdmin (address contractAddress ) internal {
213- require (contractAddress != address (0 ), "AcceptAdminRole: IexecLayerZeroBridge address cannot be zero " );
214-
215148 console.log ("Accepting admin role for IexecLayerZeroBridge at: " , contractAddress);
216-
149+
217150 IexecLayerZeroBridge bridge = IexecLayerZeroBridge (contractAddress);
218-
219- // Accept the admin transfer
151+
220152 bridge.acceptDefaultAdminTransfer ();
221-
222- console.log ("Admin role accepted for IexecLayerZeroBridge " );
223153 console.log ("New admin: " , bridge.owner ());
224154 }
225155}
0 commit comments