trait IncrementalCommitmentStore extends AnyRef
A key-value store with sets of parties as keys, and with LtHash16 values. Keeps a watermark of the record time (a timestamp accompanied by a tie-breaker, to account for multiple changes with the same timestamp) of the last update.
While the store is agnostic to its use, we use is as follows. For each set S of parties such that:
- the parties are stakeholders on some contract C and
- the participant stores C in its ACS
the participant uses the store to store an LtHash16 commitment to all the contracts whose stakeholders are exactly S.
To ensure that the commitments correspond to the ACSs, the caller(s) must jointly ensure that all ACS changes are delivered to this store exactly once. In particular, upon crashes, the caller(s) must send ALL ACS changes that are later - in the lexicographic order of (timestamp, request) - than the watermark returned by the store, but must not replay any changes lower or equal to the watermark.
- Alphabetic
- By Inheritance
- IncrementalCommitmentStore
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def get()(implicit traceContext: TraceContext): Future[(RecordTime, Map[SortedSet[LfPartyId], CommitmentType])]
Retrieve the current store.
Retrieve the current store.
Defaults to an empty map with a record time of com.digitalasset.canton.participant.event.RecordTime.MinValue, if no changes have been added yet.
- abstract def update(rt: RecordTime, updates: Map[SortedSet[LfPartyId], CommitmentType], deletes: Set[SortedSet[LfPartyId]])(implicit traceContext: TraceContext): Future[Unit]
Update the commitments.
Update the commitments.
- rt
Record time of the update
- updates
The key-value updates to be written. The key set must be disjoint from
deletes
(not checked)- deletes
Keys to be deleted to the store.
- abstract def watermark(implicit traceContext: TraceContext): Future[RecordTime]
Return the record time of the latest update.
Return the record time of the latest update.
Defaults to com.digitalasset.canton.participant.event.RecordTime.MinValue if no changes have been added yet.
Concrete 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() @IntrinsicCandidate()
- 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() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- 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])