Documentation
¶
Overview ¶
Package cresettings contains configurable settings definitions for nodes in the CRE. Environment Variables:
- CL_CRE_SETTINGS_DEFAULT: defaults like in ./defaults.json - initializes Default
- CL_CRE_SETTINGS: scoped settings like in ../settings/testdata/config.json - initializes DefaultGetter
Index ¶
Constants ¶
View Source
const ( EnvNameSettings = "CL_CRE_SETTINGS" EnvNameSettingsDefault = "CL_CRE_SETTINGS_DEFAULT" )
Variables ¶
View Source
var Default = Schema{ WorkflowLimit: Int(1000), WorkflowExecutionConcurrencyLimit: Int(1000), GatewayIncomingPayloadSizeLimit: Size(1 * config.MByte), GatewayVaultManagementEnabled: Bool(true), VaultJWTAuthEnabled: Bool(false), CentralizedWorkflowOwnerVerificationEnabled: Bool(false), TenantID: Uint64(0), VaultOrgIdAsSecretOwnerEnabled: Bool(false), PropagateOrgIDInRequestMetadata: Bool(false), VaultBase64EncodingEnabled: Bool(false), VaultForceEmptyOCRRounds: Bool(false), VaultOptimizationsEnabled: Bool(false), VaultGetSecretsShareAggregationIncludesPublicKeys: Bool(false), VaultOwnerAddressCanonicalizationEnabled: Bool(false), VaultJSONOmitUnpopulatedEnabled: Bool(false), GatewayHTTPGlobalRate: Rate(rate.Limit(500), 500), GatewayHTTPPerNodeRate: Rate(rate.Limit(100), 100), GatewayConfidentialRelayGlobalRate: Rate(rate.Limit(50), 10), GatewayConfidentialRelayPerNodeRate: Rate(rate.Limit(10), 10), GatewayHTTPActionMtlsRequestRate: Rate(rate.Every(30*time.Second), 0), GatewayHTTPActionMtlsConcurrencyLimit: Int(50), TriggerRegistrationStatusUpdateTimeout: Duration(0 * time.Second), BaseTriggerRetryInterval: Duration(30 * time.Second), BaseTriggerMaxRetries: Int(20), BaseTriggerPruneAge: Duration(24 * time.Hour), BaseTriggerMaxSendsPerTick: Int(20), VaultCiphertextSizeLimit: Size(2 * config.KByte), VaultIdentifierKeySizeLimit: Size(64 * config.Byte), VaultIdentifierOwnerSizeLimit: Size(64 * config.Byte), VaultIdentifierNamespaceSizeLimit: Size(64 * config.Byte), VaultPluginBatchSizeLimit: Int(10), VaultRequestBatchSizeLimit: Int(10), VaultPendingQueueWriteSizeLimit: Int(1000), VaultShareSizeLimit: Size(600 * config.Byte), VaultMaxQuerySizeLimit: Size(102400 * config.Byte), VaultMaxObservationSizeLimit: Size(512 * config.KByte), VaultMaxReportsPlusPrecursorSizeLimit: Size(2 * config.MByte), VaultMaxReportSizeLimit: Size(2 * config.MByte), VaultMaxReportCount: Int(10), VaultMaxKeyValueModifiedKeysPlusValuesSizeLimit: Size(1468006 * config.Byte), VaultMaxKeyValueModifiedKeys: Int(300), VaultMaxBlobPayloadSizeLimit: Size(25600 * config.Byte), VaultMaxPerOracleUnexpiredBlobCumulativePayloadSizeLimit: Size(31457280 * config.Byte), VaultMaxPerOracleUnexpiredBlobCount: Int(1000), ConfidentialCompute: confidentialCompute{ GlobalRate: Rate(rate.Limit(1000), 1000), MaxRetries: Int(3), RetryBackoff: Duration(2 * time.Second), SecretsCacheEnabled: Bool(false), EnclaveRequestTimeout: Duration(30 * time.Second), PublicKeyRequestTimeout: Duration(5 * time.Second), InsecureSkipTLSVerify: Bool(false), EnclaveRefreshInterval: Duration(10 * time.Second), PublicKeyCache: ccPublicKeyCache{ Enabled: Bool(true), TTL: Duration(5 * time.Minute), MaxTTL: Duration(30 * time.Minute), CleanupInterval: Duration(10 * time.Minute), TTLBufferPercent: Float64(0.1), ProactiveRefreshEnabled: Bool(true), RefreshIntervalPercent: Float64(0), MinRefreshInterval: Duration(10 * time.Second), RefreshTimeout: Duration(5 * time.Second), }, Session: ccSession{ PersistenceEnabled: Bool(true), HeaderName: String("Sticky-Session-A"), }, }, PerOrg: Orgs{ BaseTriggerRetransmitEnabled: Bool(false), WorkflowExecutionConcurrencyLimit: Int(100), ZeroBalancePruningTimeout: Duration(24 * time.Hour), HTTPAction: perOrgHTTPAction{ MtlsRateLimit: Rate(rate.Every(30*time.Second), 3), }, }, PerOwner: Owners{ WorkflowLimit: Int(1000), WorkflowExecutionConcurrencyLimit: Int(5), VaultCiphertextSizeLimit: Size(2 * config.KByte), VaultSecretsLimit: Int(100), ConfidentialCompute: ownerConfidentialCompute{ Rate: Rate(rate.Limit(1000), 1000), }, }, PerWorkflow: Workflows{ TriggerRegistrationsTimeout: Duration(10 * time.Second), TriggerEventQueueLimit: Int(50), TriggerEventQueueTimeout: Duration(10 * time.Minute), TriggerSubscriptionTimeout: Duration(15 * time.Second), TriggerSubscriptionLimit: Int(10), CapabilityConcurrencyLimit: Int(30), CapabilityCallTimeout: Duration(3 * time.Minute), SecretsConcurrencyLimit: Int(5), ExecutionConcurrencyLimit: Int(5), ExecutionTimeout: Duration(5 * time.Minute), ExecutionResponseLimit: Size(100 * config.KByte), ExecutionTimestampsEnabled: Bool(false), WASMMemoryLimit: Size(100 * config.MByte), WASMBinarySizeLimit: Size(100 * config.MByte), WASMCompressedBinarySizeLimit: Size(20 * config.MByte), WASMConfigSizeLimit: Size(50 * config.KByte), WASMSecretsSizeLimit: Size(27 * config.KByte), LogLineLimit: Size(config.KByte), LogEventLimit: Int(1_000), UserMetricEnabled: Bool(false), UserMetricPayloadLimit: Size(4 * config.KByte), UserMetricNameLengthLimit: Int(128), UserMetricLabelsPerMetric: Int(10), UserMetricLabelValueLength: Int(256), ChainAllowed: PerChainSelector(Bool(false), map[string]bool{ "12922642891491394802": true, "3379446385462418246": true, "12463857294658392847": true, }), CRONTrigger: cronTrigger{ FastestScheduleInterval: Duration(30 * time.Second), }, HTTPTrigger: httpTrigger{ RateLimit: Rate(rate.Every(30*time.Second), 3), }, LogTrigger: logTrigger{ EventRateLimit: Rate(rate.Every(time.Minute/10), 10), FilterAddressLimit: Int(5), FilterTopicsPerSlotLimit: Int(10), EventSizeLimit: Size(5 * config.KByte), }, ChainWrite: chainWrite{ TargetsLimit: Int(10), ReportSizeLimit: Size(5 * config.KByte), EVM: evmChainWrite{ TransactionGasLimit: Uint64(5_000_000), GasLimit: PerChainSelector(Uint64(5_000_000), map[string]uint64{ "3379446385462418246": 10_000_000, "12922642891491394802": 50_000_000, }), ReportSizeLimit: Size(5 * config.KByte), }, Solana: solanaChainWrite{ ReportSizeLimit: Size(265 * config.Byte), GasLimit: PerChainSelector(Uint32(300_000), map[string]uint32{}), }, Aptos: aptosChainWrite{ ReportSizeLimit: Size(5 * config.KByte), GasLimit: PerChainSelector(Uint64(2_000_000), map[string]uint64{}), }, }, ChainRead: chainRead{ CallLimit: Int(15), LogQueryBlockLimit: Uint64(100), PayloadSizeLimit: Size(5 * config.KByte), }, Consensus: consensus{ ObservationSizeLimit: Size(100 * config.KByte), CallLimit: Int(20), }, HTTPAction: httpAction{ CallLimit: Int(5), CacheAgeLimit: Duration(10 * time.Minute), ConnectionTimeout: Duration(10 * time.Second), RequestSizeLimit: Size(10 * config.KByte), ResponseSizeLimit: Size(100 * config.KByte), GatewayProxyDonID: String(""), }, ConfidentialHTTP: confidentialHTTP{ CallLimit: Int(5), ConnectionTimeout: Duration(10 * time.Second), RequestSizeLimit: Size(10 * config.KByte), ResponseSizeLimit: Size(100 * config.KByte), }, ConfidentialWorkflows: confidentialWorkflows{ Enabled: Bool(false), }, Secrets: secrets{ CallLimit: Int(5), }, DONTime: donTime{ RequestTimeout: Duration(30 * time.Second), }, FeatureMultiTriggerExecutionIDsActiveAt: Time(time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC)), FeatureMultiTriggerExecutionIDsActivePeriod: TimeRange( time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2101, 1, 1, 0, 0, 0, 0, time.UTC)), FeatureUseSingleDONTimeProviderPerExecutionActivePeriod: TimeRange( time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2101, 1, 1, 0, 0, 0, 0, time.UTC)), FeatureChainCapabilityHashBasedOCRActivePeriod: TimeRange( time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2101, 1, 1, 0, 0, 0, 0, time.UTC)), FeatureEVMWriteReportL1FeeActivePeriod: TimeRange( time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2101, 1, 1, 0, 0, 0, 0, time.UTC)), FeatureAptosWriteReportBlockTimestampActivePeriod: TimeRange( time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC), time.Date(2101, 1, 1, 0, 0, 0, 0, time.UTC)), }, }
View Source
var DefaultGetter Getter
DefaultGetter is a default settings getter populated from the env var CL_CRE_SETTINGS if set, otherwise it is nil.
Functions ¶
This section is empty.
Types ¶
type Owners ¶ added in v0.9.1
type Owners struct {
WorkflowLimit Setting[int] `unit:"{workflow}"`
WorkflowExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
VaultCiphertextSizeLimit Setting[config.Size]
VaultSecretsLimit Setting[int] `unit:"{secret}"`
// ConfidentialCompute holds the per-workflow-owner Confidential Compute settings.
ConfidentialCompute ownerConfidentialCompute
}
type Schema ¶ added in v0.9.1
type Schema struct {
WorkflowLimit Setting[int] `unit:"{workflow}"`
WorkflowExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
GatewayIncomingPayloadSizeLimit Setting[config.Size]
GatewayVaultManagementEnabled Setting[bool]
VaultJWTAuthEnabled Setting[bool]
CentralizedWorkflowOwnerVerificationEnabled Setting[bool]
TenantID Setting[uint64]
VaultOrgIdAsSecretOwnerEnabled Setting[bool] // Deprecated
PropagateOrgIDInRequestMetadata Setting[bool]
VaultBase64EncodingEnabled Setting[bool]
VaultForceEmptyOCRRounds Setting[bool]
VaultOptimizationsEnabled Setting[bool]
VaultOwnerAddressCanonicalizationEnabled Setting[bool]
VaultJSONOmitUnpopulatedEnabled Setting[bool]
GatewayHTTPGlobalRate Setting[config.Rate]
GatewayHTTPPerNodeRate Setting[config.Rate]
GatewayConfidentialRelayGlobalRate Setting[config.Rate]
GatewayConfidentialRelayPerNodeRate Setting[config.Rate]
GatewayHTTPActionMtlsRequestRate Setting[config.Rate]
GatewayHTTPActionMtlsConcurrencyLimit Setting[int] `unit:"{request}"`
TriggerRegistrationStatusUpdateTimeout Setting[time.Duration]
BaseTriggerRetryInterval Setting[time.Duration]
BaseTriggerMaxRetries Setting[int] `unit:"{attempt}"`
BaseTriggerPruneAge Setting[time.Duration]
BaseTriggerMaxSendsPerTick Setting[int] `unit:"{event}"`
// Deprecated: Use global.PerOwner.VaultCiphertextSizeLimit (global) or owner.<addr>.PerOwner.VaultCiphertextSizeLimit (per owner) instead.
VaultCiphertextSizeLimit Setting[config.Size]
VaultIdentifierKeySizeLimit Setting[config.Size]
VaultIdentifierOwnerSizeLimit Setting[config.Size]
VaultIdentifierNamespaceSizeLimit Setting[config.Size]
VaultPluginBatchSizeLimit Setting[int] `unit:"{request}"`
VaultRequestBatchSizeLimit Setting[int] `unit:"{request}"`
VaultPendingQueueWriteSizeLimit Setting[int] `unit:"{request}"`
VaultMaxQuerySizeLimit Setting[config.Size]
VaultMaxObservationSizeLimit Setting[config.Size]
VaultMaxReportsPlusPrecursorSizeLimit Setting[config.Size]
VaultMaxReportSizeLimit Setting[config.Size]
VaultMaxReportCount Setting[int]
VaultMaxKeyValueModifiedKeysPlusValuesSizeLimit Setting[config.Size]
VaultMaxKeyValueModifiedKeys Setting[int]
VaultMaxBlobPayloadSizeLimit Setting[config.Size]
VaultMaxPerOracleUnexpiredBlobCumulativePayloadSizeLimit Setting[config.Size]
VaultMaxPerOracleUnexpiredBlobCount Setting[int]
// Confidential Compute (San Marino framework) node-level settings.
ConfidentialCompute confidentialCompute
PerOrg Orgs `scope:"org"`
PerOwner Owners `scope:"owner"`
PerWorkflow Workflows `scope:"workflow"`
}
var Config Schema
Deprecated: use Default
type Workflows ¶ added in v0.9.1
type Workflows struct {
TriggerRegistrationsTimeout Setting[time.Duration]
TriggerSubscriptionTimeout Setting[time.Duration]
TriggerSubscriptionLimit Setting[int] `unit:"{subscription}"`
TriggerEventQueueLimit Setting[int] `unit:"{trigger}"`
TriggerEventQueueTimeout Setting[time.Duration]
CapabilityConcurrencyLimit Setting[int] `unit:"{capability}"`
CapabilityCallTimeout Setting[time.Duration]
SecretsConcurrencyLimit Setting[int] `unit:"{secret}"`
ExecutionConcurrencyLimit Setting[int] `unit:"{workflow}"`
ExecutionTimeout Setting[time.Duration]
ExecutionResponseLimit Setting[config.Size]
ExecutionTimestampsEnabled Setting[bool]
WASMMemoryLimit Setting[config.Size]
WASMBinarySizeLimit Setting[config.Size]
WASMCompressedBinarySizeLimit Setting[config.Size]
WASMConfigSizeLimit Setting[config.Size]
WASMSecretsSizeLimit Setting[config.Size]
LogLineLimit Setting[config.Size]
LogEventLimit Setting[int] `unit:"{log}"`
UserMetricEnabled Setting[bool]
UserMetricPayloadLimit Setting[config.Size]
UserMetricNameLengthLimit Setting[int] `unit:"{char}"`
UserMetricLabelsPerMetric Setting[int] `unit:"{label}"`
UserMetricLabelValueLength Setting[int] `unit:"{char}"`
ChainAllowed SettingMap[bool]
CRONTrigger cronTrigger
HTTPTrigger httpTrigger
LogTrigger logTrigger
ChainWrite chainWrite
ChainRead chainRead
Consensus consensus
HTTPAction httpAction
ConfidentialHTTP confidentialHTTP
ConfidentialWorkflows confidentialWorkflows
Secrets secrets
DONTime donTime
FeatureMultiTriggerExecutionIDsActiveAt Setting[config.Timestamp] // Deprecated
FeatureMultiTriggerExecutionIDsActivePeriod Setting[Range[config.Timestamp]]
FeatureUseSingleDONTimeProviderPerExecutionActivePeriod Setting[Range[config.Timestamp]]
FeatureChainCapabilityHashBasedOCRActivePeriod Setting[Range[config.Timestamp]]
FeatureEVMWriteReportL1FeeActivePeriod Setting[Range[config.Timestamp]]
FeatureAptosWriteReportBlockTimestampActivePeriod Setting[Range[config.Timestamp]]
}
Click to show internal directories.
Click to hide internal directories.