github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/L1ERC721Bridge.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 IL1ERC721Bridge as L1ERC721Bridge, 9 IL1CrossDomainMessenger as CrossDomainMessenger, 10 ISuperchainConfig as SuperchainConfig 11 } from "./interfaces/KontrolInterfaces.sol"; 12 13 contract L1ERC721BridgeKontrol is DeploymentSummary, KontrolUtils { 14 L1ERC721Bridge l1ERC721Bridge; 15 SuperchainConfig superchainConfig; 16 17 function setUpInlined() public { 18 l1ERC721Bridge = L1ERC721Bridge(l1ERC721BridgeProxyAddress); 19 superchainConfig = SuperchainConfig(superchainConfigProxyAddress); 20 } 21 22 function prove_finalizeBridgeERC721_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(l1ERC721Bridge.messenger()), 40 abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector), 41 abi.encode(address(l1ERC721Bridge.otherBridge())) 42 ); 43 44 vm.prank(address(l1ERC721Bridge.messenger())); 45 vm.expectRevert("L1ERC721Bridge: paused"); 46 l1ERC721Bridge.finalizeBridgeERC721(_localToken, _remoteToken, _from, _to, _amount, _extraData); 47 } 48 }