config

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package config implements the configuration options for the xmtpd server.

Index

Constants

This section is empty.

Variables

View Source
var ValidMigrationSources = map[MigrationSource]struct{}{
	MigrationSourceGroupMessages:   {},
	MigrationSourceInboxLog:        {},
	MigrationSourceKeyPackages:     {},
	MigrationSourceWelcomeMessages: {},
	MigrationSourceCommitMessages:  {},
}

Functions

This section is empty.

Types

type APIOptions added in v0.5.1

type APIOptions struct {
	Enable                bool          `long:"enable"                   env:"XMTPD_API_ENABLE"                   description:"Enable the client API"`
	SendKeepAliveInterval time.Duration `` /* 156-byte string literal not displayed */
	Port                  int           `` /* 167-byte string literal not displayed */
	OriginatorCacheTTL    time.Duration `` /* 155-byte string literal not displayed */
}

type AppChainOptions added in v0.4.0

type AppChainOptions struct {
	RPCURL                           string        `` /* 131-byte string literal not displayed */
	WssURL                           string        `` /* 131-byte string literal not displayed */
	ChainID                          int64         `` /* 189-byte string literal not displayed */
	MaxChainDisconnectTime           time.Duration `` /* 187-byte string literal not displayed */
	BackfillBlockPageSize            uint64        `` /* 187-byte string literal not displayed */
	GroupMessageBroadcasterAddress   string        `` /* 155-byte string literal not displayed */
	IdentityUpdateBroadcasterAddress string        `` /* 157-byte string literal not displayed */
	GatewayAddress                   string        `` /* 147-byte string literal not displayed */
	ParameterRegistryAddress         string        `` /* 148-byte string literal not displayed */
	DeploymentBlock                  uint64        `` /* 185-byte string literal not displayed */
	MaxBlockchainPayloadSize         uint64        `` /* 190-byte string literal not displayed */
}

type ChainConfig added in v0.4.0

type ChainConfig struct {
	AppChainDeploymentBlock          int    `json:"appChainDeploymentBlock"`
	AppChainID                       int    `json:"appChainId"`
	AppChainGateway                  string `json:"appChainGateway"`
	AppChainParameterRegistry        string `json:"appChainParameterRegistry"`
	DistributionManager              string `json:"distributionManager"`
	FeeToken                         string `json:"feeToken"`
	GroupMessageBroadcaster          string `json:"groupMessageBroadcaster"`
	IdentityUpdateBroadcaster        string `json:"identityUpdateBroadcaster"`
	NodeRegistry                     string `json:"nodeRegistry"`
	PayerRegistry                    string `json:"payerRegistry"`
	PayerReportManager               string `json:"payerReportManager"`
	RateRegistry                     string `json:"rateRegistry"`
	SettlementChainDeploymentBlock   int    `json:"settlementChainDeploymentBlock"`
	SettlementChainGateway           string `json:"settlementChainGateway"`
	SettlementChainID                int    `json:"settlementChainId"`
	SettlementChainParameterRegistry string `json:"settlementChainParameterRegistry"`
	UnderlyingFeeToken               string `json:"underlyingFeeToken"`
}

type ContractsOptions

type ContractsOptions struct {
	AppChain        AppChainOptions        `group:"Application Chain Options" namespace:"app-chain"`
	SettlementChain SettlementChainOptions `group:"Settlement Chain Options"  namespace:"settlement-chain"`

	ConfigFilePath string                                `long:"config-file-path" env:"XMTPD_CONTRACTS_CONFIG_FILE_PATH" description:"Path to the JSON contracts config file"`
	ConfigJSON     string                                `long:"config-json"      env:"XMTPD_CONTRACTS_CONFIG_JSON"      description:"JSON contracts config"`
	Environment    environments.SmartContractEnvironment `` /* 126-byte string literal not displayed */
}

func ContractOptionsFromEnv added in v0.5.0

func ContractOptionsFromEnv(filePath string) (*ContractsOptions, error)

ContractOptionsFromEnv loads contract options from a file path or URL. Deprecated: Use LoadContractsConfig with ContractsSource instead.

func LoadContractsConfig added in v1.2.0

func LoadContractsConfig(src ContractsSource) (*ContractsOptions, error)

LoadContractsConfig loads contract configuration from the specified source. Only one source should be specified; they are mutually exclusive.

type ContractsSource added in v1.2.0

type ContractsSource struct {
	Environment string // Named environment: "testnet", "mainnet"
	FilePath    string // Local path, URL, or config://<env>
	JSONData    string // Raw JSON string
}

ContractsSource specifies how to load contract configuration.

type DBOptions added in v0.5.1

