Hardfork Utility Functions For Addresses
Table of Contents
Introduction
Address specific functions used in this gray_glacier version of specification.
Module Contents
Functions
Convert a Uint or U256 value to a valid address (20 bytes). |
|
Computes address of the new account that needs to be created. |
|
Computes address of the new account that needs to be created, which is |
Module Details
to_address
- to_address(data: Union[ethereum.base_types.Uint, ethereum.base_types.U256]) → ethereum.gray_glacier.fork_types.Address
Convert a Uint or U256 value to a valid address (20 bytes).
- Parameters
data – The string to be converted to bytes.
- Returns
address – The obtained address.
- Return type
Address
def to_address(data: Union[Uint, U256]) -> Address:
return Address(data.to_be_bytes32()[-20:])
compute_contract_address
- compute_contract_address(address: ethereum.gray_glacier.fork_types.Address, nonce: ethereum.base_types.Uint) → ethereum.gray_glacier.fork_types.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 – The computed address of the new account.
- Return type
Address
def compute_contract_address(address: Address, nonce: Uint) -> Address:
computed_address = keccak256(rlp.encode([address, nonce]))
canonical_address = computed_address[-20:]
padded_address = left_pad_zero_bytes(canonical_address, 20)
return Address(padded_address)
compute_create2_contract_address
- compute_create2_contract_address(address: ethereum.gray_glacier.fork_types.Address, salt: ethereum.base_types.Bytes32, call_data: bytearray) → ethereum.gray_glacier.fork_types.Address
Computes address of the new account that needs to be created, which is based on the sender address, salt and the call data as well.
- Parameters
address – The address of the account that wants to create the new account.
salt – Address generation salt.
call_data – The code of the new account which is to be created.
- Returns
address – The computed address of the new account.
- Return type
ethereum.gray_glacier.fork_types.Address
def compute_create2_contract_address(
address: Address, salt: Bytes32, call_data: bytearray
) -> Address:
preimage = b"\xff" + address + salt + keccak256(call_data)
computed_address = keccak256(preimage)
canonical_address = computed_address[-20:]
padded_address = left_pad_zero_bytes(canonical_address, 20)
return Address(padded_address)