final case class DomainParameters(participantResponseTimeout: NonNegativeFiniteDuration = ..., mediatorReactionTimeout: NonNegativeFiniteDuration = ..., heartbeatInterval: NonNegativeFiniteDuration = ..., ledgerTimeRecordTimeTolerance: NonNegativeFiniteDuration = ..., transferExclusivityTimeout: NonNegativeFiniteDuration = ..., reconciliationInterval: NonNegativeFiniteDuration = ..., maxRatePerParticipant: Int = 200, maxInboundMessageSize: Int = 10 * 1024 * 1024, uniqueContractKeys: Boolean = false) extends Product with Serializable

Domain parameters for performance tuning. To set these parametes, you need to be familiar with the Canton architecture. See the Canton architecture overview for further information.

participantResponseTimeout

the amount of time (w.r.t. the sequencer clock) that a participant may take to validate a command and send a response. Once the timeout has elapsed for a request, the mediator will discard all responses for that request. Choose a lower value to reduce the time to reject a command in case one of the involved participants has high load / operational problems. Choose a higher value to reduce the likelihood of commands being rejected due to timeouts.

mediatorReactionTimeout

the maximum amount of time (w.r.t. the sequencer clock) that the mediator may take to validate the responses for a request and broadcast the result message. The mediator reaction timeout starts when the confirmation response timeout has elapsed. If the mediator does not send a result message within that timeout, participants must rollback the transaction underlying the request. Chooses a lower value to reduce the time to learn whether a command has been accepted. Choose a higher value to reduce the likelihood of commands being rejected due to timeouts.

heartbeatInterval

the time between domain heartbeats. Choose a higher value to reduce the load caused by heartbeats. Choosing a lower value has the following effects:

  • Timeouts occur earlier. Thus, applications learn earlier that a command has timed out. However, this only makes a difference if the system is idle, as sequencer messages other than heartbeats will also trigger timeout.
  • Transfers use a more up-to-date topology on the target domain.
  • The exclusivity timeout for transfer-ins elapses later.
ledgerTimeRecordTimeTolerance

the maximum absolute difference between the ledger time and the record time of a command. If the absolute difference would be larger for a command, then the command must be rejected.

transferExclusivityTimeout

this timeout affects who can initiate a transfer-in. Before the timeout, only the submitter of the transfer-out can initiate the corresponding transfer-in. After the timeout, every stakeholder of the contract can initiate a transfer-in, if it has not yet happened. Moreover, if this timeout is zero, no automatic transfer-ins will occur. Choose a low value, if you want to lower the time that contracts can be inactive due to ongoing transfers. TODO(andreas): Choosing a high value currently has no practical benefit, but will have benefits in a future version.

reconciliationInterval

determines the time between sending two successive ACS commitments. Must be a multiple of 1 second.

maxRatePerParticipant

maximum number of messages sent per participant per second

maxInboundMessageSize

maximum size of messages (in bytes) that the domain can receive through the public API

uniqueContractKeys

