diff --git a/brownie/network/contract.py b/brownie/network/contract.py index 63b44b03a..34479c8ba 100644 --- a/brownie/network/contract.py +++ b/brownie/network/contract.py @@ -1123,12 +1123,13 @@ def __call__(self, *args: Tuple, block_identifier: Union[int, str, bytes] = None try: self.transact(*args, tx) + chain.undo() except VirtualMachineError as exc: pc, revert_msg = exc.pc, exc.revert_msg + chain.undo() except Exception: pass - chain.undo() try: return self.call(*args) except VirtualMachineError as exc: diff --git a/tests/network/contract/test_contract.py b/tests/network/contract/test_contract.py index 776c2a87f..2083366bb 100644 --- a/tests/network/contract/test_contract.py +++ b/tests/network/contract/test_contract.py @@ -287,9 +287,9 @@ def test_as_proxy_for(network): original = Contract.from_explorer("0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b") proxy = Contract.from_explorer( "0x3d9819210a31b4961b30ef54be2aed79b9c9cd3b", - as_proxy_for="0x9d0a0443ff4bb04391655b8cd205683d9fa75550", + as_proxy_for="0xAf601CbFF871d0BE62D18F79C31e387c76fa0374", ) - implementation = Contract("0x9d0a0443ff4bb04391655b8cd205683d9fa75550") + implementation = Contract("0xAf601CbFF871d0BE62D18F79C31e387c76fa0374") assert original.abi == proxy.abi assert original.address == proxy.address