def test_generate_custom_genesis_state(self): state_overrides = {"balance": to_wei(900000, "ether")} invalid_overrides = {"gato": "con botas"} # Test creating a specific number of accounts account_keys = get_default_account_keys(quantity=2) assert len(account_keys) == 2 account_keys = get_default_account_keys(quantity=10) assert len(account_keys) == 10 # Test the underlying state merging functionality genesis_state = generate_genesis_state_for_keys( account_keys=account_keys, overrides=state_overrides) assert len(genesis_state) == len(account_keys) == 10 for _public_address, account_state in genesis_state.items(): assert account_state["balance"] == state_overrides["balance"] assert account_state["code"] == b"" # Only existing default genesis state keys can be overridden with pytest.raises(ValueError): _invalid_genesis_state = generate_genesis_state_for_keys( account_keys=account_keys, overrides=invalid_overrides) # Use staticmethod state overriding genesis_state = PyEVMBackend._generate_genesis_state( overrides=state_overrides, num_accounts=3) assert len(genesis_state) == 3 for _public_address, account_state in genesis_state.items(): assert account_state["balance"] == state_overrides["balance"] assert account_state["code"] == b"" # Only existing default genesis state keys can be overridden with pytest.raises(ValueError): _invalid_genesis_state = PyEVMBackend._generate_genesis_state( overrides=invalid_overrides)
def test_override_genesis_state(self): state_overrides = {"balance": to_wei(900000, "ether")} test_accounts = 3 # Initialize PyEVM backend with custom genesis state genesis_state = PyEVMBackend._generate_genesis_state( overrides=state_overrides, num_accounts=test_accounts) # Test the correct number of accounts are created with the specified balance override pyevm_backend = PyEVMBackend(genesis_state=genesis_state) assert len(pyevm_backend.account_keys) == test_accounts for private_key in pyevm_backend.account_keys: account = private_key.public_key.to_canonical_address() balance = pyevm_backend.get_balance(account=account) assert balance == state_overrides["balance"] # Test integration with EthereumTester tester = EthereumTester(backend=pyevm_backend) for private_key in pyevm_backend.account_keys: account = private_key.public_key.to_checksum_address() balance = tester.get_balance(account=account) assert balance == state_overrides["balance"]
HomesteadComputation, ) from eth.vm.forks.spurious_dragon.opcodes import SPURIOUS_DRAGON_OPCODES from hexbytes.main import HexBytes import rlp import web3 genesis_overrides = { 'gas_limit': 800000000 } custom_genesis_params = PyEVMBackend._generate_genesis_params(overrides=genesis_overrides) custom_genesis_state = PyEVMBackend._generate_genesis_state(num_accounts=9) # Hacks to reduce test time def new_is_valid_opcode(self, position: int) -> bool: return True def new_default_middlewares(self, web3): return [ (request_parameter_normalizer, 'request_param_normalizer'), (gas_price_strategy_middleware, 'gas_price_strategy'), (name_to_address_middleware(web3), 'name_to_address'), (attrdict_middleware, 'attrdict'), (pythonic_middleware, 'pythonic'), (normalize_errors_middleware, 'normalize_errors'), (validation_middleware, 'validation'), (abi_middleware, 'abi'),