ethereum.forks.frontier.utils.addressethereum.forks.homestead.utils.address

Hardfork Utility Functions For Addresses.

.. contents:: Table of Contents :backlinks: none :local:

Introduction

Address specific functions used in this frontier version of specification.Address specific functions used in this homestead version of specification.

to_address_masked

Convert a Uint or U256 value to a valid address (20 bytes).

Parameters

data : The numeric value to be converted to address.

Returns

address : Address The obtained address.

def to_address_masked(data: Uint | U256) -> Address:
23
    """
24
    Convert a Uint or U256 value to a valid address (20 bytes).
25
26
    Parameters
27
    ----------
28
    data :
29
        The numeric value to be converted to address.
30
31
    Returns
32
    -------
33
    address : `Address`
34
        The obtained address.
35
36
    """
37
    return Address(data.to_be_bytes32()[-20:])

compute_contract_address

Computes address of the new account that needs to be created.

Parameters

address : The address of the account that wants to create the new account. nonce : The transaction count of the account that wants to create the new account.

Returns

address: ethereum.forks.frontier.fork_types.Addressethereum.forks.homestead.fork_types.Address The computed address of the new account.

def compute_contract_address(address: Address, ​​nonce: Uint) -> Address:
41
    """
42
    Computes address of the new account that needs to be created.
43
44
    Parameters
45
    ----------
46
    address :
47
        The address of the account that wants to create the new account.
48
    nonce :
49
        The transaction count of the account that wants to create the new
50
        account.
51
52
    Returns
53
    -------
54
    address: `ethereum.forks.frontier.fork_types.Address`
54
    address: `ethereum.forks.homestead.fork_types.Address`
55
        The computed address of the new account.
56
57
    """
58
    computed_address = keccak256(rlp.encode([address, nonce]))
59
    canonical_address = computed_address[-20:]
60
    padded_address = left_pad_zero_bytes(canonical_address, 20)
61
    return Address(padded_address)