Documentation
¶
Index ¶
- type APIRateLimitInfo
- type APITokenClaims
- type APITokenInfo
- type AuthGroupConfig
- type AuthGroupCredentials
- type BlockDbRetentionConfig
- type Config
- type DatabaseConfig
- type Empty
- type EndpointConfig
- type EndpointSshConfig
- type MainMenuItem
- type Meta
- type MevRelayConfig
- type NamedValidator
- type NavigationGroup
- type NavigationLink
- type PageData
- type PebbleBlockDBConfig
- type PgsqlDatabaseConfig
- type PgsqlWriterDatabaseConfig
- type S3BlockDBConfig
- type SqliteDatabaseConfig
- type SystemContract
- type TxSignatureBytes
- type TxSignatureLookupStatus
- type YamlBool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIRateLimitInfo ¶ added in v1.19.0
APIRateLimitInfo contains rate limiting information for a request
type APITokenClaims ¶ added in v1.19.0
type APITokenClaims struct {
Name string `json:"name"`
RateLimit uint `json:"rate_limit,omitempty"` // requests per minute, 0 = no limit
PerIpRateLimit bool `json:"per_ip_rate_limit,omitempty"` // apply rate limit per IP
CorsOrigins []string `json:"cors_origins,omitempty"` // allowed CORS origins, empty = use global config
DomainPatterns []string `json:"domain_patterns,omitempty"` // allowed domain patterns, empty = any domain
jwt.RegisteredClaims
}
APITokenClaims represents the JWT claims for API authentication
type APITokenInfo ¶ added in v1.19.0
type APITokenInfo struct {
Name string
RateLimit uint
PerIpRateLimit bool
CorsOrigins []string
DomainPatterns []string
ExpiresAt *time.Time
IssuedAt time.Time
}
APITokenInfo contains information about an authenticated token
type AuthGroupConfig ¶ added in v1.18.3
type AuthGroupConfig struct {
Credentials *AuthGroupCredentials `yaml:"credentials"`
Headers map[string]string `yaml:"headers"`
}
type AuthGroupCredentials ¶ added in v1.18.3
type BlockDbRetentionConfig ¶ added in v1.21.0
type BlockDbRetentionConfig struct {
Enabled bool `yaml:"enabled"`
RetentionTime time.Duration `yaml:"retentionTime"` // For age-based cleanup
MaxSize int64 `yaml:"maxSize"` // Size limit in MB (0 = unlimited)
CleanupMode string `yaml:"cleanupMode"` // "age" or "lru"
}
BlockDbRetentionConfig configures per-object-type retention behavior.
type Config ¶
type Config struct {
Logging struct {
OutputLevel string `yaml:"outputLevel" envconfig:"LOGGING_OUTPUT_LEVEL"`
OutputStderr bool `yaml:"outputStderr" envconfig:"LOGGING_OUTPUT_STDERR"`
FilePath string `yaml:"filePath" envconfig:"LOGGING_FILE_PATH"`
FileLevel string `yaml:"fileLevel" envconfig:"LOGGING_FILE_LEVEL"`
} `yaml:"logging"`
Server struct {
Port string `yaml:"port" envconfig:"FRONTEND_SERVER_PORT"`
Host string `yaml:"host" envconfig:"FRONTEND_SERVER_HOST"`
ProxyCount *uint `yaml:"proxyCount" envconfig:"SERVER_PROXY_COUNT"`
} `yaml:"server"`
Chain struct {
DisplayName string `yaml:"displayName" envconfig:"CHAIN_DISPLAY_NAME"`
// optional features
WhiskForkEpoch *uint64 `yaml:"whiskForkEpoch" envconfig:"WHISK_FORK_EPOCH"`
} `yaml:"chain"`
Frontend struct {
Enabled bool `yaml:"enabled" envconfig:"FRONTEND_ENABLED"`
Debug bool `yaml:"debug" envconfig:"FRONTEND_DEBUG"`
Pprof bool `yaml:"pprof" envconfig:"FRONTEND_PPROF"`
Minify bool `yaml:"minify" envconfig:"FRONTEND_MINIFY"`
SiteDomain string `yaml:"siteDomain" envconfig:"FRONTEND_SITE_DOMAIN"`
SiteLogo string `yaml:"siteLogo" envconfig:"FRONTEND_SITE_LOGO"`
SiteName string `yaml:"siteName" envconfig:"FRONTEND_SITE_NAME"`
SiteSubtitle string `yaml:"siteSubtitle" envconfig:"FRONTEND_SITE_SUBTITLE"`
SiteDescription string `yaml:"siteDescription" envconfig:"FRONTEND_SITE_DESCRIPTION"`
EthExplorerLink string `yaml:"ethExplorerLink" envconfig:"FRONTEND_ETH_EXPLORER_LINK"`
PublicRPCUrl string `yaml:"publicRpcUrl" envconfig:"FRONTEND_PUBLIC_RPC_URL"`
RainbowkitProjectId string `yaml:"rainbowkitProjectId" envconfig:"FRONTEND_RAINBOWKIT_PROJECT_ID"`
ValidatorNamesYaml string `yaml:"validatorNamesYaml" envconfig:"FRONTEND_VALIDATOR_NAMES_YAML"`
ValidatorNamesInventory string `yaml:"validatorNamesInventory" envconfig:"FRONTEND_VALIDATOR_NAMES_INVENTORY"`
ValidatorNamesRefreshInterval time.Duration `yaml:"validatorNamesRefreshInterval" envconfig:"FRONTEND_VALIDATOR_REFRESH_INTERVAL"`
ValidatorNamesResolveInterval time.Duration `yaml:"validatorNamesResolveInterval" envconfig:"FRONTEND_VALIDATOR_RESOLVE_INTERVAL"`
BuildoorOverviewUrl string `yaml:"buildoorOverviewUrl" envconfig:"FRONTEND_BUILDOOR_OVERVIEW_URL"`
BuildoorUrls []string `yaml:"buildoorUrls" envconfig:"FRONTEND_BUILDOOR_URLS"`
BuildoorRefreshInterval time.Duration `yaml:"buildoorRefreshInterval" envconfig:"FRONTEND_BUILDOOR_REFRESH_INTERVAL"`
PageCallTimeout time.Duration `yaml:"pageCallTimeout" envconfig:"FRONTEND_PAGE_CALL_TIMEOUT"`
MaxConcurrentPages *int `yaml:"maxConcurrentPages" envconfig:"FRONTEND_MAX_CONCURRENT_PAGES"`
MaxConcurrentPageType *int `yaml:"maxConcurrentPageType" envconfig:"FRONTEND_MAX_CONCURRENT_PAGE_TYPE"`
HttpReadTimeout time.Duration `yaml:"httpReadTimeout" envconfig:"FRONTEND_HTTP_READ_TIMEOUT"`
HttpWriteTimeout time.Duration `yaml:"httpWriteTimeout" envconfig:"FRONTEND_HTTP_WRITE_TIMEOUT"`
HttpIdleTimeout time.Duration `yaml:"httpIdleTimeout" envconfig:"FRONTEND_HTTP_IDLE_TIMEOUT"`
AllowDutyLoading bool `yaml:"allowDutyLoading" envconfig:"FRONTEND_ALLOW_DUTY_LOADING"`
DisablePageCache bool `yaml:"disablePageCache" envconfig:"FRONTEND_DISABLE_PAGE_CACHE"`
ShowSensitivePeerInfos bool `yaml:"showSensitivePeerInfos" envconfig:"FRONTEND_SHOW_SENSITIVE_PEER_INFOS"`
ShowPeerDASInfos bool `yaml:"showPeerDASInfos" envconfig:"FRONTEND_SHOW_PEER_DAS_INFOS"`
ShowSubmitDeposit bool `yaml:"showSubmitDeposit" envconfig:"FRONTEND_SHOW_SUBMIT_DEPOSIT"`
ShowSubmitElRequests bool `yaml:"showSubmitElRequests" envconfig:"FRONTEND_SHOW_SUBMIT_EL_REQUESTS"`
ShowValidatorSummary bool `yaml:"showValidatorSummary" envconfig:"FRONTEND_SHOW_VALIDATOR_SUMMARY"`
// DAS Guardian configuration
DisableDasGuardianCheck bool `yaml:"disableDasGuardianCheck" envconfig:"FRONTEND_DISABLE_DAS_GUARDIAN_CHECK"`
EnableDasGuardianMassScan bool `yaml:"enableDasGuardianMassScan" envconfig:"FRONTEND_ENABLE_DAS_GUARDIAN_MASS_SCAN"`
// Tracoor configuration
TracoorUrl string `yaml:"tracoorUrl" envconfig:"FRONTEND_TRACOOR_URL"`
TracoorNetwork string `yaml:"tracoorNetwork" envconfig:"FRONTEND_TRACOOR_NETWORK"`
} `yaml:"frontend"`
Api struct {
Enabled bool `yaml:"enabled" envconfig:"API_ENABLED"`
CorsOrigins []string `yaml:"corsOrigins" envconfig:"API_CORS_ORIGINS"`
// Rate limiting and authentication
AuthSecret string `yaml:"authSecret" envconfig:"API_AUTH_SECRET"`
RequireAuth bool `yaml:"requireAuth" envconfig:"API_REQUIRE_AUTH"`
DefaultRateLimit uint `yaml:"defaultRateLimit" envconfig:"API_DEFAULT_RATE_LIMIT"`
DefaultRateLimitBurst uint `yaml:"defaultRateLimitBurst" envconfig:"API_DEFAULT_RATE_LIMIT_BURST"`
DisableDefaultRateLimit bool `yaml:"disableDefaultRateLimit" envconfig:"API_DISABLE_DEFAULT_RATE_LIMIT"`
WhitelistedIPs []string `yaml:"whitelistedIPs" envconfig:"API_WHITELISTED_IPS"`
} `yaml:"api"`
RateLimit struct {
Enabled bool `yaml:"enabled" envconfig:"RATELIMIT_ENABLED"`
ProxyCount uint `yaml:"proxyCount" envconfig:"RATELIMIT_PROXY_COUNT"` // Deprecated: use server.proxyCount instead
Rate uint `yaml:"rate" envconfig:"RATELIMIT_RATE"`
Burst uint `yaml:"burst" envconfig:"RATELIMIT_BURST"`
} `yaml:"rateLimit"`
BeaconApi struct {
Endpoint string `yaml:"endpoint" envconfig:"BEACONAPI_ENDPOINT"`
Endpoints []EndpointConfig `yaml:"endpoints"`
EndpointsURL string `yaml:"endpointsUrl" envconfig:"BEACONAPI_ENDPOINTS_URL"`
ClientIndex *int `yaml:"clientIndex" envconfig:"BEACONAPI_CLIENT_INDEX"`
LocalCacheSize int `yaml:"localCacheSize" envconfig:"BEACONAPI_LOCAL_CACHE_SIZE"`
SkipFinalAssignments bool `yaml:"skipFinalAssignments" envconfig:"BEACONAPI_SKIP_FINAL_ASSIGNMENTS"`
AssignmentsCacheSize int `yaml:"assignmentsCacheSize" envconfig:"BEACONAPI_ASSIGNMENTS_CACHE_SIZE"`
RedisCacheAddr string `yaml:"redisCacheAddr" envconfig:"BEACONAPI_REDIS_CACHE_ADDR"`
RedisCachePrefix string `yaml:"redisCachePrefix" envconfig:"BEACONAPI_REDIS_CACHE_PREFIX"`
} `yaml:"beaconapi"`
ExecutionApi struct {
Endpoint string `yaml:"endpoint" envconfig:"EXECUTIONAPI_ENDPOINT"`
Endpoints []EndpointConfig `yaml:"endpoints"`
EndpointsURL string `yaml:"endpointsUrl" envconfig:"EXECUTIONAPI_ENDPOINTS_URL"`
LogBatchSize int `yaml:"logBatchSize" envconfig:"EXECUTIONAPI_LOG_BATCH_SIZE"`
DepositDeployBlock int `yaml:"depositDeployBlock" envconfig:"EXECUTIONAPI_DEPOSIT_DEPLOY_BLOCK"` // el block number from where to crawl the deposit system contract (should be <=, but close to deposit contract deployment)
ElectraDeployBlock int `yaml:"electraDeployBlock" envconfig:"EXECUTIONAPI_ELECTRA_DEPLOY_BLOCK"` // el block number from where to crawl the electra system contracts (should be <=, but close to electra fork activation block)
GloasDeployBlock int `yaml:"gloasDeployBlock" envconfig:"EXECUTIONAPI_GLOAS_DEPLOY_BLOCK"` // el block number from where to crawl the gloas builder system contracts (should be <=, but close to gloas fork activation block)
GenesisConfig string `yaml:"genesisConfig" envconfig:"EXECUTIONAPI_GENESIS_CONFIG"` // path or URL to genesis.json file in geth format
} `yaml:"executionapi"`
Indexer struct {
ResyncFromEpoch *uint64 `yaml:"resyncFromEpoch" envconfig:"INDEXER_RESYNC_FROM_EPOCH"`
ResyncForceUpdate bool `yaml:"resyncForceUpdate" envconfig:"INDEXER_RESYNC_FORCE_UPDATE"`
InMemoryEpochs uint16 `yaml:"inMemoryEpochs" envconfig:"INDEXER_IN_MEMORY_EPOCHS"`
ActivityHistoryLength uint16 `yaml:"activityHistoryLength" envconfig:"INDEXER_ACTIVITY_HISTORY_LENGTH"`
DisableSynchronizer bool `yaml:"disableSynchronizer" envconfig:"INDEXER_DISABLE_SYNCHRONIZER"`
SyncEpochCooldown uint `yaml:"syncEpochCooldown" envconfig:"INDEXER_SYNC_EPOCH_COOLDOWN"`
MaxParallelValidatorSetRequests uint `yaml:"maxParallelValidatorSetRequests" envconfig:"INDEXER_MAX_PARALLEL_VALIDATOR_SET_REQUESTS"`
DisableBlockDB bool `yaml:"disableBlockDB" envconfig:"INDEXER_DISABLE_BLOCK_DB"`
DisableBlockDBDuties bool `yaml:"disableBlockDBDuties" envconfig:"INDEXER_DISABLE_BLOCK_DB_DUTIES"`
PubkeyCachePath string `yaml:"pubkeyCachePath" envconfig:"INDEXER_PUBKEY_CACHE_PATH"`
BadChainRoots []string `yaml:"badChainRoots" envconfig:"INDEXER_BAD_CHAIN_ROOTS"`
StateCache struct {
Enabled *bool `yaml:"enabled" envconfig:"INDEXER_STATE_CACHE_ENABLED"`
Path string `yaml:"path" envconfig:"INDEXER_STATE_CACHE_PATH"`
MaxStates uint `yaml:"maxStates" envconfig:"INDEXER_STATE_CACHE_MAX_STATES"`
} `yaml:"stateCache"`
} `yaml:"indexer"`
TxSignature struct {
DisableLookupLoop bool `yaml:"disableLookupLoop" envconfig:"TXSIG_DISABLE_LOOKUP_LOOP"`
LookupInterval time.Duration `yaml:"lookupInterval" envconfig:"TXSIG_LOOKUP_INTERVAL"`
LookupBatchSize uint64 `yaml:"lookupBatchSize" envconfig:"TXSIG_LOOKUP_INTERVAL"`
ConcurrencyLimit uint64 `yaml:"concurrencyLimit" envconfig:"TXSIG_CONCURRENCY_LIMIT"`
Disable4Bytes bool `yaml:"disable4Bytes" envconfig:"TXSIG_DISABLE_4BYTES"`
DisableSourcify bool `yaml:"disableSourcify" envconfig:"TXSIG_DISABLE_SOURCIFY"`
CbtBaseUrl string `yaml:"cbtBaseUrl" envconfig:"TXSIG_CBT_BASE_URL"`
RecheckTimeout time.Duration `yaml:"recheckTimeout" envconfig:"TXSIG_RECHECK_TIMEOUT"`
} `yaml:"txsig"`
MevIndexer struct {
Relays []MevRelayConfig `yaml:"relays"`
RefreshInterval time.Duration `yaml:"refreshInterval" envconfig:"MEVINDEXER_REFRESH_INTERVAL"`
} `yaml:"mevIndexer"`
ExecutionIndexer struct {
Enabled bool `yaml:"enabled" envconfig:"EXECUTIONINDEXER_ENABLED"`
ParallelBlocks int `yaml:"parallelBlocks" envconfig:"EXECUTIONINDEXER_PARALLEL_BLOCKS"`
Retention time.Duration `yaml:"retention" envconfig:"EXECUTIONINDEXER_RETENTION"`
CleanupInterval time.Duration `yaml:"cleanupInterval" envconfig:"EXECUTIONINDEXER_CLEANUP_INTERVAL"`
// DetailsRetention is the (longer) retention for blockdb exec data and the
// tx-hash index, decoupled from the relational Retention above. When 0 or
// below Retention it falls back to Retention (single-tier behaviour).
DetailsRetention time.Duration `yaml:"detailsRetention" envconfig:"EXECUTIONINDEXER_DETAILS_RETENTION"`
// TxHashIndexStore selects where the tx-hash index lives: "pebble" (native
// blockdb namespaces, requires a local pebble), "postgres" (el_txhash
// table, durable), or "auto"/"" (pebble for the pebble backend, postgres
// for s3/tiered).
TxHashIndexStore string `yaml:"txHashIndexStore" envconfig:"EXECUTIONINDEXER_TXHASH_INDEX_STORE"`
// Detail storage (Mode 3 features)
DetailsEnabled bool `yaml:"detailsEnabled" envconfig:"EXECUTIONINDEXER_DETAILS_ENABLED"`
TracesEnabled bool `yaml:"tracesEnabled" envconfig:"EXECUTIONINDEXER_TRACES_ENABLED"`
DetailsMaxSize string `yaml:"detailsMaxSize" envconfig:"EXECUTIONINDEXER_DETAILS_MAX_SIZE"`
} `yaml:"executionIndexer"`
Database DatabaseConfig `yaml:"database"`
BlockDb struct {
// Engine selects which of the configs below are used: "pebble" (Pebble
// only), "s3" (S3 only), or "tiered" (Pebble as a cache in front of S3 —
// reuses both the pebble and s3 configs below).
Engine string `yaml:"engine" envconfig:"BLOCKDB_ENGINE"`
Pebble PebbleBlockDBConfig `yaml:"pebble"`
S3 S3BlockDBConfig `yaml:"s3"`
} `yaml:"blockDb"`
KillSwitch struct {
DisableSSZEncoding bool `yaml:"disableSSZEncoding" envconfig:"KILLSWITCH_DISABLE_SSZ_ENCODING"`
DisableSSZRequests bool `yaml:"disableSSZRequests" envconfig:"KILLSWITCH_DISABLE_SSZ_REQUESTS"`
DisableBlockCompression bool `yaml:"disableBlockCompression" envconfig:"KILLSWITCH_DISABLE_BLOCK_COMPRESSION"`
DisableSSZPageCache bool `yaml:"disableSSZPageCache" envconfig:"KILLSWITCH_DISABLE_SSZ_PAGE_CACHE"`
} `yaml:"killSwitch"`
AuthGroups map[string]*AuthGroupConfig `yaml:"authGroups"`
RpcProxy struct {
Enabled bool `yaml:"enabled" envconfig:"RPC_PROXY_ENABLED"`
UpstreamURL string `yaml:"upstreamUrl" envconfig:"RPC_PROXY_UPSTREAM_URL"`
RequestsPerMinute int `yaml:"requestsPerMinute" envconfig:"RPC_PROXY_REQUESTS_PER_MINUTE"`
BurstLimit int `yaml:"burstLimit" envconfig:"RPC_PROXY_BURST_LIMIT"`
Timeout time.Duration `yaml:"timeout" envconfig:"RPC_PROXY_TIMEOUT"`
LogRequests bool `yaml:"logRequests" envconfig:"RPC_PROXY_LOG_REQUESTS"`
AllowedMethods []string `yaml:"allowedMethods" envconfig:"RPC_PROXY_ALLOWED_METHODS"`
} `yaml:"rpcProxy"`
// EnsResolver optionally resolves execution addresses to their primary ENS name.
// ENS lives on Ethereum mainnet, so Endpoints usually point at a mainnet RPC; when
// empty the resolver falls back to an available client from the main execution pool.
EnsResolver struct {
Enabled bool `yaml:"enabled" envconfig:"ENSRESOLVER_ENABLED"`
Endpoints []EndpointConfig `yaml:"endpoints"`
RegistryAddresses []string `yaml:"registryAddresses" envconfig:"ENSRESOLVER_REGISTRY_ADDRESSES"` // tried in config order; first verified name wins
MulticallAddress string `yaml:"multicallAddress" envconfig:"ENSRESOLVER_MULTICALL_ADDRESS"` // used to batch lookups when deployed
RefreshPositive time.Duration `yaml:"refreshPositive" envconfig:"ENSRESOLVER_REFRESH_POSITIVE"` // re-resolve interval for addresses with a name
RefreshNegative time.Duration `yaml:"refreshNegative" envconfig:"ENSRESOLVER_REFRESH_NEGATIVE"` // re-resolve interval for addresses without a name
BatchSize int `yaml:"batchSize" envconfig:"ENSRESOLVER_BATCH_SIZE"`
QueueSize int `yaml:"queueSize" envconfig:"ENSRESOLVER_QUEUE_SIZE"`
CacheSize int `yaml:"cacheSize" envconfig:"ENSRESOLVER_CACHE_SIZE"`
} `yaml:"ensResolver"`
}
Config is a struct to hold the configuration data
func (*Config) GetProxyCount ¶ added in v1.24.2
GetProxyCount returns the resolved proxy count. It prioritizes server.proxyCount (new setting) and falls back to rateLimit.proxyCount (deprecated setting).
type DatabaseConfig ¶ added in v1.15.0
type DatabaseConfig struct {
Engine string `yaml:"engine" envconfig:"DATABASE_ENGINE"`
Sqlite *SqliteDatabaseConfig `yaml:"sqlite"`
Pgsql *PgsqlDatabaseConfig `yaml:"pgsql"`
PgsqlWriter *PgsqlWriterDatabaseConfig `yaml:"pgsqlWriter"`
}
type EndpointConfig ¶
type EndpointConfig struct {
Ssh *EndpointSshConfig `yaml:"ssh"`
Url string `yaml:"url"`
Name string `yaml:"name"`
Archive bool `yaml:"archive"`
SkipValidators bool `yaml:"skipValidators"`
Priority int `yaml:"priority"`
Headers map[string]string `yaml:"headers"`
EngineSnooperUrl string `yaml:"engineSnooperUrl"`
AuthGroup string `yaml:"authGroup"`
}
type EndpointSshConfig ¶
type MainMenuItem ¶
type MainMenuItem struct {
Label string
Path string
IsActive bool
HasBigGroups bool // if HasBigGroups is set to true then the NavigationGroups will be ordered horizontally and their Label will be shown
Groups []NavigationGroup
}
type Meta ¶
type Meta struct {
Title string
Description string
Domain string
Path string
Tlabel1 string
Tdata1 string
Tlabel2 string
Tdata2 string
Templates string
}
Meta is a struct to hold metadata about the page
type MevRelayConfig ¶
type NamedValidator ¶
type NavigationGroup ¶
type NavigationGroup struct {
}
type NavigationLink ¶
type NavigationLink struct {
}
type PageData ¶
type PageData struct {
Active string
Meta *Meta
Data interface{}
Version string
BuildTime string
ServerTime int64
Year int
ExplorerLogo string
ExplorerTitle string
ExplorerSubtitle string
ChainSlotsPerEpoch uint64
ChainSlotDurationMs uint64
ChainGenesisTimestamp uint64
CurrentEpoch uint64
LatestFinalizedEpoch uint64
CurrentSlot uint64
FinalizationDelay uint64
IsReady bool
Mainnet bool
DepositContract string
InfoBanner *template.HTML
ClientsUpdated bool
Lang string
NoAds bool
Debug bool
DebugTemplates []string
MainMenuItems []MainMenuItem
ApiEnabled bool
ExecutionIndexerEnabled bool
}
PageData is a struct to hold web page data
type PebbleBlockDBConfig ¶ added in v1.15.0
type PebbleBlockDBConfig struct {
Path string `yaml:"path" envconfig:"BLOCKDB_PEBBLE_PATH"`
CacheSize int `yaml:"cacheSize" envconfig:"BLOCKDB_PEBBLE_CACHE_SIZE"` // Pebble internal cache in MB
// Per-namespace retention. In tiered mode these evict cached copies from the
// Pebble cache (the authoritative copy stays in S3); in pebble mode Pebble is
// authoritative, so they delete the data. BlockRetention covers all block
// components (header/body/payload/bal) as a unit. ExecDataRetention only
// applies in tiered mode — in pebble mode exec-data retention is owned by
// executionIndexer.detailsRetention and this setting is ignored (with a
// warning). The tx-hash index is never governed here.
BlockRetention BlockDbRetentionConfig `yaml:"blockRetention"`
ExecDataRetention BlockDbRetentionConfig `yaml:"execDataRetention"`
DutiesRetention BlockDbRetentionConfig `yaml:"dutiesRetention"`
// BidsRetention governs per-slot bids objects (bids + gossip observations).
// Only applies in pebble mode - in tiered mode bids objects live in S3 only.
BidsRetention BlockDbRetentionConfig `yaml:"bidsRetention"`
// Interval between retention cleanup runs (default 12h, negative = disabled).
CleanupInterval time.Duration `yaml:"cleanupInterval" envconfig:"BLOCKDB_PEBBLE_CLEANUP_INTERVAL"`
}
PebbleBlockDBConfig configures the Pebble (local) storage engine.
type PgsqlDatabaseConfig ¶
type PgsqlDatabaseConfig struct {
Username string `yaml:"user" envconfig:"DATABASE_PGSQL_USERNAME"`
Password string `yaml:"password" envconfig:"DATABASE_PGSQL_PASSWORD"`
Name string `yaml:"name" envconfig:"DATABASE_PGSQL_NAME"`
Host string `yaml:"host" envconfig:"DATABASE_PGSQL_HOST"`
Port string `yaml:"port" envconfig:"DATABASE_PGSQL_PORT"`
MaxOpenConns int `yaml:"maxOpenConns" envconfig:"DATABASE_PGSQL_MAX_OPEN_CONNS"`
MaxIdleConns int `yaml:"maxIdleConns" envconfig:"DATABASE_PGSQL_MAX_IDLE_CONNS"`
}
type PgsqlWriterDatabaseConfig ¶ added in v1.15.0
type PgsqlWriterDatabaseConfig struct {
Username string `yaml:"user" envconfig:"DATABASE_PGSQL_WRITER_USERNAME"`
Password string `yaml:"password" envconfig:"DATABASE_PGSQL_WRITER_PASSWORD"`
Name string `yaml:"name" envconfig:"DATABASE_PGSQL_WRITER_NAME"`
Host string `yaml:"host" envconfig:"DATABASE_PGSQL_WRITER_HOST"`
Port string `yaml:"port" envconfig:"DATABASE_PGSQL_WRITER_PORT"`
MaxOpenConns int `yaml:"maxOpenConns" envconfig:"DATABASE_PGSQL_WRITER_MAX_OPEN_CONNS"`
MaxIdleConns int `yaml:"maxIdleConns" envconfig:"DATABASE_PGSQL_WRITER_MAX_IDLE_CONNS"`
}
type S3BlockDBConfig ¶ added in v1.15.0
type S3BlockDBConfig struct {
Endpoint string `yaml:"endpoint" envconfig:"BLOCKDB_S3_ENDPOINT"`
Secure YamlBool `yaml:"secure" envconfig:"BLOCKDB_S3_SECURE"`
Bucket string `yaml:"bucket" envconfig:"BLOCKDB_S3_BUCKET"`
Region string `yaml:"region" envconfig:"BLOCKDB_S3_REGION"`
AccessKey string `yaml:"accessKey" envconfig:"BLOCKDB_S3_ACCESS_KEY"`
SecretKey string `yaml:"secretKey" envconfig:"BLOCKDB_S3_SECRET_KEY"`
Path string `yaml:"path" envconfig:"BLOCKDB_S3_PATH"`
EnableRangeRequests bool `yaml:"enableRangeRequests" envconfig:"BLOCKDB_S3_ENABLE_RANGE_REQUESTS"` // Use HTTP Range requests for selective loading
}
S3BlockDBConfig configures the S3 (remote) storage engine.
type SqliteDatabaseConfig ¶
type SystemContract ¶ added in v1.22.0
type TxSignatureBytes ¶
type TxSignatureBytes [4]byte
type TxSignatureLookupStatus ¶
type TxSignatureLookupStatus uint8
var ( TxSigStatusPending TxSignatureLookupStatus = 0 TxSigStatusFound TxSignatureLookupStatus = 1 TxSigStatusUnknown TxSignatureLookupStatus = 2 )