configs

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Dec 21, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	DisableRawTransactions   bool `env:"FLOW_WALLET_DISABLE_RAWTX"`
	DisableFungibleTokens    bool `env:"FLOW_WALLET_DISABLE_FT"`
	DisableNonFungibleTokens bool `env:"FLOW_WALLET_DISABLE_NFT"`
	DisableChainEvents       bool `env:"FLOW_WALLET_DISABLE_CHAIN_EVENTS"`

	AdminAddress    string `env:"FLOW_WALLET_ADMIN_ADDRESS,notEmpty"`
	AdminKeyIndex   int    `env:"FLOW_WALLET_ADMIN_KEY_INDEX" envDefault:"0"`
	AdminKeyType    string `env:"FLOW_WALLET_ADMIN_KEY_TYPE" envDefault:"local"`
	AdminPrivateKey string `env:"FLOW_WALLET_ADMIN_PRIVATE_KEY,notEmpty"`
	// This sets the number of proposal keys to be used on the admin account.
	// You can increase transaction throughput by using multiple proposal keys for
	// parallel transaction execution.
	AdminProposalKeyCount uint16 `env:"FLOW_WALLET_ADMIN_PROPOSAL_KEY_COUNT" envDefault:"1"`

	// When "DefaultKeyType" is set to "local", private keys are generated by the API
	// and stored as encrypted text in the database.
	// KMS key types:
	// - aws_kms
	// - google_kms
	DefaultKeyType  string `env:"FLOW_WALLET_DEFAULT_KEY_TYPE" envDefault:"local"`
	DefaultKeyIndex int    `env:"FLOW_WALLET_DEFAULT_KEY_INDEX" envDefault:"0"`
	// If the default of "-1" is used for "DefaultKeyWeight"
	// the service will use flow.AccountKeyWeightThreshold from the Flow SDK.
	DefaultKeyWeight int    `env:"FLOW_WALLET_DEFAULT_KEY_WEIGHT" envDefault:"-1"`
	DefaultSignAlgo  string `env:"FLOW_WALLET_DEFAULT_SIGN_ALGO" envDefault:"ECDSA_P256"`
	DefaultHashAlgo  string `env:"FLOW_WALLET_DEFAULT_HASH_ALGO" envDefault:"SHA3_256"`
	// This symmetrical key is used to encrypt private keys
	// that are stored in the database. Values per type:
	// - local: 32 bytes long encryption key
	// - aws_kms: key ARN, e.g. arn:aws:kms:us-west-1:123456789000:key/00000000-1111-2222-3333-444444444444
	// - google_kms: key resource name (without version info), e.g. projects/my-project/locations/europe-north1/keyRings/my-keyring/cryptoKeys/my-encryption-key
	EncryptionKey string `env:"FLOW_WALLET_ENCRYPTION_KEY,notEmpty"`
	// Encryption key type, one of: local, aws_kms, google_kms
	EncryptionKeyType string `env:"FLOW_WALLET_ENCRYPTION_KEY_TYPE,notEmpty" envDefault:"local"`
	// DefaultAccountKeyCount specifies how many times the account key will be duplicated upon account creation, does not affect existing accounts
	DefaultAccountKeyCount uint `env:"FLOW_WALLET_DEFAULT_ACCOUNT_KEY_COUNT" envDefault:"1"`

	DatabaseDSN     string `env:"FLOW_WALLET_DATABASE_DSN" envDefault:"wallet.db"`
	DatabaseType    string `env:"FLOW_WALLET_DATABASE_TYPE" envDefault:"sqlite"`
	DatabaseVersion string `env:"FLOW_WALLET_DATABASE_VERSION" envDefault:""`

	Host                 string        `env:"FLOW_WALLET_HOST"`
	Port                 int           `env:"FLOW_WALLET_PORT" envDefault:"3000"`
	ServerRequestTimeout time.Duration `env:"FLOW_WALLET_SERVER_REQUEST_TIMEOUT" envDefault:"60s"`
	AccessAPIHost        string        `env:"FLOW_WALLET_ACCESS_API_HOST,notEmpty"`
	ChainID              flow.ChainID  `env:"FLOW_WALLET_CHAIN_ID" envDefault:"flow-emulator"`

	EnabledTokens           []string `env:"FLOW_WALLET_ENABLED_TOKENS" envSeparator:","`
	ScriptPathCreateAccount string   `env:"FLOW_WALLET_SCRIPT_PATH_CREATE_ACCOUNT" envDefault:""`

	// Defines the maximum number of active jobs that can be queued before
	// new jobs are rejected.
	WorkerQueueCapacity uint `env:"FLOW_WALLET_WORKER_QUEUE_CAPACITY" envDefault:"1000"`
	// Number of concurrent workers handling incoming jobs.
	// You can increase the number of workers if you're sending
	// too many transactions and find that the queue is often backlogged.
	WorkerCount uint `env:"FLOW_WALLET_WORKER_COUNT" envDefault:"1"`
	// Webhook endpoint to receive job status updates
	JobStatusWebhookUrl string `env:"FLOW_WALLET_JOB_STATUS_WEBHOOK" envDefault:""`
	// Duration for which to wait for a response, if 0 wait indefinitely. Default: 30s.
	// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
	// For more info: https://pkg.go.dev/time#ParseDuration
	JobStatusWebhookTimeout time.Duration `env:"FLOW_WALLET_JOB_STATUS_WEBHOOK_TIMEOUT" envDefault:"30s"`

	GoogleKMSProjectID  string `env:"FLOW_WALLET_GOOGLE_KMS_PROJECT_ID"`
	GoogleKMSLocationID string `env:"FLOW_WALLET_GOOGLE_KMS_LOCATION_ID"`
	GoogleKMSKeyRingID  string `env:"FLOW_WALLET_GOOGLE_KMS_KEYRING_ID"`

	// Duration for which to wait for a transaction seal, if 0 wait indefinitely. Default: 0.
	// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
	// For more info: https://pkg.go.dev/time#ParseDuration
	TransactionTimeout time.Duration `env:"FLOW_WALLET_TRANSACTION_TIMEOUT" envDefault:"0"`

	// Idempotency middleware configuration
	DisableIdempotencyMiddleware bool `env:"FLOW_WALLET_DISABLE_IDEMPOTENCY_MIDDLEWARE" envDefault:"false"`
	// Idempotency middleware database type;
	// - "local", in-memory w/ no multi-instance support
	// - "shared", sql (gorm) database shared with the app (DatabaseType)
	// - "redis"
	IdempotencyMiddlewareDatabaseType string `env:"FLOW_WALLET_IDEMPOTENCY_MIDDLEWARE_DATABASE_TYPE" envDefault:"local"`
	// Redis URL for idempotency key storage, e.g. "redis://walletapi:wallet-api-redis@localhost:6379/"
	IdempotencyMiddlewareRedisURL string `env:"FLOW_WALLET_IDEMPOTENCY_MIDDLEWARE_REDIS_URL" envDefault:""`

	// Set the starting height for event polling. This won't have any effect if the value in
	// database (chain_event_status[0].latest_height) is greater.
	// If 0 (default) use latest block height if starting fresh (no previous value in database).
	ChainListenerStartingHeight uint64 `env:"FLOW_WALLET_EVENTS_STARTING_HEIGHT" envDefault:"0"`
	// Maximum number of blocks to check at once.
	ChainListenerMaxBlocks uint64 `env:"FLOW_WALLET_EVENTS_MAX_BLOCKS" envDefault:"100"`
	// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
	// For more info: https://pkg.go.dev/time#ParseDuration
	ChainListenerInterval time.Duration `env:"FLOW_WALLET_EVENTS_INTERVAL" envDefault:"10s"`

	// Max transactions per second, rate at which the service can submit transactions to Flow
	TransactionMaxSendRate int `env:"FLOW_WALLET_MAX_TPS" envDefault:"10"`
}

func ParseConfig

func ParseConfig(opt *Options) (*Config, error)

ParseConfig parses environment variables and flags to a valid Config.

type Options

type Options struct {
	EnvFilePath string
	Version     string
}

Jump to

Keyboard shortcuts

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