When set, participants connected to this domain will check that contract keys are unique. When a participant is connected to a domain with unique contract keys support, it must not connect nor have ever been connected to any other domain.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DomainParameters
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DomainParameters(participantResponseTimeout: NonNegativeFiniteDuration = ..., mediatorReactionTimeout: NonNegativeFiniteDuration = ..., heartbeatInterval: NonNegativeFiniteDuration = ..., ledgerTimeRecordTimeTolerance: NonNegativeFiniteDuration = ..., transferExclusivityTimeout: NonNegativeFiniteDuration = ..., reconciliationInterval: NonNegativeFiniteDuration = ..., maxRatePerParticipant: Int = 200, maxInboundMessageSize: Int = 10 * 1024 * 1024, uniqueContractKeys: Boolean = false)

    participantResponseTimeout

    the amount of time (w.r.t. the sequencer clock) that a participant may take to validate a command and send a response. Once the timeout has elapsed for a request, the mediator will discard all responses for that request. Choose a lower value to reduce the time to reject a command in case one of the involved participants has high load / operational problems. Choose a higher value to reduce the likelihood of commands being rejected due to timeouts.

    mediatorReactionTimeout

    the maximum amount of time (w.r.t. the sequencer clock) that the mediator may take to validate the responses for a request and broadcast the result message. The mediator reaction timeout starts when the confirmation response timeout has elapsed. If the mediator does not send a result message within that timeout, participants must rollback the transaction underlying the request. Chooses a lower value to reduce the time to learn whether a command has been accepted. Choose a higher value to reduce the likelihood of commands being rejected due to timeouts.

    heartbeatInterval

    the time between domain heartbeats. Choose a higher value to reduce the load caused by heartbeats. Choosing a lower value has the following effects:

    • Timeouts occur earlier. Thus, applications learn earlier that a command has timed out. However, this only makes a difference if the system is idle, as sequencer messages other than heartbeats will also trigger timeout.
    • Transfers use a more up-to-date topology on the target domain.
    • The exclusivity timeout for transfer-ins elapses later.
    ledgerTimeRecordTimeTolerance

    the maximum absolute difference between the ledger time and the record time of a command. If the absolute difference would be larger for a command, then the command must be rejected.

    transferExclusivityTimeout

    this timeout affects who can initiate a transfer-in. Before the timeout, only the submitter of the transfer-out can initiate the corresponding transfer-in. After the timeout, every stakeholder of the contract can initiate a transfer-in, if it has not yet happened. Moreover, if this timeout is zero, no automatic transfer-ins will occur. Choose a low value, if you want to lower the time that contracts can be inactive due to ongoing transfers. TODO(andreas): Choosing a high value currently has no practical benefit, but will have benefits in a future version.

    reconciliationInterval

    determines the time between sending two successive ACS commitments. Must be a multiple of 1 second.

    maxRatePerParticipant

    maximum number of messages sent per participant per second

    maxInboundMessageSize

    maximum size of messages (in bytes) that the domain can receive through the public API

    uniqueContractKeys

    When set, participants connected to this domain will check that contract keys are unique. When a participant is connected to a domain with unique contract keys support, it must not connect nor have ever been connected to any other domain.

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. def activenessTimeForDecisionTime(decisionTime: CantonTimestamp): CantonTimestamp

    Left inverse to decisionTimeFor.

    Left inverse to decisionTimeFor. Gives the minimum timestamp value if the activeness time would be below this value.

  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def automaticTransferInEnabled: Boolean
  7. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @HotSpotIntrinsicCandidate()
  8. def decisionTimeFor(activenessTime: CantonTimestamp): CantonTimestamp

    Computes the decision time for the given activeness time.

    Computes the decision time for the given activeness time.

    Right inverse to activenessTimeForDecisionTime.

  9. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  11. val heartbeatInterval: NonNegativeFiniteDuration
  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. val ledgerTimeRecordTimeTolerance: NonNegativeFiniteDuration
  14. def maxBatchMessageSize: Int

    max size limit for the sum of the envelope payloads of a batch

    max size limit for the sum of the envelope payloads of a batch

    taking 0.9 of the max inbound size, assuming that this will be enough to accommodate any metadata and the list of recipients.

  15. val maxInboundMessageSize: Int
  16. val maxRatePerParticipant: Int
  17. val mediatorReactionTimeout: NonNegativeFiniteDuration
  18. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  21. def participantResponseDeadlineFor(timestamp: CantonTimestamp): CantonTimestamp
  22. val participantResponseTimeout: NonNegativeFiniteDuration
  23. val reconciliationInterval: NonNegativeFiniteDuration
  24. def sequencerSigningTolerance: NonNegativeFiniteDuration

    In some situations, the sequencer signs transaction with slightly outdated keys.

    In some situations, the sequencer signs transaction with slightly outdated keys. This is to allow recipients to verify sequencer signatures when the sequencer keys have been rolled over and they have not yet received the new keys. This parameter determines how much outdated a signing key can be. Choose a higher value to avoid that the sequencer refuses to sign and send messages. Choose a lower value to reduce the latency of sequencer key rollovers. The sequencer signing tolerance must be at least participantResponseTimeout + mediatorReactionTimeout.

  25. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  26. def toProto: protocol.v0.DomainParameters
  27. def transferExclusivityLimitFor(baseline: CantonTimestamp): CantonTimestamp
  28. val transferExclusivityTimeout: NonNegativeFiniteDuration
  29. val uniqueContractKeys: Boolean
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  32. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Deprecated Value Members

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

    (Since version ) see corresponding Javadoc for more information.

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped