eth_enr package

Submodules

eth_enr.abc module

class eth_enr.abc.CommonENRAPI

Bases: collections.abc.Mapping, typing.Generic, abc.ABC

get_signing_message() → bytes
identity_scheme
node_id
public_key
sequence_number
class eth_enr.abc.ConstraintAPI

Bases: abc.ABC

class eth_enr.abc.ENRAPI

Bases: eth_enr.abc.CommonENRAPI

classmethod from_repr(representation: str, identity_scheme_registry: collections.UserDict) → eth_enr.abc.ENRAPI
signature
validate_signature() → None
class eth_enr.abc.ENRDatabaseAPI

Bases: abc.ABC

delete_enr(node_id: NewType.<locals>.new_type) → None
get_enr(node_id: NewType.<locals>.new_type) → eth_enr.abc.ENRAPI
set_enr(enr: eth_enr.abc.ENRAPI, raise_on_error: bool = False) → None
class eth_enr.abc.ENRManagerAPI

Bases: abc.ABC

enr
update(*kv_pairs) → None

Update the ENR record with the provided key/value pairs. Providing None for a value will result in the associated key being removed from the ENR.

class eth_enr.abc.IdentitySchemeAPI

Bases: abc.ABC

classmethod create_enr_signature(enr: eth_enr.abc.CommonENRAPI, private_key: bytes) → bytes

Create and return the signature for an ENR.

classmethod extract_node_id(enr: eth_enr.abc.CommonENRAPI) → NewType.<locals>.new_type

Retrieve the node id from an ENR.

classmethod extract_public_key(enr: eth_enr.abc.CommonENRAPI) → bytes

Retrieve the public key from an ENR.

classmethod validate_enr_signature(enr: eth_enr.abc.ENRAPI) → None

Validate the signature of an ENR.

classmethod validate_enr_structure(enr: eth_enr.abc.CommonENRAPI) → None

Validate that the data required by the identity scheme is present and valid in an ENR.

class eth_enr.abc.QueryableENRDatabaseAPI

Bases: eth_enr.abc.ENRDatabaseAPI

query(*constraints) → Iterable[eth_enr.abc.ENRAPI]
class eth_enr.abc.UnsignedENRAPI

Bases: eth_enr.abc.CommonENRAPI

to_signed_enr(private_key: bytes) → eth_enr.abc.ENRAPI

eth_enr.constants module

eth_enr.enr module

class eth_enr.enr.ENR(sequence_number: int, kv_pairs: Mapping[bytes, Any], signature: bytes, identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>})

Bases: eth_enr.enr.ENRCommon, eth_enr.sedes.ENRSedes, eth_enr.abc.ENRAPI

classmethod from_repr(representation: str, identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>}) → eth_enr.enr.ENR
signature
validate_signature() → None
class eth_enr.enr.ENRCommon(sequence_number: int, kv_pairs: Mapping[bytes, Any], identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>})

Bases: eth_enr.abc.CommonENRAPI

get(k[, d]) → D[k] if k in D, else d. d defaults to None.
get_signing_message() → bytes
identity_scheme
items() → a set-like object providing a view on D's items
keys() → a set-like object providing a view on D's keys
node_id
public_key
sequence_number
values() → an object providing a view on D's values
class eth_enr.enr.UnsignedENR(sequence_number: int, kv_pairs: Mapping[bytes, Any], identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>})

Bases: eth_enr.enr.ENRCommon, eth_enr.abc.UnsignedENRAPI

to_signed_enr(private_key: bytes) → eth_enr.enr.ENR
eth_enr.enr.pretty_print_enr_item(key: bytes, value: Union[int, bytes]) → str

eth_enr.enr_manager module

class eth_enr.enr_manager.ENRManager(private_key: eth_keys.datatypes.PrivateKey, enr_db: eth_enr.abc.ENRDatabaseAPI, kv_pairs: Optional[Mapping[bytes, bytes]] = None, identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>})

Bases: eth_enr.abc.ENRManagerAPI

enr
logger = <Logger eth_enr.ENRManager (WARNING)>
update(*kv_pairs) → None

Update the ENR record with the provided key/value pairs. Providing None for a value will result in the associated key being removed from the ENR.

eth_enr.identity_schemes module

class eth_enr.identity_schemes.IdentitySchemeRegistry(**kwargs)

Bases: collections.UserDict

register(identity_scheme_class: Type[IdentitySchemeAPI]) → Type[eth_enr.abc.IdentitySchemeAPI]

Class decorator to register identity schemes.

class eth_enr.identity_schemes.V4CompatIdentityScheme

Bases: eth_enr.identity_schemes.V4IdentityScheme

An identity scheme to be used for locally crafted ENRs representing remote nodes that don’t support the ENR extension.

ENRs using this identity scheme have a zero-length signature.

classmethod create_enr_signature(enr: eth_enr.abc.CommonENRAPI, private_key: bytes) → bytes

Create and return the signature for an ENR.

id = b'v4-compat'
classmethod validate_enr_signature(enr: eth_enr.abc.ENRAPI) → None

Validate the signature of an ENR.

class eth_enr.identity_schemes.V4IdentityScheme

Bases: eth_enr.abc.IdentitySchemeAPI

classmethod create_enr_signature(enr: eth_enr.abc.CommonENRAPI, private_key: bytes) → bytes

Create and return the signature for an ENR.

classmethod extract_node_id(enr: eth_enr.abc.CommonENRAPI) → NewType.<locals>.new_type

Retrieve the node id from an ENR.

classmethod extract_public_key(enr: eth_enr.abc.CommonENRAPI) → bytes

Retrieve the public key from an ENR.

id = b'v4'
private_key_size = 32
public_key_enr_key = b'secp256k1'
classmethod validate_compressed_public_key(public_key: bytes) → None
classmethod validate_enr_signature(enr: eth_enr.abc.ENRAPI) → None

Validate the signature of an ENR.

classmethod validate_enr_structure(enr: eth_enr.abc.CommonENRAPI) → None

Validate that the data required by the identity scheme is present and valid in an ENR.

classmethod validate_signature(*, message_hash: bytes, signature: bytes, public_key: bytes) → None
classmethod validate_uncompressed_public_key(public_key: bytes) → None

eth_enr.sedes module

class eth_enr.sedes.ENRContentSedes

Bases: object

classmethod deserialize(serialized_enr: Sequence[bytes], identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>}) → eth_enr.abc.UnsignedENRAPI
classmethod serialize(enr: eth_enr.abc.ENRAPI) → Tuple[bytes, ...]
class eth_enr.sedes.ENRSedes

Bases: object

classmethod deserialize(serialized_enr: Sequence[bytes], identity_scheme_registry: collections.UserDict = {b'v4': <class 'eth_enr.identity_schemes.V4IdentityScheme'>, b'v4-compat': <class 'eth_enr.identity_schemes.V4CompatIdentityScheme'>}) → eth_enr.abc.ENRAPI
classmethod serialize(enr: eth_enr.abc.ENRAPI) → Tuple[bytes, ...]

eth_enr.typing module

Module contents