package config
- Alphabetic
- Public
- Protected
Type Members
- trait BaseParticipantConfig extends NodeConfig with Product with Serializable
Base for all participant configs - both local and remote
- final case class CantonEngineConfig(enableEngineStackTraces: Boolean = false, iterationsBetweenInterruptions: Long = 10000, submissionPhaseLogging: EngineLoggingConfig = EngineLoggingConfig(enabled = true), validationPhaseLogging: EngineLoggingConfig = EngineLoggingConfig(enabled = false), enableAdditionalConsistencyChecks: Boolean = false) extends Product with Serializable
Configure the behaviour of the Daml Engine
Configure the behaviour of the Daml Engine
- enableEngineStackTraces
If true, DAMLe stack traces will be enabled
- iterationsBetweenInterruptions
Number of engine iterations between forced interruptions (outside needs of information).
- submissionPhaseLogging
Configuration for logging in phase one (command submission) of canton transaction processing
- validationPhaseLogging
Configuration for logging in phase three (transaction validation) of canton transaction processing
- enableAdditionalConsistencyChecks
When true, extra consistency checks are performed for transactions, ensuring that serialization/deserialization and enrichment/impoverishment processes remain idempotent on transaction outputs generated by the engine. Requires canton.parameters.non-standard-config = true
- final case class ContractLoaderConfig(maxQueueSize: PositiveInt = ContractLoaderConfig.defaultMaxQueueSize, maxBatchSize: PositiveInt = ContractLoaderConfig.defaultMaxBatchSize, parallelism: PositiveInt = ContractLoaderConfig.defaultMaxParallelism) extends Product with Serializable
Parameters to control batch loading during phase 1 / interpretation
Parameters to control batch loading during phase 1 / interpretation
- maxQueueSize
how many parallel lookups can be queued before we start to backpressure loading
- maxBatchSize
how many contract lookups to batch together
- parallelism
how many parallel contract lookup requests should be sent to the db when prepopulating the cache
- final case class DeclarativeConnectionConfig(synchronizerAlias: String, connections: NonEmpty[Map[String, DeclarativeSequencerConnectionConfig]], manualConnect: Boolean = false, priority: Int = 0, initializeFromTrustedSynchronizer: Boolean = false, trustThreshold: PositiveInt = PositiveInt.one) extends UniformCantonConfigValidation with Product with Serializable
Declarative synchronizer connection configuration
Declarative synchronizer connection configuration
- synchronizerAlias
the alias to refer to this connection
- connections
the list of sequencers with endpoints
- manualConnect
if true then the connection should be manual and require explicitly operator action
- priority
sets the priority of the connection. if a transaction can be sent to several synchronizers, it will use the one with the highest priority
- initializeFromTrustedSynchronizer
if true then the participant assumes that the synchronizer trust certificate of the participant is already issued
- trustThreshold
from how many sequencers does the node have to receive a notification to trust that it was really observed
- final case class DeclarativeDarConfig(location: String, requestHeaders: Map[String, String] = Map(), expectedMainPackage: Option[String] = None) extends UniformCantonConfigValidation with Product with Serializable
Declarative dar definition
Declarative dar definition
- location
the path (or URL) to the dar or dar directory
- requestHeaders
optionally add additional request headers to download the dar
- expectedMainPackage
which package id should be expected as the main package
- final case class DeclarativeIdpConfig(identityProviderId: String, isDeactivated: Boolean = false, jwksUrl: String, issuer: String, audience: Option[String] = None) extends UniformCantonConfigValidation with Product with Serializable
Declarative Idp config
- final case class DeclarativeParticipantConfig(checkSelfConsistency: Boolean = true, fetchedDarDirectory: File = new File("fetched-dars"), dars: Seq[DeclarativeDarConfig] = Seq(), parties: Seq[DeclarativePartyConfig] = Seq(), removeParties: Boolean = false, idps: Seq[DeclarativeIdpConfig] = Seq(), removeIdps: Boolean = false, users: Seq[DeclarativeUserConfig] = Seq(), removeUsers: Boolean = false, connections: Seq[DeclarativeConnectionConfig] = Seq(), removeConnections: Boolean = false) extends UniformCantonConfigValidation with Product with Serializable
Declarative participant config
Declarative participant config
- checkSelfConsistency
if set to true (default), then after every sync operation we'll check again if it really succeeded
- fetchedDarDirectory
temporary directory to store the dars to
- dars
which dars should be uploaded
- parties
which parties should be allocated
- removeParties
if true, then any "excess party" found on the node will be deleted
- idps
which identity providers should be allocated
- removeIdps
if true, any excess idp found on the node will be deleted
- users
which users should be allocated
- removeUsers
if true, then any "excess user" found on the node will be deleted
- connections
which connections should be configured
- removeConnections
if true, then any excess connection will be disabled
- final case class DeclarativePartyConfig(party: String, synchronizers: Seq[String] = Seq.empty, permission: ParticipantPermissionConfig = ParticipantPermissionConfig.Submission) extends UniformCantonConfigValidation with Product with Serializable
Declarative party definition
Declarative party definition
- synchronizers
if not empty, the party will be added to the selected synchronizers only, refered to by alias
- permission
the permission of the hosting participant
- final case class DeclarativeSequencerConnectionConfig(endpoints: NonEmpty[Seq[Endpoint]], transportSecurity: Boolean = false, customTrustCertificates: Option[File] = None)(customTrustCertificatesFromNode: Option[ByteString] = None) extends UniformCantonConfigValidation with Product with Serializable
Declaratively define sequencer endpoints
Declaratively define sequencer endpoints
- endpoints
the list of endpoints for the given sequencer. all endpoints must be of the same sequencer (same-id)
- transportSecurity
if true then TLS will be used
- customTrustCertificates
if the TLS certificate used cannot be validated against the JVMs trust store, then a trust store can be provided
- final case class DeclarativeUserConfig(user: String, primaryParty: Option[String] = None, isDeactivated: Boolean = false, annotations: Map[String, String] = Map.empty, identityProviderId: String = "", rights: DeclarativeUserRightsConfig = DeclarativeUserRightsConfig())(resourceVersion: String = "") extends UniformCantonConfigValidation with Product with Serializable
Declaratively control users
Declaratively control users
- user
the user id
- primaryParty
the primary party that should be used for the user
- isDeactivated
if true then the user is deactivatedd
- annotations
a property bag of annotations that can be stored alongside the user
- identityProviderId
the idp of the given user
- rights
the rights granted to the party
- final case class DeclarativeUserRightsConfig(actAs: Set[String] = Set(), readAs: Set[String] = Set(), readAsAnyParty: Boolean = false, participantAdmin: Boolean = false, identityProviderAdmin: Boolean = false) extends UniformCantonConfigValidation with Product with Serializable
Declarative user rights definition
Declarative user rights definition
- actAs
the name of the parties the user can act as. parties must exist. if they don't contain a namespace, then the participants namespace will be used
- readAs
the name of the parties the user can read as.
- readAsAnyParty
if true then the user can read as any party
- participantAdmin
if true then the user can act as a participant admin
- identityProviderAdmin
if true, then the user can act as an identity provider admin
- final case class EnterpriseParticipantFeaturesConfig(profileDir: Option[Path] = None) extends PredicatedCantonConfigValidation with Product with Serializable
Enterprise features configuration
Enterprise features configuration
- profileDir
path to the directory used for Daml profiling
- final case class JournalPruningConfig(targetBatchSize: PositiveInt = JournalPruningConfig.DefaultTargetBatchSize, initialInterval: NonNegativeFiniteDuration = JournalPruningConfig.DefaultInitialInterval, maxBuckets: PositiveInt = JournalPruningConfig.DefaultMaxBuckets) extends UniformCantonConfigValidation with Product with Serializable
Control background journal pruning
Control background journal pruning
During processing, Canton will keep some data in journals (contract keys, active contracts). These journals can be pruned in order to reclaim space.
Background pruning is initiated by the ACS commitment processor once a commitment interval has been completed. Therefore, pruning can't run more frequently than the reconciliation interval of a synchronizer.
- targetBatchSize
The target batch size for pruning. The actual batch size will evolve under load.
- initialInterval
The initial interval size for pruning
- maxBuckets
The maximum number of buckets used for any pruning interval
- final case class LedgerApiServerConfig(address: String = "127.0.0.1", internalPort: Option[Port] = None, tls: Option[TlsServerConfig] = None, authServices: Seq[AuthServiceConfig] = Seq.empty, adminToken: Option[String] = None, jwtTimestampLeeway: Option[JwtTimestampLeeway] = None, keepAliveServer: Option[LedgerApiKeepAliveServerConfig] = Some(
LedgerApiKeepAliveServerConfig()
), maxInboundMessageSize: NonNegativeInt = ServerConfig.defaultMaxInboundMessageSize, rateLimit: Option[RateLimitingConfig] = Some(DefaultRateLimit), postgresDataSource: PostgresDataSourceConfig = PostgresDataSourceConfig(), databaseConnectionTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultDatabaseConnectionTimeout, indexService: IndexServiceConfig = LedgerIndexServiceConfig(), commandService: CommandServiceConfig = CommandServiceConfig(), userManagementService: UserManagementServiceConfig = UserManagementServiceConfig(), partyManagementService: PartyManagementServiceConfig = PartyManagementServiceConfig(), managementServiceTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultManagementServiceTimeout, enableCommandInspection: Boolean = true, identityProviderManagement: IdentityProviderManagementConfig = LedgerApiServerConfig.DefaultIdentityProviderManagementConfig, interactiveSubmissionService: InteractiveSubmissionServiceConfig = InteractiveSubmissionServiceConfig.Default, topologyAwarePackageSelection: TopologyAwarePackageSelectionConfig = TopologyAwarePackageSelectionConfig.Default) extends ServerConfig with Product with Serializable
Canton configuration case class to pass-through configuration options to the ledger api server
Canton configuration case class to pass-through configuration options to the ledger api server
- address
ledger api server host name.
- internalPort
ledger api server port.
- tls
tls configuration setting from ledger api server.
- authServices
type of authentication services used by ledger-api server. If empty, we use a wildcard. Otherwise, the first service response that does not say "unauthenticated" will be used.
- adminToken
token that should grant admin access when presented by a client on the ledger api
- jwtTimestampLeeway
leeway parameters for JWTs
- keepAliveServer
keep-alive configuration for ledger api requests
- maxInboundMessageSize
maximum inbound message size on the ledger api
- rateLimit
limit the ledger api server request rates based on system metrics
- postgresDataSource
config for ledger api server when using postgres
- databaseConnectionTimeout
database connection timeout
- indexService
configurations pertaining to the ledger api server's internal "index service"
- commandService
configurations pertaining to the ledger api server's "command service"
- userManagementService
configurations pertaining to the ledger api server's "user management service"
- partyManagementService
configurations pertaining to the ledger api server's "party management service"
- managementServiceTimeout
ledger api server management service maximum duration. Duration has to be finite as the ledger api server uses java.time.duration that does not support infinite scala durations.
- enableCommandInspection
enable command inspection service over the ledger api
- identityProviderManagement
configurations pertaining to the ledger api server's "identity provider management service"
- final case class LedgerApiServerParametersConfig(contractIdSeeding: Seeding = Seeding.Strong, indexer: IndexerConfig = IndexerConfig(), tokenExpiryGracePeriodForStreams: Option[NonNegativeDuration] = None, contractLoader: ContractLoaderConfig = ContractLoaderConfig()) extends Product with Serializable
Parameters for the ledger api server
Parameters for the ledger api server
- contractIdSeeding
test-only way to override the contract-id seeding scheme. Must be Strong in production (and Strong is the default). Only configurable to reduce the amount of secure random numbers consumed by tests and to avoid flaky timeouts during continuous integration.
- indexer
parameters how the participant populates the index db used to serve the ledger api
- tokenExpiryGracePeriodForStreams
grace periods for streams that postpone termination beyond the JWT expiry
- final case class ParticipantInitConfig(identity: IdentityConfig = IdentityConfig.Auto(), ledgerApi: ParticipantLedgerApiInitConfig = ParticipantLedgerApiInitConfig(), generateIntermediateKey: Boolean = false, generateTopologyTransactionsAndKeys: Boolean = true) extends InitConfigBase with UniformCantonConfigValidation with Product with Serializable
Init configuration specific to participant nodes
Init configuration specific to participant nodes
- ledgerApi
ledgerApi related init config
- final case class ParticipantNodeConfig(init: ParticipantInitConfig = ParticipantInitConfig(), crypto: CryptoConfig = CryptoConfig(), ledgerApi: LedgerApiServerConfig = LedgerApiServerConfig(), httpLedgerApi: Option[JsonApiConfig] = None, adminApi: AdminServerConfig = AdminServerConfig(), storage: StorageConfig = StorageConfig.Memory(), testingTime: Option[TestingTimeServiceConfig] = None, parameters: ParticipantNodeParameterConfig = ParticipantNodeParameterConfig(), sequencerClient: SequencerClientConfig = SequencerClientConfig(), replication: Option[ReplicationConfig] = None, features: EnterpriseParticipantFeaturesConfig = EnterpriseParticipantFeaturesConfig.default, monitoring: NodeMonitoringConfig = NodeMonitoringConfig(), topology: TopologyConfig = TopologyConfig(), alphaDynamic: DeclarativeParticipantConfig = DeclarativeParticipantConfig()) extends LocalNodeConfig with BaseParticipantConfig with ConfigDefaults[DefaultPorts, ParticipantNodeConfig] with UniformCantonConfigValidation with Product with Serializable
Configuration parameters for a single participant
Configuration parameters for a single participant
Please note that any client connecting to the ledger-api of the respective participant must set his GRPC max inbound message size to 2x the value defined here, as we assume that a Canton transaction of N bytes will not be bigger than 2x N on the ledger-api. Though this is just an assumption. Please also note that the participant will refuse to connect to a synchronizer where its max inbound message size is not sufficient to guarantee the processing of all transactions.
- init
determines how this node is initialized
- crypto
determines the algorithms used for signing, hashing, and encryption
- ledgerApi
parameters of the interfaces that applications use to change and query the ledger
- httpLedgerApi
parameters for configuring the interaction with ledger via the HTTP JSON API. Configuring this key will enable the HTTP JSON API server.
- adminApi
parameters of the interface used to administrate the participant
- storage
determines how the participant stores the ledger
- testingTime
determines whether and how to support the ledger API time service
- parameters
general participant node parameters
- final case class ParticipantNodeParameterConfig(adminWorkflow: AdminWorkflowConfig = AdminWorkflowConfig(), maxUnzippedDarSize: Int = 1024 * 1024 * 1024, batching: BatchingConfig = BatchingConfig(), caching: CachingConfigs = CachingConfigs(), stores: ParticipantStoreConfig = ParticipantStoreConfig(), reassignmentTimeProofFreshnessProportion: NonNegativeInt = NonNegativeInt.tryCreate(3), minimumProtocolVersion: Option[ParticipantProtocolVersion] = Some(
ParticipantProtocolVersion(ProtocolVersion.v33)
), initialProtocolVersion: ParticipantProtocolVersion = ParticipantProtocolVersion(
ProtocolVersion.latest
), sessionSigningKeys: SessionSigningKeysConfig = SessionSigningKeysConfig.disabled, alphaVersionSupport: Boolean = false, betaVersionSupport: Boolean = false, dontWarnOnDeprecatedPV: Boolean = false, warnIfOverloadedFor: Option[NonNegativeFiniteDuration] = Some(
config.NonNegativeFiniteDuration.ofSeconds(20)
), ledgerApiServer: LedgerApiServerParametersConfig = LedgerApiServerParametersConfig(), engine: CantonEngineConfig = CantonEngineConfig(), journalGarbageCollectionDelay: NonNegativeFiniteDuration = config.NonNegativeFiniteDuration.ofSeconds(0), disableUpgradeValidation: Boolean = false, watchdog: Option[WatchdogConfig] = None, packageMetadataView: PackageMetadataViewConfig = PackageMetadataViewConfig(), commandProgressTracker: CommandProgressTrackerConfig = CommandProgressTrackerConfig(), unsafeOnlinePartyReplication: Option[UnsafeOnlinePartyReplicationConfig] = None) extends LocalNodeParametersConfig with UniformCantonConfigValidation with Product with Serializable
General participant node parameters
General participant node parameters
- adminWorkflow
Configuration options for Canton admin workflows
- maxUnzippedDarSize
maximum allowed size of unzipped DAR files (in bytes) the participant can accept for uploading. Defaults to 1GB.
- batching
Various parameters that control batching related behavior
- reassignmentTimeProofFreshnessProportion
Proportion of the target synchronizer exclusivity timeout that is used as a freshness bound when requesting a time proof. Setting to 3 means we'll take a 1/3 of the target synchronizer exclusivity timeout and potentially we reuse a recent timeout if one exists within that bound, otherwise a new time proof will be requested. Setting to zero will disable reusing recent time proofs and will instead always fetch a new proof.
- minimumProtocolVersion
The minimum protocol version that this participant will speak when connecting to a synchronizer
- initialProtocolVersion
The initial protocol version used by the participant (default latest), e.g., used to create the initial topology transactions.
- alphaVersionSupport
If set to true, will allow the participant to connect to a synchronizer with dev protocol version and will turn on unsafe Daml LF versions.
- dontWarnOnDeprecatedPV
If true, then this participant will not emit a warning when connecting to a sequencer using a deprecated protocol version (such as 2.0.0).
- warnIfOverloadedFor
If all incoming commands have been rejected due to PARTICIPANT_BACKPRESSURE during this interval, the participant will log a warning.
- ledgerApiServer
ledger api server parameters The following specialized participant node performance tuning parameters may be grouped once a more final set of configs emerges.
- journalGarbageCollectionDelay
How much time to delay the canton journal garbage collection
- disableUpgradeValidation
Disable the package upgrade verification on DAR upload
- packageMetadataView
Initialization parameters for the package metadata in-memory store.
- sealed trait ParticipantPermissionConfig extends UniformCantonConfigValidation
- final case class ParticipantProtocolConfig(minimumProtocolVersion: Option[ProtocolVersion], sessionSigningKeys: SessionSigningKeysConfig, alphaVersionSupport: Boolean, betaVersionSupport: Boolean, dontWarnOnDeprecatedPV: Boolean) extends ProtocolConfig with Product with Serializable
- final case class ParticipantStoreConfig(pruningMetricUpdateInterval: Option[PositiveDurationSeconds] = config.PositiveDurationSeconds.ofHours(1L).some, journalPruning: JournalPruningConfig = JournalPruningConfig()) extends UniformCantonConfigValidation with Product with Serializable
Parameters for the participant node's stores
Parameters for the participant node's stores
- pruningMetricUpdateInterval
How frequently to update the
max-event-age
pruning progress metric in the background. A setting of None disables background metric updating.
- final case class RemoteParticipantConfig(adminApi: FullClientConfig, ledgerApi: FullClientConfig, token: Option[String] = None) extends BaseParticipantConfig with UniformCantonConfigValidation with Product with Serializable
Configuration to connect the console to a participant running remotely.
Configuration to connect the console to a participant running remotely.
- adminApi
the configuration to connect the console to the remote admin api
- ledgerApi
the configuration to connect the console to the remote ledger api
- token
optional bearer token to use on the ledger-api if jwt authorization is enabled
- sealed trait TestingTimeServiceConfig extends UniformCantonConfigValidation
Optional ledger api time service configuration for demo and testing only
- final case class UnsafeOnlinePartyReplicationConfig(pauseSynchronizerIndexingDuringPartyReplication: Boolean = false) extends UniformCantonConfigValidation with Product with Serializable
Parameters for the Online Party Replication (OPR) preview feature (unsafe for production)
Parameters for the Online Party Replication (OPR) preview feature (unsafe for production)
- pauseSynchronizerIndexingDuringPartyReplication
whether to pause synchronizer indexing during party replication
Value Members
- object CantonEngineConfig extends Serializable
- object ContractLoaderConfig extends Serializable
- object DeclarativeConnectionConfig extends Serializable
- object DeclarativeParticipantConfig extends Serializable
- object DeclarativeSequencerConnectionConfig extends Serializable
- object EnterpriseParticipantFeaturesConfig extends Serializable
- object JournalPruningConfig extends Serializable
- object LedgerApiServerConfig extends Serializable
- object LedgerApiServerParametersConfig extends Serializable
- object ParticipantInitConfig extends Serializable
- object ParticipantNodeConfig extends Serializable
- object ParticipantNodeParameterConfig extends Serializable
- object ParticipantPermissionConfig
- object ParticipantStoreConfig extends Serializable
- object RemoteParticipantConfig extends Serializable
- object TestingTimeServiceConfig
- object UnsafeOnlinePartyReplicationConfig extends Serializable