com.digitalasset.canton.sequencing.client
SequencedEventValidatorImpl
Companion object SequencedEventValidatorImpl
class SequencedEventValidatorImpl extends SequencedEventValidator with NamedLogging
Validate whether a received event is valid for processing.
- Alphabetic
- By Inheritance
- SequencedEventValidatorImpl
- NamedLogging
- SequencedEventValidator
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new SequencedEventValidatorImpl(initialPriorEvent: Option[PossiblyIgnoredSerializedEvent], unauthenticated: Boolean, optimistic: Boolean, domainId: DomainId, sequencerId: SequencerId, syncCryptoApi: SyncCryptoClient[SyncCryptoApi], loggerFactory: NamedLoggerFactory)(implicit executionContext: ExecutionContext)
- initialPriorEvent
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.
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
- implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- 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
- SequencedEventValidatorImpl → NamedLogging
- implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
- 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 must not be called concurrently as it will corrupt the prior event state.
- Definition Classes
- SequencedEventValidatorImpl → SequencedEventValidator
- def validateOnReconnect(reconnectEvent: OrdinarySerializedEvent): EitherT[Future, SequencedEventValidationError, Unit]
Validates a sequenced event when we reconnect against the prior event supplied to SequencedEventValidatorFactory.create
Validates a sequenced event when we reconnect against the prior event supplied to SequencedEventValidatorFactory.create
- Definition Classes
- SequencedEventValidatorImpl → SequencedEventValidator
- 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])