type DBOptions struct {
	ReaderConnectionString string        `long:"reader-connection-string" env:"XMTPD_DB_READER_CONNECTION_STRING" description:"Reader connection string"`
	WriterConnectionString string        `long:"writer-connection-string" env:"XMTPD_DB_WRITER_CONNECTION_STRING" description:"Writer connection string"`
	ReadTimeout            time.Duration `` /* 146-byte string literal not displayed */
	WriteTimeout           time.Duration `` /* 146-byte string literal not displayed */
	MaxOpenConns           int           `` /* 145-byte string literal not displayed */
	WaitForDB              time.Duration `` /* 146-byte string literal not displayed */
	NameOverride           string        `` /* 160-byte string literal not displayed */
}

type DebugOptions added in v0.5.0

type DebugOptions struct {
	Enable bool `long:"enable" env:"XMTPD_DEBUG_ENABLE" description:"Enable the pprof debug server"`
	Port   int  `long:"port"   env:"XMTPD_DEBUG_PORT"   description:"Port to listen on"             default:"6060"`
}

type GatewayConfig added in v0.5.0

type GatewayConfig struct {
	API        APIOptions        `group:"API Options"            namespace:"api"`
	Contracts  ContractsOptions  `group:"Contracts Options"      namespace:"contracts"`
	Log        LogOptions        `group:"Log Options"            namespace:"log"`
	Metrics    MetricsOptions    `group:"Metrics Options"        namespace:"metrics"`
	Payer      PayerOptions      `group:"Payer Options"          namespace:"payer"`
	Redis      RedisOptions      `group:"Redis Options"          namespace:"redis"`
	Tracing    TracingOptions    `group:"DD APM Tracing Options" namespace:"tracing"`
	Reflection ReflectionOptions `group:"Reflection Options"     namespace:"reflection"`
}

type IndexerOptions added in v0.1.1

type IndexerOptions struct {
	Enable bool `long:"enable" env:"XMTPD_INDEXER_ENABLE" description:"Enable the indexer"`
}

type LogOptions

type LogOptions struct {
	LogLevel    string `` /* 208-byte string literal not displayed */
	LogEncoding string `` /* 211-byte string literal not displayed */
}

type MetricsOptions

type MetricsOptions struct {
	Enable  bool   `long:"enable"          env:"XMTPD_METRICS_ENABLE"          description:"Enable the metrics server"`
	Address string `` /* 134-byte string literal not displayed */
	Port    int    `` /* 129-byte string literal not displayed */
}

MetricsOptions are settings used to start a prometheus server

type MigrationClientOptions added in v0.5.0

type MigrationClientOptions struct {
	Enable     bool   `long:"enable"       env:"XMTPD_MIGRATION_CLIENT_ENABLE"       description:"Enable the migration client"`
	FromNodeID uint32 `long:"from-node-id" env:"XMTPD_MIGRATION_CLIENT_FROM_NODE_ID" description:"Node ID to start migration from" default:"100"`
}

type MigrationServerOptions added in v0.5.0

type MigrationServerOptions struct {
	Enable bool `long:"enable" env:"XMTPD_MIGRATION_SERVER_ENABLE" description:"Enable the migration server"`

	PayerPrivateKey string `long:"payer-private-key" env:"XMTPD_MIGRATION_PAYER_PRIVATE_KEY" description:"Private key used to sign payer envelopes"`
	NodeSigningKey  string `long:"node-signing-key"  env:"XMTPD_MIGRATION_NODE_SIGNING_KEY"  description:"Private key used to sign originator envelopes"`

	ReaderConnectionString string            `long:"reader-connection-string" env:"XMTPD_MIGRATION_DB_READER_CONNECTION_STRING" description:"Reader connection string"`
	ReaderTimeout          time.Duration     `` /* 156-byte string literal not displayed */
	WaitForDB              time.Duration     `` /* 156-byte string literal not displayed */
	BatchSize              int32             `` /* 157-byte string literal not displayed */
	PollInterval           time.Duration     `` /* 156-byte string literal not displayed */
	Namespace              string            `` /* 153-byte string literal not displayed */
	LowerLimits            SourceLowerLimits `` /* 139-byte string literal not displayed */
}

type MigrationSource added in v1.2.0

type MigrationSource string
const (
	MigrationSourceGroupMessages   MigrationSource = "groupMessages"
	MigrationSourceInboxLog        MigrationSource = "inboxLog"
	MigrationSourceKeyPackages     MigrationSource = "keyPackages"
	MigrationSourceWelcomeMessages MigrationSource = "welcomeMessages"
	MigrationSourceCommitMessages  MigrationSource = "commitMessages"
)

type MlsValidationOptions

type MlsValidationOptions struct {
	GrpcAddress string `long:"grpc-address" env:"XMTPD_MLS_VALIDATION_GRPC_ADDRESS" description:"Address of the MLS validation service"`
}

