config

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 13, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package config implements the configuration options for the xmtpd server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FillConfigFromJSON added in v1.1.0

func FillConfigFromJSON(options *ContractsOptions, config *ChainConfig)

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 */
}

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)

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 */
	StartDate              time.Time     `` /* 173-byte string literal not displayed */
}

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        `` /* 149-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 `` /* 145-byte string literal not displayed */
	NodeSelectorTimeout        time.Duration `` /* 145-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 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