class SequencedEventValidator extends ValidateSequencedEvent with NamedLogging
Validate whether a received event is valid for processing.
- Alphabetic
- By Inheritance
- SequencedEventValidator
- NamedLogging
- ValidateSequencedEvent
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new SequencedEventValidator(initialPriorEventMetadata: Option[SequencedEventMetadata], unauthenticated: Boolean, optimistic: Boolean, skipValidation: Boolean, domainId: DomainId, sequencerId: SequencerId, syncCryptoApi: SyncCryptoClient, timely: FutureSupervisor, loggerFactory: NamedLoggerFactory)(implicit executionContext: ExecutionContext)
- initialPriorEventMetadata
the preceding event of the first event to be validated (can be none on a new connection)
- unauthenticated
if true, then the connection is unauthenticated. in such cases, we have to skip some validations.
- optimistic
if true, we'll try to be optimistic and validate the event possibly with some stale data. this means that during sequencer key rolling, a message might have been signed by a key that was just revoked. the security impact is very marginal (and an adverse scenario only possible in the async ms of this node validating a few inflight transactions). therefore, this parameter should be set to true due to performance reasons.
- skipValidation
if this flag is set to true, then the sequenced event validation will be skipped entirely. only use it in case of a programming error and the need to unblock a deployment.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- val loggerFactory: NamedLoggerFactory
- Attributes
- protected
- Definition Classes
- SequencedEventValidator → NamedLogging
- implicit def loggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def noTracingLogger: Logger
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def validate(event: OrdinarySerializedEvent): EitherT[Future, SequencedEventValidationError, Unit]
Validates that the supplied event is suitable for processing from the prior event.
Validates that the supplied event is suitable for processing from the prior event. Currently the signature not being valid is not considered an error but its validity is returned to the caller to allow them to choose what to do with the event. If the event is successfully validated (regardless of the signature check) it becomes the event that the event in a following call will be validated against. We currently assume this is safe to do as if the event fails to be handled by the application then the sequencer client will halt and will need recreating to restart event processing. This method should not be called concurrently as it will corrupt the prior event state.
- Definition Classes
- SequencedEventValidator → ValidateSequencedEvent
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])