type OptionsValidator added in v1.0.0

type OptionsValidator struct {
	// contains filtered or unexported fields
}

func NewOptionsValidator added in v1.0.0

func NewOptionsValidator(logger *zap.Logger) *OptionsValidator

func (*OptionsValidator) ParseJSONConfig added in v1.0.0

func (v *OptionsValidator) ParseJSONConfig(options *ContractsOptions) error

func (*OptionsValidator) ValidatePruneOptions added in v1.0.0

func (v *OptionsValidator) ValidatePruneOptions(options PruneOptions) error

func (*OptionsValidator) ValidateServerOptions added in v1.0.0

func (v *OptionsValidator) ValidateServerOptions(options *ServerOptions) error

type PayerOptions

type PayerOptions struct {
	PrivateKey string `long:"private-key" env:"XMTPD_PAYER_PRIVATE_KEY" description:"Private key used to sign blockchain transactions"`
	Enable     bool   `long:"enable"      env:"XMTPD_PAYER_ENABLE"      description:"Enable the payer API"`

	NodeSelectorStrategy       string        `` /* 162-byte string literal not displayed */
	NodeSelectorPreferredNodes Uint32Slice   `long:"node-selector-preferred-nodes" env:"XMTPD_PAYER_NODE_SELECTOR_PREFERRED_NODES" description:"Preferred node IDs"`
	NodeSelectorCacheExpiry    time.Duration `` /* 158-byte string literal not displayed */
	NodeSelectorTimeout        time.Duration `` /* 158-byte string literal not displayed */
	EnvelopePublishTimeout     time.Duration `` /* 159-byte string literal not displayed */
	EnvelopePublishRetries     uint          `` /* 157-byte string literal not displayed */
}

type PayerReportOptions added in v1.0.0

type PayerReportOptions struct {
	Enable                        bool          `` /* 161-byte string literal not displayed */
	AttestationWorkerPollInterval time.Duration `` /* 204-byte string literal not displayed */
	GenerateReportSelfPeriod      time.Duration `` /* 204-byte string literal not displayed */
	GenerateReportOthersPeriod    time.Duration `` /* 205-byte string literal not displayed */
	ExpirySelfPeriod              time.Duration `` /* 204-byte string literal not displayed */
	ExpiryOthersPeriod            time.Duration `` /* 205-byte string literal not displayed */
}

type PruneConfig added in v0.4.0

type PruneConfig struct {
	MaxCycles      int   `long:"max-prune-cycles" env:"XMTPD_PRUNE_MAX_CYCLES"      description:"Maximum pruning cycles"                   default:"10"`
	BatchSize      int32 `` /* 128-byte string literal not displayed */
	CountDeletable bool  `long:"count-deletable"  env:"XMTPD_PRUNE_COUNT_DELETABLE" description:"Attempt to count all deletable envelopes"`
	DryRun         bool  `long:"dry-run"          env:"XMTPD_PRUNE_DRY_RUN"         description:"Dry run mode"`
}

type PruneOptions added in v0.4.0

type PruneOptions struct {
	DB          DBOptions        `group:"Database Options"  namespace:"db"`
	Log         LogOptions       `group:"Log Options"       namespace:"log"`
	Signer      SignerOptions    `group:"Signer Options"    namespace:"signer"`
	Contracts   ContractsOptions `group:"Contracts Options" namespace:"contracts"`
	PruneConfig PruneConfig      `group:"Prune Options"     namespace:"prune"`
}

type RedisOptions added in v0.5.0

type RedisOptions struct {
	RedisURL       string        `long:"redis-url"       env:"XMTPD_REDIS_URL"             description:"Redis URL"`
	KeyPrefix      string        `long:"key-prefix"      env:"XMTPD_REDIS_KEY_PREFIX"      description:"Redis key prefix"         default:"xmtpd:"`
	ConnectTimeout time.Duration `long:"connect-timeout" env:"XMTPD_REDIS_CONNECT_TIMEOUT" description:"Redis connection timeout" default:"10s"`
}

type ReflectionOptions

type ReflectionOptions struct {
	Enable bool `long:"enable" env:"XMTPD_REFLECTION_ENABLE" description:"Enable GRPC reflection"`
}

ReflectionOptions are settings controlling collection of GRPC reflection settings.

type ReplicationOptions added in v0.1.1

type ReplicationOptions struct {
	// Deprecated: use API instead
	Enable bool `long:"enable" env:"XMTPD_REPLICATION_ENABLE" description:"Enable the replication API"`
}

type ServerOptions

