package config
- Alphabetic
- Public
- Protected
Type Members
- sealed trait AuthServiceConfig extends AnyRef
- trait BaseParticipantConfig extends NodeConfig
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)) 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
- final case class CommunityParticipantConfig(init: ParticipantInitConfig = ParticipantInitConfig(), crypto: CommunityCryptoConfig = CommunityCryptoConfig(), ledgerApi: LedgerApiServerConfig = LedgerApiServerConfig(), httpLedgerApiExperimental: Option[HttpApiConfig] = None, adminApi: CommunityAdminServerConfig = CommunityAdminServerConfig(), storage: CommunityStorageConfig = CommunityStorageConfig.Memory(), testingTime: Option[TestingTimeServiceConfig] = None, parameters: ParticipantNodeParameterConfig = ParticipantNodeParameterConfig(), sequencerClient: SequencerClientConfig = SequencerClientConfig(), caching: CachingConfigs = CachingConfigs(), monitoring: NodeMonitoringConfig = NodeMonitoringConfig()) extends LocalParticipantConfig with CommunityLocalNodeConfig with ConfigDefaults[DefaultPorts, CommunityParticipantConfig] 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 domain where its max inbound message size is not sufficient to guarantee the processing of all transactions.
- 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 EnableEventsByContractKeyCache(enabled: Boolean = false, cacheSize: PositiveInt = EnableEventsByContractKeyCache.defaultCacheSize) extends Product with Serializable
Parameters to enable and configure the cache in the event_query_service.GetEventsByContractKey
Parameters to enable and configure the cache in the event_query_service.GetEventsByContractKey
Note
This feature is an early-stage (Alpha) performance optimization. Use it in production only if you know what you're doing. - final case class EnterpriseParticipantConfig(init: ParticipantInitConfig = ParticipantInitConfig(), crypto: EnterpriseCryptoConfig = EnterpriseCryptoConfig(), ledgerApi: LedgerApiServerConfig = LedgerApiServerConfig(), httpLedgerApiExperimental: Option[HttpApiConfig] = None, adminApi: EnterpriseAdminServerConfig = EnterpriseAdminServerConfig(), storage: EnterpriseStorageConfig = EnterpriseStorageConfig.Memory(), testingTime: Option[TestingTimeServiceConfig] = None, parameters: ParticipantNodeParameterConfig = ParticipantNodeParameterConfig(), sequencerClient: SequencerClientConfig = SequencerClientConfig(), caching: CachingConfigs = CachingConfigs(), replication: ReplicationConfig = ReplicationConfig(), features: EnterpriseParticipantFeaturesConfig = EnterpriseParticipantFeaturesConfig(), monitoring: NodeMonitoringConfig = NodeMonitoringConfig()) extends LocalParticipantConfig with EnterpriseLocalNodeConfig with ConfigDefaults[DefaultPorts, EnterpriseParticipantConfig] with Product with Serializable
- final case class EnterpriseParticipantFeaturesConfig(profileDir: Option[Path] = None) extends 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 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 domain.
- 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, indexService: IndexServiceConfig = LedgerIndexServiceConfig(), tls: Option[TlsServerConfig] = None, configurationLoadTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultConfigurationLoadTimeout, commandService: CommandServiceConfig = CommandServiceConfig(), userManagementService: UserManagementServiceConfig = UserManagementServiceConfig(), partyManagementService: PartyManagementServiceConfig = PartyManagementServiceConfig(), managementServiceTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultManagementServiceTimeout, postgresDataSource: PostgresDataSourceConfig = PostgresDataSourceConfig(), authServices: Seq[AuthServiceConfig] = Seq.empty, keepAliveServer: Option[KeepAliveServerConfig] = Some(KeepAliveServerConfig()), maxInboundMessageSize: NonNegativeInt = ServerConfig.defaultMaxInboundMessageSize, databaseConnectionTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultDatabaseConnectionTimeout, apiStreamShutdownTimeout: NonNegativeFiniteDuration = LedgerApiServerConfig.DefaultApiStreamShutdownTimeout, additionalMigrationPaths: Seq[String] = Seq.empty, rateLimit: Option[RateLimitingConfig] = Some(DefaultRateLimit), enableExplicitDisclosure: Boolean = true, enableCommandInspection: Boolean = true, adminToken: Option[String] = None, identityProviderManagement: IdentityProviderManagementConfig = LedgerApiServerConfig.DefaultIdentityProviderManagementConfig, unsafeEnableEventsByContractKeyCache: EnableEventsByContractKeyCache = EnableEventsByContractKeyCache.Disabled) extends CommunityServerConfig 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.
- configurationLoadTimeout
ledger api server startup delay if no timemodel has been sent by canton via ReadService
- commandService
configurations pertaining to the ledger api server's "command 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.
- postgresDataSource
config for ledger api server when using postgres
- 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.
- keepAliveServer
keep-alive configuration for ledger api requests
- maxInboundMessageSize
maximum inbound message size on the ledger api
- databaseConnectionTimeout
database connection timeout
- additionalMigrationPaths
optional extra paths for the database migrations
- rateLimit
limit the ledger api server request rates based on system metrics
- enableExplicitDisclosure
enable usage of explicitly disclosed contracts in command submission and transaction validation.
- enableCommandInspection
enable command inspection service over the ledger api
- final case class LedgerApiServerParametersConfig(contractIdSeeding: Seeding = Seeding.Strong, indexer: IndexerConfig = IndexerConfig(), jwtTimestampLeeway: Option[JwtTimestampLeeway] = None, 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
- jwtTimestampLeeway
leeway parameters for JWTs
- tokenExpiryGracePeriodForStreams
grace periods for streams that postpone termination beyond the JWT expiry
- trait LocalParticipantConfig extends BaseParticipantConfig with LocalNodeConfig
Base for local participant configurations
- final case class ParticipantInitConfig(identity: Option[Identity] = Some(InitConfigBase.Identity()), ledgerApi: ParticipantLedgerApiInitConfig = ParticipantLedgerApiInitConfig(), parameters: ParticipantParametersInitConfig = ParticipantParametersInitConfig()) extends InitConfigBase with Product with Serializable
Init configuration specific to participant nodes
Init configuration specific to participant nodes
- ledgerApi
ledgerApi related init config
- parameters
participant init config parameters
- final case class ParticipantNodeParameterConfig(adminWorkflow: AdminWorkflowConfig = AdminWorkflowConfig(), partyChangeNotification: PartyNotificationConfig = PartyNotificationConfig.ViaDomain, maxUnzippedDarSize: Int = 1024 * 1024 * 1024, batching: BatchingConfig = BatchingConfig(), stores: ParticipantStoreConfig = ParticipantStoreConfig(), transferTimeProofFreshnessProportion: NonNegativeInt = NonNegativeInt.tryCreate(3), minimumProtocolVersion: Option[ParticipantProtocolVersion] = Some(
ParticipantProtocolVersion(
ProtocolVersion.v5
)
), initialProtocolVersion: ParticipantProtocolVersion = ParticipantProtocolVersion(
ProtocolVersion.latestStable
), devVersionSupport: Boolean = false, betaVersionSupport: Boolean = false, dontWarnOnDeprecatedPV: Boolean = false, warnIfOverloadedFor: Option[NonNegativeFiniteDuration] = Some(
config.NonNegativeFiniteDuration.ofSeconds(20)
), ledgerApiServerParameters: LedgerApiServerParametersConfig = LedgerApiServerParametersConfig(), excludeInfrastructureTransactions: Boolean = true, engine: CantonEngineConfig = CantonEngineConfig(), allowForUnauthenticatedContractIds: Boolean = false, disableUpgradeValidation: Boolean = false, watchdog: Option[WatchdogConfig] = None, commandProgressTracker: CommandProgressTrackerConfig = CommandProgressTrackerConfig()) extends LocalNodeParametersConfig with Product with Serializable
General participant node parameters
General participant node parameters
- adminWorkflow
Configuration options for Canton admin workflows
- partyChangeNotification
Determines how eagerly the participant nodes notify the ledger api of party changes. By default ensure that parties are added via at least one domain before ACKing party creation to ledger api server indexer. This not only avoids flakiness in tests, but reflects that a party is not actually usable in canton until it's available through at least one domain.
- 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
- transferTimeProofFreshnessProportion
Proportion of the target domain 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 domain 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 domain
- initialProtocolVersion
The initial protocol version used by the participant (default latest), e.g., used to create the initial topology transactions.
- devVersionSupport
If set to true, will allow the participant to connect to a domain 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.
- ledgerApiServerParameters
ledger api server parameters The following specialized participant node performance tuning parameters may be grouped once a more final set of configs emerges.
- excludeInfrastructureTransactions
If set, infrastructure transactions (i.e. ping, bong and dar distribution) will be excluded from participant metering.
- allowForUnauthenticatedContractIds
Skip contract id authentication check, if the contract id scheme does not support authentication. You should enable this only if all participants on a domain mutually trust each other. Otherwise, an attacker may compromise integrity of the ledger.
- disableUpgradeValidation
Disable the package upgrade verification on DAR upload
- final case class ParticipantProtocolConfig(minimumProtocolVersion: Option[ProtocolVersion], devVersionSupport: Boolean, betaVersionSupport: Boolean, dontWarnOnDeprecatedPV: Boolean, initialProtocolVersion: ProtocolVersion) extends ProtocolConfig with Product with Serializable
- final case class ParticipantStoreConfig(maxPruningBatchSize: PositiveNumeric[Int] = PositiveNumeric.tryCreate(1000), ledgerApiPruningBatchSize: PositiveNumeric[Int] = PositiveNumeric.tryCreate(50000), pruningMetricUpdateInterval: Option[PositiveDurationSeconds] = config.PositiveDurationSeconds.ofHours(1L).some, acsPruningInterval: NonNegativeFiniteDuration = config.NonNegativeFiniteDuration.ofSeconds(60), journalPruning: JournalPruningConfig = JournalPruningConfig(), dbBatchAggregationConfig: BatchAggregatorConfig = BatchAggregatorConfig.Batching()) extends Product with Serializable
Parameters for the participant node's stores
Parameters for the participant node's stores
- maxPruningBatchSize
maximum number of events to prune from a participant at a time, used to break up canton participant-internal batches
- ledgerApiPruningBatchSize
Number of events to prune from the ledger api server index-database at a time during automatic background pruning. Canton-internal store pruning happens at the smaller batch size of "maxPruningBatchSize" to minimize memory usage whereas ledger-api-server index-db pruning needs sufficiently large batches to amortize the database overhead of "skipping over" active contracts.
- pruningMetricUpdateInterval
How frequently to update the
max-event-age
pruning progress metric in the background. A setting of None disables background metric updating.- dbBatchAggregationConfig
Batching configuration for Db queries
- sealed trait PartyNotificationConfig extends AnyRef
How eagerly participants make the ledger api aware of added (and eventually changed or removed) parties
- final case class RemoteParticipantConfig(adminApi: ClientConfig, ledgerApi: ClientConfig, token: Option[String] = None) extends BaseParticipantConfig 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 AnyRef
Optional ledger api time service configuration for demo and testing only
Value Members
- object AuthServiceConfig
- object ContractLoaderConfig extends Serializable
- object EnableEventsByContractKeyCache extends Serializable
- object JournalPruningConfig extends Serializable
- object LedgerApiServerConfig extends Serializable
- object LocalParticipantConfig
- object ParticipantInitConfig extends Serializable
- object PartyNotificationConfig
- object TestingTimeServiceConfig