Documentation ¶
Index ¶
- Constants
- Variables
- type ApiConfig
- type BadgerDBConfig
- type BeaconConfig
- type BlockSimulationConfig
- type BlockSimulationHTTPConfig
- type BlockSimulationRPCConfig
- type BlockSimulationWSConfig
- type ChainConfig
- type Config
- type ConfigManager
- type DataAPIConfig
- type DistributedConfig
- type HTTPConfig
- type Listener
- type Network
- type PayloadConfig
- type Propagator
- type RedisConfig
- type RedisDBConfig
- type RedisStreamConfig
- type RelayConfig
- type SQLConfig
- type Source
- type Subscriber
- type ValidatorsConfig
- type VerifyConfig
- type WarehouseConfig
Constants ¶
View Source
const ( GenesisForkVersionMainnet = "0x00000000" GenesisForkVersionRopsten = "0x80000069" GenesisForkVersionSepolia = "0x90000069" GenesisForkVersionGoerli = "0x00001020" // https://github.com/eth-clients/merge-testnets/blob/main/goerli-shadow-fork-5/config.yaml#L11 BellatrixForkVersionMainnet = "0x02000000" BellatrixForkVersionRopsten = "0x80000071" BellatrixForkVersionSepolia = "0x90000071" BellatrixForkVersionGoerli = "0x02001020" CapellaForkVersionRopsten = "0x03001020" CapellaForkVersionSepolia = "0x90000072" CapellaForkVersionGoerli = "0x03001020" CapellaForkVersionMainnet = "0x03000000" GenesisValidatorsRootMainnet = "0x4b363db94e286120d76eb905340fdd4e54bfe9f06bf33ff6cf5ad27f511bfe95" GenesisValidatorsRootRopsten = "0x44f1e56283ca88b35c789f7f449e52339bc1fefe3a45913a43a6d16edcd33cf1" GenesisValidatorsRootSepolia = "0xd8ea171f3c94aea21ebc42a1ed61052acf3f9209c00e4efbaaddac09ed9b8078" GenesisValidatorsRootGoerli = "0x043db0d9a83813551ee2f33450d23797757d430911a9320530ad8a0eabc43efb" )
Variables ¶
View Source
var DefaultApiConfig = &ApiConfig{
SubmissionLimitRate: 2,
SubmissionLimitBurst: 2,
LimitterCacheSize: 1_000,
DataLimit: 450,
}
View Source
var DefaultBadgerDBConfig = &BadgerDBConfig{ TTL: 24 * time.Hour, }
View Source
var DefaultBeaconConfig = &BeaconConfig{ PayloadAttributesSubscription: true, EventRestart: 5, EventTimeout: 16 * time.Second, QueryTimeout: 20 * time.Second, }
View Source
var DefaultBlockSimulation = &BlockSimulationConfig{ WS: &BlockSimulationWSConfig{ Retry: true, }, RPC: &BlockSimulationRPCConfig{}, HTTP: &BlockSimulationHTTPConfig{}, }
View Source
var DefaultDataAPIConfig = &DataAPIConfig{ DB: *DefaultSQLConfig, Badger: *DefaultBadgerDBConfig, }
View Source
var DefaultDistributedConfig = &DistributedConfig{ Redis: &RedisStreamConfig{ Topic: "relay", }, WorkerNumber: 100, StreamQueueSize: 100, StreamServedBids: true, }
View Source
var DefaultHTTPConfig = &HTTPConfig{ ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second, IdleTimeout: 5 * time.Second, }
View Source
var DefaultPayloadConfig = &PayloadConfig{ Badger: *DefaultBadgerDBConfig, TTL: 24 * time.Hour, CacheSize: 1_000, Redis: *DefaultRedisDBConfig, }
View Source
var DefaultRedisDBConfig = &RedisDBConfig{ Read: &RedisConfig{}, Write: &RedisConfig{}, }
View Source
var DefaultRedisStreamConfig = &RedisStreamConfig{
Topic: "relay",
}
View Source
var DefaultRelayConfig = &RelayConfig{ PublishBlock: true, GetPayloadResponseDelay: 800 * time.Millisecond, GetPayloadRequestTimeLimit: 4 * time.Second, }
View Source
var DefaultSQLConfig = &SQLConfig{ MaxOpenConns: 15, MaxIdleConns: 10, ConnMaxIdleTime: 15 * time.Second, }
View Source
var DefaultValidatorsConfig = &ValidatorsConfig{ DB: DefaultSQLConfig, Badger: *DefaultBadgerDBConfig, QueueSize: 100_000, StoreWorkersNum: 400, RegistrationsCacheSize: 600_000, RegistrationsReadCacheTTL: time.Hour, RegistrationsWriteCacheTTL: 12 * time.Hour, }
View Source
var DefaultVerifyConfig = &VerifyConfig{
WorkersNum: 2000,
QueueSize: 100_000,
}
View Source
var DefaultWarehouseConfig = &WarehouseConfig{
Directory: "/data/relay/warehouse",
WorkerNumber: 32,
Buffer: 1_000,
}
Functions ¶
This section is empty.
Types ¶
type ApiConfig ¶ added in v0.6.0
type ApiConfig struct { Subscriber // comma separated list of allowed builder pubkeys" AllowedBuilders []string `config:"allowed_builders,allow_dynamic"` // map[[48]byte]struct{} // submission request limit - rate per second SubmissionLimitRate int `config:"submission_limit_rate,allow_dynamic"` // submission request limit - burst value SubmissionLimitBurst int `config:"submission_limit_burst,allow_dynamic"` // rate limitter cache entries size LimitterCacheSize int `config:"limitter_cache_size"` // limit of data returned in one response DataLimit int `config:"datalimit,allow_dynamic"` // this flag set to allows to return errors when endpoint is disabled ErrorsOnDisable bool `config:"errors_on_disable,allow_dynamic"` }
type BadgerDBConfig ¶ added in v0.6.0
type BeaconConfig ¶ added in v0.6.0
type BeaconConfig struct { Subscriber // comma separate list of urls to beacon endpoints Addresses []string `config:"addresses,allow_dynamic"` // comma separate list of urls to beacon endpoints PublishAddresses []string `config:"publish_addresses,allow_dynamic"` // comma separate list of urls to beacon endpoints PublishAddressesV2 []string `config:"publish_addresses_v2,allow_dynamic"` // should payload attributes be enabled PayloadAttributesSubscription bool `config:"payload_attributes_subscription,allow_dynamic"` // EventTimeout time.Duration `config:"event_timeout"` // EventRestart int `config:"event_restart"` // timeout of beacon queries QueryTimeout time.Duration `config:"query_timeout"` }
type BlockSimulationConfig ¶ added in v0.6.0
type BlockSimulationConfig struct { RPC *BlockSimulationRPCConfig `config:"rpc"` WS *BlockSimulationWSConfig `config:"ws"` HTTP *BlockSimulationHTTPConfig `config:"http"` }
type BlockSimulationHTTPConfig ¶ added in v0.6.0
type BlockSimulationHTTPConfig struct { Subscriber Address string `config:"address"` }
type BlockSimulationRPCConfig ¶ added in v0.6.0
type BlockSimulationRPCConfig struct { // block validation rawurl (eg. ipc path) Address string `config:"address"` }
type BlockSimulationWSConfig ¶ added in v0.6.0
type BlockSimulationWSConfig struct { Subscriber // block validation endpoint address (comma separated list) Address []string `config:"address,allow_dynamic"` // retry to other websocket connections on failure" Retry bool `config:"retry,allow_dynamic"` }
type ChainConfig ¶ added in v0.6.0
type ChainConfig struct { GenesisForkVersion string BellatrixForkVersion string CapellaForkVersion string GenesisValidatorsRoot string }
ChainConfig provides all available options for the default BeaconClient and Relay
func NewChainConfig ¶ added in v0.6.0
func NewChainConfig() *ChainConfig
func (*ChainConfig) LoadNetwork ¶ added in v0.6.0
func (c *ChainConfig) LoadNetwork(network string)
func (*ChainConfig) ReadNetworkConfig ¶ added in v0.6.0
func (c *ChainConfig) ReadNetworkConfig(datadir, network string) (err error)
type Config ¶
type Config struct { // http server on which relay serves external connections ExternalHttp *HTTPConfig `config:"external_http"` // internal port for metrics profiling and management InternalHttp *HTTPConfig `config:"internal_http"` // Api *ApiConfig `config:"api"` // Relay *RelayConfig `config:"relay"` // configuration of beacon nodes Beacon *BeaconConfig `config:"beacon"` // Verify *VerifyConfig `config:"verify"` // Validators *ValidatorsConfig `config:"validators"` // BlockSimulation *BlockSimulationConfig `config:"block_simulation"` // Payload *PayloadConfig `config:"payload"` // DataAPI *DataAPIConfig `config:"dataapi"` // Warehouse *WarehouseConfig `config:"warehouse"` // Distributed *DistributedConfig `config:"distributed"` }
func DefaultConfig ¶ added in v0.6.0
func DefaultConfig() Config
type ConfigManager ¶ added in v0.6.0
type ConfigManager struct { *Config // contains filtered or unexported fields }
func NewConfigManager ¶ added in v0.6.0
func NewConfigManager(s Source) *ConfigManager
func (*ConfigManager) GetConfigJSON ¶ added in v0.6.0
func (cm *ConfigManager) GetConfigJSON() ([]byte, error)
func (*ConfigManager) Load ¶ added in v0.6.0
func (cm *ConfigManager) Load() error
func (*ConfigManager) Reload ¶ added in v0.6.0
func (cm *ConfigManager) Reload() error
type DataAPIConfig ¶ added in v0.6.0
type DataAPIConfig struct { // Address of postgress database for validator registrations, if empty - default, badger will be used", DB SQLConfig `config:"db"` // BadgerDB config if sql is not used Badger BadgerDBConfig `config:"badger"` }
type DistributedConfig ¶ added in v0.6.0
type DistributedConfig struct { Redis *RedisStreamConfig `config:"redis"` InstanceID uuid.UUID `config:"id"` // Number of workers for storing data in warehouse, if 0, then data is not exported WorkerNumber int `config:"workers"` // Stream internal channel size StreamQueueSize int `config:"stream_queue_size"` // stream entire block for every bid that is served in GetHeader requests. StreamServedBids bool `config:"stream_served_bids"` }
func (*DistributedConfig) LocalNode ¶ added in v0.6.2
func (c *DistributedConfig) LocalNode() uuid.UUID
LocalNode returns a unique identifier for the locally-running relay. If the InstanceID field is set, LocalNode() returns its value. Else, a random UUID is generated and assigned to InstanceID before LocalNode() returns.
type HTTPConfig ¶ added in v0.6.0
type HTTPConfig struct { // address (ip+port) on which http should be served Address string `config:"address"` ReadTimeout time.Duration `config:"read_timeout"` //time.Second * 2, IdleTimeout time.Duration `config:"idle_timeout"` //time.Second * 2, WriteTimeout time.Duration `config:"write_timeout"` //time.Second * 2, }
type PayloadConfig ¶ added in v0.6.0
type PayloadConfig struct { // BadgerDB config Badger BadgerDBConfig `config:"badger"` CacheSize int `config:"cache_size"` // Redis config Redis RedisDBConfig `config:"redis"` // TTL of payload data TTL time.Duration `config:"ttl,allow_dynamic"` }
type Propagator ¶ added in v0.6.0
type RedisConfig ¶ added in v0.6.0
type RedisConfig struct {
Address string `config:"address"`
}
type RedisDBConfig ¶ added in v0.6.0
type RedisDBConfig struct { Read *RedisConfig `config:"read"` Write *RedisConfig `config:"write"` }
type RedisStreamConfig ¶ added in v0.6.0
type RelayConfig ¶ added in v0.6.0
type RelayConfig struct { Subscriber // name of the network in which relay oparates Network string `config:"network"` // mainnet // secret key used to sign messages SecretKey string `config:"secret_key"` // for publishing payloads to beacon nodes after a delivery PublishBlock bool `config:"publish_block"` // block publish delay GetPayloadResponseDelay time.Duration `config:"get_payload_response_delay,allow_dynamic"` // deadline for calling get Payload GetPayloadRequestTimeLimit time.Duration `config:"get_payload_request_time_limit,allow_dynamic"` // comma separated list of allowed builder pubkeys" AllowedBuilders []string `config:"allowed_builders,allow_dynamic"` // map[[48]byte]struct{} }
type Subscriber ¶ added in v0.6.0
type Subscriber struct {
// contains filtered or unexported fields
}
func (Subscriber) Propagate ¶ added in v0.6.0
func (s Subscriber) Propagate(change structs.OldNew)
func (*Subscriber) SubscribeForUpdates ¶ added in v0.6.0
func (s *Subscriber) SubscribeForUpdates(l Listener)
type ValidatorsConfig ¶ added in v0.6.0
type ValidatorsConfig struct { // Address of postgress database for validator registrations, if empty - default, badger will be used", DB *SQLConfig `config:"db"` // BadgerDB config if sql is not used Badger BadgerDBConfig `config:"badger"` // The size of response queue, should be set to expected number of validators in one request QueueSize uint `config:"queue_size"` // Number of workers storing validators in parallel StoreWorkersNum uint `config:"store_workers"` // Registrations cache size RegistrationsCacheSize int `config:"registrations_cache_size"` // Registrations cache ttl RegistrationsReadCacheTTL time.Duration `config:"registrations_cache_ttl"` // Registrations cache ttl RegistrationsWriteCacheTTL time.Duration `config:"registrations_write_cache_ttl"` }
type VerifyConfig ¶ added in v0.6.0
type WarehouseConfig ¶ added in v0.6.0
type WarehouseConfig struct { // Data directory where the data is stored in the warehouse Directory string `config:"directory"` // Number of workers for storing data in warehouse, if 0, then data is not exported WorkerNumber int `config:"workers"` // Size of the buffer for processing requests Buffer int `config:"buffer"` }
Click to show internal directories.
Click to hide internal directories.