Skip to content

Commit 85bf6a2

Browse files
committed
move attestation validation to forks/serenity/validation.py. change naming to reflect fork name
1 parent 72a7fb6 commit 85bf6a2

File tree

4 files changed

+108
-85
lines changed

4 files changed

+108
-85
lines changed

eth/beacon/state_machines/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
)
1313

1414
from eth.beacon.db.chain import BaseBeaconChainDB
15+
from eth.beacon.types.attestations import Attestation
1516
from eth.beacon.types.blocks import BaseBeaconBlock
1617
from eth.beacon.types.states import BeaconState
1718

@@ -63,6 +64,15 @@ def state_transition(self) -> BaseStateTransition:
6364
def import_block(self, block: BaseBeaconBlock) -> Tuple[BeaconState, BaseBeaconBlock]:
6465
pass
6566

67+
#
68+
# State transition
69+
#
70+
@abstractmethod
71+
def validate_attestation(self,
72+
attestation: Attestation,
73+
is_validating_signatures: bool=True) -> None:
74+
raise NotImplementedError
75+
6676

6777
class BeaconStateMachine(BaseBeaconStateMachine):
6878
def __init__(self,

eth/beacon/state_machines/forks/serenity/__init__.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
from typing import Type # noqa: F401
22

3+
from eth.beacon.types.attestations import Attestation
34
from eth.beacon.types.blocks import BaseBeaconBlock # noqa: F401
45
from eth.beacon.types.states import BeaconState # noqa: F401
56

67
from eth.beacon.state_machines.base import BeaconStateMachine
78
from eth.beacon.state_machines.state_transitions import BaseStateTransition # noqa: F401
89

10+
from .configs import SERENITY_CONFIG
911
from .blocks import SerenityBeaconBlock
1012
from .states import SerenityBeaconState
1113
from .state_transitions import SerenityStateTransition
12-
from .configs import SERENITY_CONFIG
14+
from .validation import validate_serenity_attestation
1315

1416

1517
class SerenityStateMachine(BeaconStateMachine):
@@ -21,3 +23,14 @@ class SerenityStateMachine(BeaconStateMachine):
2123
state_class = SerenityBeaconState # type: Type[BeaconState]
2224
state_transition_class = SerenityStateTransition # type: Type[BaseStateTransition]
2325
config = SERENITY_CONFIG
26+
27+
def validate_attestation(self,
28+
attestation: Attestation,
29+
is_validating_signatures: bool=True) -> None:
30+
validate_serenity_attestation(
31+
self,
32+
attestation,
33+
self.config.EPOCH_LENGTH,
34+
self.config.MIN_ATTESTATION_INCLUSION_DELAY,
35+
is_validating_signatures,
36+
)

eth/beacon/state_machines/validation.py renamed to eth/beacon/state_machines/forks/serenity/validation.py

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
get_block_root,
1919
get_domain,
2020
)
21-
from eth.utils import (
21+
from eth._utils import (
2222
bls
2323
)
24-
from eth.beacon.utils.hash import (
24+
from eth.beacon._utils.hash import (
2525
hash_eth2,
2626
)
2727
from eth.beacon.types.states import BeaconState # noqa: F401
@@ -32,60 +32,60 @@
3232
#
3333
# Attestation validation
3434
#
35-
def validate_attestation(state: BeaconState,
36-
attestation: Attestation,
37-
epoch_length: int,
38-
min_attestation_inclusion_delay: int,
39-
is_validating_signatures: bool=True) -> None:
35+
def validate_serenity_attestation(state: BeaconState,
36+
attestation: Attestation,
37+
epoch_length: int,
38+
min_attestation_inclusion_delay: int,
39+
is_validating_signatures: bool=True) -> None:
4040
"""
4141
Validate the given ``attestation``.
4242
Raise ``ValidationError`` if it's invalid.
4343
"""
4444

45-
validate_attestation_slot(
46-
attestation_data=attestation.data,
47-
current_slot=state.slot,
48-
epoch_length=epoch_length,
49-
min_attestation_inclusion_delay=min_attestation_inclusion_delay,
45+
validate_serenity_attestation_slot(
46+
attestation.data,
47+
state.slot,
48+
epoch_length,
49+
min_attestation_inclusion_delay,
5050
)
5151

52-
validate_attestation_justified_slot(
53-
attestation_data=attestation.data,
54-
current_slot=state.slot,
55-
previous_justified_slot=state.previous_justified_slot,
56-
justified_slot=state.justified_slot,
57-
epoch_length=epoch_length,
52+
validate_serenity_attestation_justified_slot(
53+
attestation.data,
54+
state.slot,
55+
state.previous_justified_slot,
56+
state.justified_slot,
57+
epoch_length,
5858
)
5959

60-
validate_attestation_justified_block_root(
61-
attestation_data=attestation.data,
60+
validate_serenity_attestation_justified_block_root(
61+
attestation.data,
6262
justified_block_root=get_block_root(
6363
state.latest_block_roots,
6464
current_slot=state.slot,
6565
slot=attestation.data.justified_slot,
6666
),
6767
)
6868

69-
validate_attestation_latest_crosslink_root(
70-
attestation_data=attestation.data,
69+
validate_serenity_attestation_latest_crosslink_root(
70+
attestation.data,
7171
latest_crosslink_shard_block_root=(
7272
state.latest_crosslinks[attestation.data.shard].shard_block_root
7373
),
7474
)
7575

76-
validate_attestation_shard_block_root(attestation_data=attestation.data)
76+
validate_serenity_attestation_shard_block_root(attestation.data)
7777

7878
if is_validating_signatures:
79-
validate_attestation_aggregate_signature(
79+
validate_serenity_attestation_aggregate_signature(
8080
state,
8181
attestation,
8282
)
8383

8484

85-
def validate_attestation_slot(attestation_data: AttestationData,
86-
current_slot: int,
87-
epoch_length: int,
88-
min_attestation_inclusion_delay: int) -> None:
85+
def validate_serenity_attestation_slot(attestation_data: AttestationData,
86+
current_slot: int,
87+
epoch_length: int,
88+
min_attestation_inclusion_delay: int) -> None:
8989
"""
9090
Validate ``slot`` field of ``attestation_data``.
9191
Raise ``ValidationError`` if it's invalid.
@@ -114,11 +114,11 @@ def validate_attestation_slot(attestation_data: AttestationData,
114114
)
115115

116116

117-
def validate_attestation_justified_slot(attestation_data: AttestationData,
118-
current_slot: int,
119-
previous_justified_slot: int,
120-
justified_slot: int,
121-
epoch_length: int) -> None:
117+
def validate_serenity_attestation_justified_slot(attestation_data: AttestationData,
118+
current_slot: int,
119+
previous_justified_slot: int,
120+
justified_slot: int,
121+
epoch_length: int) -> None:
122122
"""
123123
Validate ``justified_slot`` field of ``attestation_data``.
124124
Raise ``ValidationError`` if it's invalid.
@@ -141,8 +141,8 @@ def validate_attestation_justified_slot(attestation_data: AttestationData,
141141
)
142142

143143

144-
def validate_attestation_justified_block_root(attestation_data: AttestationData,
145-
justified_block_root: Hash32) -> None:
144+
def validate_serenity_attestation_justified_block_root(attestation_data: AttestationData,
145+
justified_block_root: Hash32) -> None:
146146
"""
147147
Validate ``justified_block_root`` field of ``attestation_data``.
148148
Raise ``ValidationError`` if it's invalid.
@@ -160,8 +160,8 @@ def validate_attestation_justified_block_root(attestation_data: AttestationData,
160160
)
161161

162162

163-
def validate_attestation_latest_crosslink_root(attestation_data: AttestationData,
164-
latest_crosslink_shard_block_root: Hash32) -> None:
163+
def validate_serenity_attestation_latest_crosslink_root(attestation_data: AttestationData,
164+
latest_crosslink_shard_block_root: Hash32) -> None:
165165
"""
166166
Validate that either the ``latest_crosslink_root`` or ``shard_block_root``
167167
field of ``attestation_data`` is the provided ``latest_crosslink_shard_block_root``.
@@ -184,7 +184,7 @@ def validate_attestation_latest_crosslink_root(attestation_data: AttestationData
184184
)
185185

186186

187-
def validate_attestation_shard_block_root(attestation_data: AttestationData) -> None:
187+
def validate_serenity_attestation_shard_block_root(attestation_data: AttestationData) -> None:
188188
"""
189189
Validate ``shard_block_root`` field of `attestation_data`.
190190
Raise ``ValidationError`` if it's invalid.
@@ -203,9 +203,9 @@ def validate_attestation_shard_block_root(attestation_data: AttestationData) ->
203203
)
204204

205205

206-
def validate_attestation_aggregate_signature(state: BeaconState,
207-
attestation: Attestation,
208-
epoch_length: int) -> None:
206+
def validate_serenity_attestation_aggregate_signature(state: BeaconState,
207+
attestation: Attestation,
208+
epoch_length: int) -> None:
209209
"""
210210
Validate ``aggregate_signature`` field of ``attestation``.
211211
Raise ``ValidationError`` if it's invalid.

0 commit comments

Comments
 (0)