OutsideForecastValidator

scalus.cardano.ledger.rules.OutsideForecastValidator

Alonzo/Babbage validateOutsideForecast in cardano-ledger.

The Haskell rule rejects a transaction that carries redeemers and a validity-interval upper bound which epochInfoSlotToUTCTime cannot translate to wall-clock time. That translation only fails because the consensus layer provides an EpochInfo whose horizon is limited to the stability window past the current tip — beyond it, a hard fork could change slot lengths, so the slot-to-time mapping is not guaranteed. The horizon is consensus environment (Globals.epochInfo / stabilityWindow), not ledger state.

Scalus models the chain with a fixed-slot-length scalus.cardano.ledger.SlotConfig (a single, never-forking era), under which slot-to-time translation is total — so this rule cannot fire and always succeeds. This is the faithful semantics for the emulator and for replaying historical transactions (anything accepted on-chain already passed the node's horizon check); it intentionally does not reproduce the node's forecast-horizon rejection for far-future validity bounds.

Attributes

Graph
Supertypes
trait Validator
trait STS
class Object
trait Matchable
class Any
Self type

Members list

Type members

Types

final override type Error = Nothing

Inherited types

final type Context = Context

Attributes

Inherited from:
STS
final type Event = Transaction

Attributes

Inherited from:
STS
final type Result = Either[Error, Value]

Attributes

Inherited from:
STS
final type State = State

Attributes

Inherited from:
STS
final override type Value = Unit

Attributes

Inherited from:
Validator

Value members

Concrete methods

override def validate(context: Context, state: State, event: Event): Result

Attributes

Definition Classes

Inherited methods

final override def apply(context: Context, state: State, event: Event): Result

Attributes

Definition Classes
Inherited from:
Validator
def name: String

Attributes

Inherited from:
STS