class RecipientsValidator[I] extends NamedLogging

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. RecipientsValidator
  2. NamedLogging
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new RecipientsValidator(viewOfInput: (I) => ViewTree, recipientsOfInput: (I) => Recipients, loggerFactory: NamedLoggerFactory)(implicit executionContext: ExecutionContext)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  9. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def logger: TracedLogger
    Attributes
    protected
    Definition Classes
    NamedLogging
  13. val loggerFactory: NamedLoggerFactory
    Attributes
    protected
    Definition Classes
    RecipientsValidatorNamedLogging
  14. implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. def noTracingLogger: Logger
    Attributes
    protected
    Definition Classes
    NamedLogging
  17. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  18. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  19. def retainInputsWithValidRecipients(requestId: RequestId, inputs: Seq[I], snapshot: PartyTopologySnapshotClient)(implicit traceContext: TraceContext): Future[(Seq[WrongRecipients], Seq[I])]

    Checks the recipients of all inputs and discards inputs corresponding to views with invalid recipients.

    Checks the recipients of all inputs and discards inputs corresponding to views with invalid recipients. Also reports a security alert on invalid recipients.

    Effectively, the method tries to establish consensus on whether the recipients of an input are valid, and if consensus cannot be established, then the input is discarded. So an input may even be discarded, if its recipients are valid (but not every recipient knows about this).

    A view v will be kept iff there is a path rp through the recipients tree (ordered leaf to root) such that the following conditions hold: 1. Every informee of the view is hosted by an active participant. 2. Every informee participant of the view v is declared as a recipient of v in the first element of rp. 3. For every descendant v2 of v and every informee participant p of v, the participant p is declared as recipient of v2. Thereby, if v2 and v have distance d, then participant p needs to be declared at element d+1 in rp. 4. Every descendant of v also meets Conditions 1-3 with the same path rp.

    Why does this give us transparency? If an informee participant p1 keeps a view v, then: - Every informee of the view v is hosted by an active participant. - Every informee participant of v has received v. - Every informee participant of v has received every descendant of v. - Every informee participant of v can evaluate the above conditions 1-4 for v and will conclude that v should be kept.

    returns

    inputs with valid recipients

    Exceptions thrown

    java.lang.IllegalArgumentException if the views corresponding to inputs have different root hashes

  20. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  21. def toString(): String
    Definition Classes
    AnyRef → Any
  22. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  23. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  24. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
    Deprecated

Inherited from NamedLogging

Inherited from AnyRef

Inherited from Any

Ungrouped