AdminServerConfig(address: String = "127.0.0.1", port: Int, tls: Option[TlsServerConfig] = None, keepAlive: Option[KeepAliveConfig] = Some(KeepAliveConfig())) extends ServerConfig with Product with Serializable
A variant of ServerConfig that by default listens to connections only on the loopback interface.
- sealed trait BaseTlsArguments extends AnyRef
- case class CantonCommunityConfig(domains: Map[String, CommunityDomainConfig] = Map.empty, participants: Map[String, ParticipantConfig] = Map.empty, remoteDomains: Map[String, RemoteDomainConfig] = Map.empty, remoteParticipants: Map[String, RemoteParticipantConfig] = Map.empty, monitoring: MonitoringConfig = MonitoringConfig(), parameters: CantonParameters = CantonParameters(), features: CantonFeatures = CantonFeatures()) extends CantonConfig with Product with Serializable
CantonConfig extends AnyRef
Root configuration parameters for a single Canton process.
CantonFeatures(enablePreviewCommands: Boolean = false, enableTestingCommands: Boolean = false, enableRepairCommands: Boolean = false) extends Product with Serializable
Control which features are turned on / off in Canton
Feature flag to enable the set of commands that use functionality which we don't deem stable.
Feature flag to enable the set of commands used by Canton developers for testing purposes.
Feature flag to enable the set of commands used by Canton operators for manual repair purposes.
CantonParameters(clock: ClockConfig = ClockConfig.WallClock(), enableAdditionalConsistencyChecks: Boolean = false, manualStart: Boolean = false, timeouts: TimeoutSettings = TimeoutSettings(), participant: ParticipantNodeParameterConfig = ParticipantNodeParameterConfig()) extends Product with Serializable
Parameters for testing Canton.
if true, run additional consistency checks. This will degrade performance.
If set to true, the nodes have to be manually started via console (default false)
Sets the timeouts
CheckConfig extends AnyRef
Configuration for a check
ClientConfig(address: String = "127.0.0.1", port: Int, tls: Option[TlsClientConfig] = None, keepAlive: Option[KeepAliveConfig] = Some(KeepAliveConfig())) extends Product with Serializable
A client configuration to a corresponding server configuration
- sealed trait ClockConfig extends Product with Serializable
ConsoleCommandTimeout(bounded: TimeoutDuration = ..., unbounded: TimeoutDuration = ...) extends Product with Serializable
Configuration for console command timeouts
timeout on how long "bounded" operations, i.e. operations which normally are supposed to conclude in a fixed timeframe can run before the console considers them as failed.
timeout on how long "unbounded" operations can run, potentially infinite.
DbConfig extends StorageConfig with PrettyPrinting
Dictates that persistent data is stored in a database.
DeadlockDetectionConfig(enabled: Boolean = true, interval: NonNegativeFiniteDuration = ..., maxReports: Int = 10, reportAsWarnings: Boolean = true) extends Product with Serializable
Deadlock detection configuration
if true, we'll monitor the EC for deadlocks (or slow processings)
how often we check the EC
after how many warnings are we going to shut up.
if false, the deadlock detector will report using debug messages
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.
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.
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.
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.
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.
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.
determines the time between sending two successive ACS commitments. Must be a multiple of 1 second.
maximum number of messages sent per participant per second
maximum size of messages (in bytes) that the domain can receive through the public API
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.
- case class H2(config: Config, databaseName: Option[String] = None, migrationsPath: String = DbConfig.defaultMigrationsPath, ledgerApiJdbcUrl: Option[String] = None) extends DbConfig with Product with Serializable
HealthConfig(server: HealthServerConfig, check: CheckConfig) extends Product with Serializable
Configuration to expose a health endpoint on the given
serverrunning the configured check
Server details for hosting the health endpoint
Check for determining whether this canton process is healthy
HealthServerConfig(address: String = "127.0.0.1", port: Int) extends Product with Serializable
Configuration of health server backend.
InitConfig(autoInit: Boolean = true) extends Product with Serializable
Configuration for the node's init process
if true, the node will automatically initialize itself. In particular, it will create a new namespace, and initialize its id and its keys for signing and encryption. If false, the user has to manually perform these steps.
KeepAliveConfig(time: NonNegativeFiniteDuration = ..., timeout: NonNegativeFiniteDuration = ...) extends Product with Serializable
GRPC keep alive settings
Sets the time without read activity before sending a keepalive ping. Do not set to small numbers (default is 40)
Sets the time waiting for read activity after sending a keepalive ping (default is 20)
KeyStoreConfig(path: File, password: Option[Password]) extends Product with Serializable
Configuration for Java keystore with optional password protection.
- trait LocalNodeConfig extends NodeConfig
- trait LocalNodeParameters extends AnyRef
Memory(databaseName: Option[String] = None) extends StorageConfig with Product with Serializable
Dictates that persistent data is stored in memory.
IGNORED configuration option, used to allow users to use configuration mixins with postgres and h2
MonitoringConfig(deadlockDetection: DeadlockDetectionConfig = DeadlockDetectionConfig(), health: Option[HealthConfig] = None, metrics: Option[MetricsConfig] = None, delayLoggingThreshold: NonNegativeFiniteDuration = ..., traceContextPropagation: TraceContextPropagation = TraceContextPropagation.Disabled, logMessagePayloads: Boolean = false) extends Product with Serializable
Configuration for metrics and tracing
Should we regularly check our environment EC for deadlocks?
Optional Health check to expose an http server to monitor is the canton process is healthy
Optinal Metrics Reporter used to expose internally captured metrics
Logs a warning message once the sequencer client falls behind in processing messages from the sequencer (based on the sequencing timestamp).
How should trace contexts (debugging details associated with actions) be propagated between nodes. Defaults to all propagation being disabled for privacy reasons.
Determines whether message payloads (as well as metadata) sent through GRPC are logged.
- trait NodeConfig extends AnyRef
- final case class NonNegativeFiniteDuration(duration: Duration) extends PrettyPrinting with Product with Serializable
ParticipantNodeParameterConfig(bongTestMaxLevel: Long = 0, participantAdminRetries: Int = 10, partyChangeNotification: PartyNotificationConfig = PartyNotificationConfig.Eager, maxUnzippedDarSize: Int = 1024 * 1024 * 1024) extends Product with Serializable
General participant node parameters
upper bound on the level of a bong that the participant can initiate. The participant can still participate in bongs at higher levels. Use this to limit the load the participants can cause by initiating bongs.
The maximum number of times the com.digitalasset.canton.ledger.api.client.CommandSubmitterWithRetry will retry an admin command submitted to the com.digitalasset.canton.participant.admin.AdminWorkflowServices.
Determines how eagerly the participant nodes notify the ledger api of party changes
maximum allowed size of unzipped DAR files (in bytes) the participant can accept for uploading. Defaults to 1GB.
Password(pw: String) extends AnyVal with Product with Serializable
Password wrapper for keystores to prevent the values being printed in logs.
password value - public for supporting PureConfig parsing but callers should prefer accessing through unwrap
- case class Postgres(config: Config, databaseName: Option[String] = None, migrationsPath: String = DbConfig.defaultMigrationsPath, ledgerApiJdbcUrl: Option[String] = None, cleanOnValidationError: Boolean = false) extends DbConfig with Product with Serializable
ProcessingTimeout(unbounded: TimeoutDuration = DefaultProcessingTimeouts.unbounded, io: TimeoutDuration = DefaultProcessingTimeouts.io, default: TimeoutDuration = DefaultProcessingTimeouts.default, network: TimeoutDuration = DefaultProcessingTimeouts.network, shutdown: TimeoutDuration = DefaultProcessingTimeouts.shutdown) extends Product with Serializable
Configuration for internal await timeouts
timeout on how long "unbounded" operations can run. should be infinite in theory.
timeout for disk based operations
default finite processing timeout
timeout for things related to networking
timeout used for shutdown processes
SequencerConnectionConfig extends ProtoSerializable[protocol.v0.SequencerConnectionConfig]
Definition provided by the domain node to members with details on how to connect to the domain sequencer.
- sealed trait SequencerConnectionSelectionPolicy extends ProtoSerializable[protocol.v0.SequencerConnectionSelectionPolicy] with PrettyPrinting
ServerAuthRequirementConfig extends AnyRef
Configuration on whether server requires auth, requests auth, or no auth
ServerConfig extends AnyRef
Configuration for hosting a server api
StorageConfig extends AnyRef
Determines how a node stores persistent data.
TimeoutDuration(duration: Duration) extends Product with Serializable
Duration class used for timeouts.
TimeoutSettings(console: ConsoleCommandTimeout = ConsoleCommandTimeout(), processing: ProcessingTimeout = ProcessingTimeout()) extends Product with Serializable
Timeout settings configuration
TlsBaseServerConfig(certChainFile: File, privateKeyFile: File, protocols: Option[Seq[String]] = ..., ciphers: Option[Seq[String]] = TlsServerConfig.defaultCiphers) extends BaseTlsArguments with Product with Serializable
A wrapper for TLS server parameters supporting only server side authentication
- case class TlsClientCertificate(certChainFile: File, privateKeyFile: File) extends Product with Serializable
TlsClientConfig(certChainFile: File, clientCert: Option[TlsClientCertificate]) extends Product with Serializable
A wrapper for TLS related client configurations
the same certificate chain file as used on the server
the client certificate
TlsServerConfig(certChainFile: File, privateKeyFile: File, trustCollectionFile: Option[File] = None, clientAuth: ServerAuthRequirementConfig = ..., protocols: Option[Seq[String]] = ..., ciphers: Option[Seq[String]] = TlsServerConfig.defaultCiphers) extends BaseTlsArguments with Product with Serializable
A wrapper for TLS related server parameters supporting mutual authentication.
a file containing a certificate chain, containing the certificate chain from the server to the root CA. The certificate chain is used to authenticate the server. The order of certificates in the chain matters, i.e., it must start with the server certificate and end with the root certificate.
a file containing the server's private key. The key must not use a password.
a file containing certificates of all nodes the server trusts. Used for client authentication. It depends on the enclosing configuration whether client authentication is mandatory, optional or unsupported. If client authentication is enabled and this parameter is absent, the certificates in the JVM trust store will be used instead.
indicates whether server requires, requests, does does not request auth from clients. Normally the ledger api server requires client auth under TLS, but using this setting this requirement can be loosened. See https://github.com/digital-asset/daml/commit/edd73384c427d9afe63bae9d03baa2a26f7b7f54
supported TLS protocols. Set None (or null in config file) to default to JVM settings.
supported ciphers. Set to None (or null in config file) to default to JVM settings.
- object CantonCommunityConfig extends Serializable
- object CantonConfig
- object CantonConfigUtil
- object CheckConfig
- object ClockConfig extends Serializable
- object DbConfig extends NoTracing
Reasonable default timeouts
- object DomainParameters extends Serializable
- object NonNegativeFiniteDuration extends Serializable
- object Password extends Serializable
- object SequencerConnectionConfig
- object SequencerConnectionSelectionPolicy
- object ServerAuthRequirementConfig
- object TimeoutDuration extends Serializable
- object TlsServerConfig extends Serializable