Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: first report l_ref_slot #466

Merged
merged 1 commit into from
Jun 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions src/modules/csm/csm.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from src.constants import FAR_FUTURE_EPOCH
from src.metrics.prometheus.business import CONTRACT_ON_PAUSE
from src.metrics.prometheus.duration_meter import duration_meter
from src.modules.csm.checkpoint import CheckpointsIterator, CheckpointProcessor
from src.modules.csm.state import State, InvalidState
from src.modules.csm.checkpoint import CheckpointProcessor, CheckpointsIterator
from src.modules.csm.state import InvalidState, State
from src.modules.csm.tree import Tree
from src.modules.csm.types import ReportData
from src.modules.submodules.consensus import ConsensusModule
Expand Down Expand Up @@ -71,8 +71,9 @@ def execute_module(self, last_finalized_blockstamp: BlockStamp) -> ModuleExecute
def build_report(self, blockstamp: ReferenceBlockStamp) -> tuple:
# pylint: disable=too-many-branches,too-many-statements
assert self.state
l_ref_slot = self.w3.csm.get_csm_last_processing_ref_slot(blockstamp)

converter = self.converter(blockstamp)
l_ref_slot, _ = self.current_frame_range(converter, blockstamp)
l_epoch = EpochNumber(converter.get_epoch_by_slot(l_ref_slot) + 1)
r_epoch = blockstamp.ref_epoch

Expand Down Expand Up @@ -237,7 +238,6 @@ def collect_data(self, blockstamp: BlockStamp) -> bool:
new_processed_epochs = 0
start = time.time()
for checkpoint in checkpoints:

if self.current_frame_range(converter, self._receive_last_finalized_slot()) != (l_ref_slot, r_ref_slot):
logger.info({"msg": "Checkpoints were prepared for an outdated frame, stop processing"})
raise ValueError("Outdated checkpoint")
Expand All @@ -257,7 +257,6 @@ def collect_data(self, blockstamp: BlockStamp) -> bool:

@lru_cache(maxsize=1)
def current_frame_range(self, converter: Web3Converter, blockstamp: BlockStamp) -> tuple[SlotNumber, SlotNumber]:

far_future_initial_epoch = converter.get_epoch_by_timestamp(FAR_FUTURE_EPOCH)
if converter.frame_config.initial_epoch == far_future_initial_epoch:
raise ValueError("CSM oracle initial epoch is FAR_FUTURE_EPOCH")
Expand Down
Loading