LogoLogo
  • Imua
    • About
  • Manifesto
    • The Problems
    • The Principles
  • Architecture
    • Imua Design Principles
    • Imua Network
    • Imua Modules
    • Client Chain Bridges
      • Trustless Verification of Client Chain State
      • Handling Race Conditions between Imua and Client Chains
    • Client Chain Contracts
  • Concepts
    • Ecosystem
      • Re/stakers
      • Operators
      • Services (AVS)
        • Service Integration with Imua
        • Service Committee
        • Service Integration Details
    • restaked Proof-of-Stake (rPOS)
    • Multi-Token Restaking
    • Multi-Chain Restaking with Trustless Bridging
    • Voting Power
    • Price Oracle
    • Flexible Integration with AVS
    • Tribe Staking
  • Governance
  • Risk Management
    • Risk Analysis
      • Risk Modeling
      • Risk Parameters
      • Crypto-Economic Risk
      • Unintended Slashing
      • Black Swan Events
    • Risk Mitigation
      • Smart Contract Simplicity
      • Audits
      • Slashing Prevention
      • Slashing Vetos
      • Insurance Pools
      • Circuit Breakers
  • Components
    • Testnet
    • Oracle Module
      • Reaching Consensus on Asset Prices
      • Penalty
      • Implementation Detail
    • Smart Contracts
    • Explorer
    • Registry
  • Validator Setup
    • Prerequisites
    • Node Install
    • Compiling Binary from Source
    • Oracle Price Feeder
    • Running the Node
    • Snapshot
    • Register Option 1 (Bootstrap)
    • Register Option 2 (Post Network Launch)
    • Deposit Tokens
    • Delegating Tokens
    • Confirm Election Status
    • Faucets
    • Managing The Validator
    • Security Best Practices
    • Risks & Mitigation
    • Participation in Governance
    • FAQs & Resources
  • Testnet Upgrade to v1.1.2
  • AVS Setup
    • AVS Overview
    • Prerequisites
    • Enhanced and Automated Edition of hello-avs integration guide&example
    • Building the AVS in Imua
    • Hello-World-AVS Example
    • Becoming AVS Operator
    • AVS Register and Deploy
    • AVS Task Example
  • Whitepaper (2023)
    • .pdf
  • FAQ
    • What problems is Imua solving?
    • What are the main design trade-offs that had to be made with an omnichain design?
    • Does the omnichain design imply added trust assumptions (relative to a single-chain design)?
    • What concurrency-related challenges would you face with a different design?
    • How does Imua integrate with new chains?
    • Do specific chains prove unique challenges w.r.t. integration?
    • How is the cross-chain communication is achieved?
    • What are the known attack / censorship vectors here, if any?
    • Are the restaked tokens being pooled in a centralized account?
    • Who will run the validators in the Imua network?
    • Is Imua an AVS?
    • How does Imua address the risks of overloading L1 social consensus?
    • Does the Imua queuing system raise concerns around latency?
    • What are the main benefits of an omnichain design?
Powered by GitBook
On this page
  • Slashing
  • Downtime
  • Malicious Quoting
  1. Components
  2. Oracle Module

Penalty

Slashing

The oracle module ensures the security and stability of the pricing system by providing a slashing mechanism, which enforces penalties for two types of misbehavior by validators: downtime (failure to report a price) and malicious behavior (providing incorrect prices). This mechanism serves to maintain reliable and trustworthy price feeds.

Params

Slashing: &SlashingParams{
  ReportedRoundsWindow:        100,
  MinReportedPerWindow:        sdkmath.LegacyNewDec(1).Quo(sdkmath.LegacyNewDec(2)),
  OracleMissJailDuration:      600 * time.Second,
  OracleMaliciousJailDuration: 30 * 24 * time.Hour,
  SlashFractionMiss:           sdkmath.LegacyNewDec(1).Quo(sdkmath.LegacyNewDec(20)),
  SlashFractionMalicious:      sdkmath.LegacyNewDec(1).Quo(sdkmath.LegacyNewDec(10)),
 },
  • ReportedRoundsWindow: The sliding window (default: 100 rounds) used to observe validator performance. Only rounds with achieved price consensus are counted.

  • MinReportedPerWindow: The minimum percentage of rounds in a ReportedRoundsWindow where a validator must provide valid prices.

  • OracleMissJailDuration: The period a validator is removed from the active set due to downtime penalties, during which they cannot rejoin.

  • OracleMaliciousJailDuration: The period a validator is removed from the active set for malicious behavior, with rejoining prohibited during this time.

  • SlashFractionMalicious: The percentage of a validator’s assets slashed as a penalty for malicious behavior.

Downtime

Active validators is expected to submit price quotes within the quoting window for each active tokenFeeder. When a validator fails to provide a correct price during a valid round, they accumulate "miss" counts. A valid round is one where a consensus price has been reached, and a correct price is one that strictly matches the consensus price (in the case of Chainlink as the source). If the number of misses exceeds a defined threshold, a downtime-penalty event is triggered. This results in the following:

  • Jailing: The validator is temporarily removed from the active validator set and cannot rejoin for a period defined by OracleMissJailDuration.

    • The default duration is set to 600 seconds.

The miss count follows these rules:

  1. Observation Period: The observation period is a sliding window measured in rounds. The window size is defined in the parameters as ReportedRoundsWindow (default is 100). Only rounds where consensus on price is achieved are considered in this window.

    • For example, in a 5-round observation period, if only round_1 and round_3 reach consensus, data from round_2, round_4, and round_5 are excluded from miss calculations.

  2. Miss Counting: A miss is recorded if the following conditions are met at the end of each round's price window:

    1. The validator is active in the validator set.

    2. The round has a consensus price.

    3. The validator did not submit a price matching the consensus price.

    4. The round is not closed by a validator set change.The round is not sealed by a validator set change.

      • If, during any block within the quotation window of a round, price consensus has not been reached (i.e., not enough voting power has been accumulated) and a validator set change occurs, the current quotation window will be closed. No further prices will be processed, and the previous round's price will be used to update the current round's price.

  3. Downtime Penalty Trigger: If the count of misses exceeds ReportedRoundsWindow - ReportedRoundsWindow * MinReportedPerWindow, downtime penalty is triggered.

  4. Default values:

    1. ReportedRoundsWindow: 100

    2. MinReportedPerWindow: 0.5

      1. This means 50% of the ReportedRoundsWindow.

Malicious Quoting

When the oracle module establishes a consensus price, such as {price:123, detID:5}, a malicious-slashing event is triggered if an active validator submits price data with a matching detID but a differing price value. The slashing result involves:

  1. Asset Reduction

    The validator's assets will be slashed, with the reduction ratio defined in the parameters as SlashFractionMalicious. The slashed assets will be burnt.

    Slashing Priority:

    1. First, the operator's assets in pendingUndelegation will be slashed.

    2. If necessary, the slashing will extend to the operator's assets in assetsPool (the assets currently delegated).

  2. Jailing

    The validator will be jailed, meaning they are forced to exit the active_validator_set and are unable to rejoin for a specified period.

    • The jail duration is defined in the parameters as OracleMaliciousJailDuration.

  3. Default values:

    1. SlashFractionMalicious: 0.1

      1. This means that 10% of the staked assets will be slashed.

    2. OracleMaliciousJailDuration: 2592000 seconds

PreviousReaching Consensus on Asset PricesNextImplementation Detail

Last updated 4 months ago