diff --git a/boa/contracts/vyper/vyper_contract.py b/boa/contracts/vyper/vyper_contract.py index 724492f1..b219b068 100644 --- a/boa/contracts/vyper/vyper_contract.py +++ b/boa/contracts/vyper/vyper_contract.py @@ -117,13 +117,13 @@ def stomp(self, address: Any, data_section=None) -> "VyperContract": return ret # TODO: allow `env=` kwargs and so on - def at(self, address: Any) -> "VyperContract": + def at(self, address: Any, nowarn=False) -> "VyperContract": address = Address(address) ret = self.deploy(override_address=address, skip_initcode=True) bytecode = ret.env.get_code(address) - ret._set_bytecode(bytecode) + ret._set_bytecode(bytecode, nowarn=nowarn) ret.env.register_contract(address, ret) return ret @@ -604,12 +604,12 @@ def _deployment_source_map(self): return source_map # manually set the runtime bytecode, instead of using deploy - def _set_bytecode(self, bytecode: bytes) -> None: + def _set_bytecode(self, bytecode: bytes, nowarn=False) -> None: to_check = bytecode if self.data_section_size != 0: to_check = bytecode[: -self.data_section_size] assert isinstance(self.compiler_data, CompilerData) - if to_check != self.compiler_data.bytecode_runtime: + if to_check != self.compiler_data.bytecode_runtime and not nowarn: warnings.warn( f"casted bytecode does not match compiled bytecode at {self}", stacklevel=2, diff --git a/boa/vm/py_evm.py b/boa/vm/py_evm.py index b254c2b7..354937c7 100644 --- a/boa/vm/py_evm.py +++ b/boa/vm/py_evm.py @@ -299,7 +299,7 @@ def apply_create_message(cls, state, msg, tx_ctx, **kwargs): proxied_address = extract_eip1167_address(runtime_bytecode) proxied_contract = cls.env.lookup_contract(proxied_address) if proxied_contract is not None and hasattr(proxied_contract, "deployer"): - contract = proxied_contract.deployer.at(contract_address) + contract = proxied_contract.deployer.at(contract_address, nowarn=True) if hasattr(contract, "created_from"): contract.created_from = Address(msg.sender) cls.env.register_contract(contract_address, contract)