type ServerOptions struct {
	API             APIOptions             `group:"API Options"              namespace:"api"`
	Contracts       ContractsOptions       `group:"Contracts Options"        namespace:"contracts"`
	DB              DBOptions              `group:"Database Options"         namespace:"db"`
	Log             LogOptions             `group:"Log Options"              namespace:"log"`
	Indexer         IndexerOptions         `group:"Indexer Options"          namespace:"indexer"`
	Metrics         MetricsOptions         `group:"Metrics Options"          namespace:"metrics"`
	MlsValidation   MlsValidationOptions   `group:"MLS Validation Options"   namespace:"mls-validation"`
	Payer           PayerOptions           `group:"Payer Options"            namespace:"payer"`
	PayerReport     PayerReportOptions     `group:"Payer Report Options"     namespace:"payer-report"`
	Reflection      ReflectionOptions      `group:"Reflection Options"       namespace:"reflection"`
	Replication     ReplicationOptions     `group:"API Options"              namespace:"replication"`
	Signer          SignerOptions          `group:"Signer Options"           namespace:"signer"`
	Sync            SyncOptions            `group:"Sync Options"             namespace:"sync"`
	Tracing         TracingOptions         `group:"DD APM Tracing Options"   namespace:"tracing"`
	MigrationServer MigrationServerOptions `group:"Migration Server Options" namespace:"migration-server"`
	MigrationClient MigrationClientOptions `group:"Migration Client Options" namespace:"migration-client"`
	Debug           DebugOptions           `group:"Debug Options"            namespace:"debug"`
	Version         bool                   `` /* 131-byte string literal not displayed */
}

type SettlementChainOptions added in v0.4.0

type SettlementChainOptions struct {
	RPCURL                      string        `` /* 130-byte string literal not displayed */
	WssURL                      string        `` /* 130-byte string literal not displayed */
	ChainID                     int64         `` /* 188-byte string literal not displayed */
	MaxChainDisconnectTime      time.Duration `` /* 187-byte string literal not displayed */
	BackfillBlockPageSize       uint64        `` /* 186-byte string literal not displayed */
	NodeRegistryAddress         string        `` /* 142-byte string literal not displayed */
	NodeRegistryRefreshInterval time.Duration `` /* 186-byte string literal not displayed */
	RateRegistryAddress         string        `` /* 142-byte string literal not displayed */
	RateRegistryRefreshInterval time.Duration `` /* 187-byte string literal not displayed */
	ParameterRegistryAddress    string        `` /* 147-byte string literal not displayed */
	PayerRegistryAddress        string        `` /* 143-byte string literal not displayed */
	PayerReportManagerAddress   string        `` /* 149-byte string literal not displayed */
	GatewayAddress              string        `` /* 153-byte string literal not displayed */
	DistributionManagerAddress  string        `` /* 149-byte string literal not displayed */
	DeploymentBlock             uint64        `` /* 184-byte string literal not displayed */
	UnderlyingFeeToken          string        `` /* 140-byte string literal not displayed */
	FeeToken                    string        `` /* 129-byte string literal not displayed */
}

type SignerOptions

type SignerOptions struct {
	PrivateKey string `long:"private-key" env:"XMTPD_SIGNER_PRIVATE_KEY" description:"Private key used to sign messages"`
}

type SourceLowerLimits added in v1.2.0

type SourceLowerLimits struct {
	Values map[string]int64
}

func (*SourceLowerLimits) Get added in v1.2.0

func (s *SourceLowerLimits) Get(source MigrationSource) int64

func (*SourceLowerLimits) UnmarshalFlag added in v1.2.0

func (s *SourceLowerLimits) UnmarshalFlag(value string) error

type SyncOptions added in v0.1.1

type SyncOptions struct {
	Enable bool `long:"enable" env:"XMTPD_SYNC_ENABLE" description:"Enable the sync server"`
}

type TracingOptions

type TracingOptions struct {
	Enable bool `long:"enable" env:"XMTPD_TRACING_ENABLE" description:"Enable DD APM trace collection"`
}

TracingOptions are settings controlling collection of DD APM traces and error tracking.

type Uint32Slice added in v1.1.0

type Uint32Slice []uint32

Uint32Slice parses a comma-separated list of uint32 values.

It treats an empty string ("") or whitespace-only input as an empty slice, which allows environment variables like XMTPD_PAYER_NODE_SELECTOR_PREFERRED_NODES="" to be provided without causing a parse error.

Examples:

""            -> nil
"   "         -> nil
"1,2,3"       -> []uint32{1,2,3}
"1, 2, 3"     -> []uint32{1,2,3}
"1,2,"        -> []uint32{1,2}
",1,,2,3,"    -> []uint32{1,2,3}

func (Uint32Slice) String added in v1.1.0

func (s Uint32Slice) String() string

func (*Uint32Slice) UnmarshalFlag added in v1.1.0

func (s *Uint32Slice) UnmarshalFlag(value string) error

UnmarshalFlag is used by github.com/jessevdk/go-flags to parse flag/env values.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL