c
com.digitalasset.canton.synchronizer.sequencer.block
BlockSequencerThroughputCap
Companion object BlockSequencerThroughputCap
class BlockSequencerThroughputCap extends NamedLogging with AutoCloseable
Throughput cap that functions to protect the overall availability of the sequencer network. This algorithm provides a flexible and fair cap computation for all active sequencer clients (e.g., validators in the global synchronizer).
Requirements:
- Hard Cap: load on the network does not exceed the pre-configured maximum
- Modifiable: cap settings can be modified without a system restart (TODO(i28703))
- Fairness: under load, throughput is allocated fairly to each client
- Preference Settings: some clients may get higher throughput allocation via sequencer operator configuration (TODO(i28703))
- Elastic Demand Distribution: clients can exceed their fair share of throughput if the system provides sufficient capacity
- Quality of Service: clients may designate their transactions with a quality of service label to indicate the importance of each one (TODO(i28703))
- Message-type aware: caps are implemented with message type in mind to mainly target voluntary messages (e.g., confirmation and topology requests)
Non-requirements:
- No Resilience to Malicious Sequencers
- Approximation
- No Storage
- Annotations
- @SuppressWarnings()
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- BlockSequencerThroughputCap
- AutoCloseable
- NamedLogging
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- Protected
Instance Constructors
- new BlockSequencerThroughputCap(config: ThroughputCapConfig, clock: Clock, scheduler: Scheduler, metrics: SequencerMetrics, loggerFactory: NamedLoggerFactory)(implicit ec: ExecutionContext)
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
- def addBlockUpdate(update: OrderedBlockUpdate): Unit
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def close(): Unit
- Definition Classes
- BlockSequencerThroughputCap → AutoCloseable
- 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()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- val loggerFactory: NamedLoggerFactory
- Definition Classes
- BlockSequencerThroughputCap → 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()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def shouldRejectTransaction(requestType: SubmissionRequestType, member: Member, requestLevel: Int): Either[String, Unit]
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- 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()