Skip to content

change oracle slashing to be checked every few hours#628

Open
StrathCole wants to merge 3 commits intomainfrom
strath/oracle-slashing
Open

change oracle slashing to be checked every few hours#628
StrathCole wants to merge 3 commits intomainfrom
strath/oracle-slashing

Conversation

@StrathCole
Copy link
Copy Markdown
Collaborator

@StrathCole StrathCole commented Dec 9, 2025

This pull request introduces an early slashing mechanism for validators in the oracle module who have already exceeded the maximum allowed missed votes and cannot recover within the current SlashWindow. This allows the system to penalize non-performing validators sooner, improving protocol security and responsiveness.

Early Slashing Mechanism:

  • Added a new method SlashExceedingMissCounters to the keeper, which slashes and potentially jails validators as soon as their missed vote count exceeds the threshold where they can no longer meet the minimum valid vote rate for the window. This method is called every 7200 blocks (approx 12h), in addition to the existing end-of-window slashing. [1] [2]

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request implements an early slashing mechanism for the oracle module that proactively penalizes validators who have exceeded the miss threshold and cannot recover to meet the minimum valid vote rate by the end of the current SlashWindow. This improves protocol security by taking action against non-performing validators sooner rather than waiting for the full slash window to complete.

Key Changes:

  • Introduced SlashExceedingMissCounters method that identifies and slashes validators who have mathematically exceeded the recovery threshold
  • Modified SlashAndResetMissCounters to call the new method before resetting counters, consolidating slashing logic
  • Added periodic early slashing check every 7200 blocks (~12 hours) in the EndBlocker

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
x/oracle/keeper/slash.go Implements the new SlashExceedingMissCounters method with early slashing logic and refactors SlashAndResetMissCounters to use it
x/oracle/abci.go Adds conditional check to invoke early slashing every 7200 blocks (~12 hours) in addition to the end-of-window slashing
x/oracle/keeper/slash_test.go Adds comprehensive test coverage for the new early slashing functionality with edge cases for bonded, unbonded, and jailed validators

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@StrathCole StrathCole changed the title change oracle slashing to be checked every 100 blocks change oracle slashing to be checked every few hours Dec 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants