github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/L1StandardBridge.k.sol (about) 1 // SPDX-License-Identifier: MIT 2 pragma solidity ^0.8.13; 3 4 import { DeploymentSummary } from "./utils/DeploymentSummary.sol"; 5 import { KontrolUtils } from "./utils/KontrolUtils.sol"; 6 import { Types } from "src/libraries/Types.sol"; 7 import { 8 IL1StandardBridge as L1StandardBridge, 9 IL1CrossDomainMessenger as CrossDomainMessenger, 10 ISuperchainConfig as SuperchainConfig 11 } from "./interfaces/KontrolInterfaces.sol"; 12 13 contract L1StandardBridgeKontrol is DeploymentSummary, KontrolUtils { 14 L1StandardBridge l1standardBridge; 15 SuperchainConfig superchainConfig; 16 17 function setUpInlined() public { 18 l1standardBridge = L1StandardBridge(payable(l1StandardBridgeProxyAddress)); 19 superchainConfig = SuperchainConfig(superchainConfigProxyAddress); 20 } 21 22 function prove_finalizeBridgeERC20_paused( 23 address _localToken, 24 address _remoteToken, 25 address _from, 26 address _to, 27 uint256 _amount, 28 bytes calldata _extraData 29 ) 30 public 31 { 32 setUpInlined(); 33 34 // Pause Standard Bridge 35 vm.prank(superchainConfig.guardian()); 36 superchainConfig.pause("identifier"); 37 38 vm.mockCall( 39 address(l1standardBridge.messenger()), 40 abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector), 41 abi.encode(address(l1standardBridge.otherBridge())) 42 ); 43 44 vm.prank(address(l1standardBridge.messenger())); 45 vm.expectRevert("StandardBridge: paused"); 46 l1standardBridge.finalizeBridgeERC20(_localToken, _remoteToken, _from, _to, _amount, _extraData); 47 } 48 49 function prove_finalizeBridgeETH_paused( 50 address _from, 51 address _to, 52 uint256 _amount, 53 bytes calldata _extraData 54 ) 55 public 56 { 57 setUpInlined(); 58 59 // Pause Standard Bridge 60 vm.prank(superchainConfig.guardian()); 61 superchainConfig.pause("identifier"); 62 63 vm.mockCall( 64 address(l1standardBridge.messenger()), 65 abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector), 66 abi.encode(address(l1standardBridge.otherBridge())) 67 ); 68 69 vm.prank(address(l1standardBridge.messenger())); 70 vm.expectRevert("StandardBridge: paused"); 71 l1standardBridge.finalizeBridgeETH(_from, _to, _amount, _extraData); 72 } 73 }