diff --git a/deploy/local/docker-compose/vector-kafka-clickhouse-libp2p.yaml b/deploy/local/docker-compose/vector-kafka-clickhouse-libp2p.yaml index f73c0c25..51d45a61 100644 --- a/deploy/local/docker-compose/vector-kafka-clickhouse-libp2p.yaml +++ b/deploy/local/docker-compose/vector-kafka-clickhouse-libp2p.yaml @@ -1911,3 +1911,23 @@ sinks: healthcheck: enabled: true skip_unknown_fields: false + libp2p_trace_gossipsub_beacon_data_column_sidecar_clickhouse: + type: clickhouse + inputs: + - libp2p_trace_gossipsub_beacon_data_column_sidecar_formatted + database: default + endpoint: "${CLICKHOUSE_ENDPOINT}" + table: libp2p_gossipsub_beacon_data_column_sidecar + auth: + strategy: basic + user: "${CLICKHOUSE_USER}" + password: "${CLICKHOUSE_PASSWORD}" + batch: + max_bytes: 52428800 + max_events: 200000 + timeout_secs: 1 + buffer: + max_events: 200000 + healthcheck: + enabled: true + skip_unknown_fields: false diff --git a/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.down.sql b/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.down.sql deleted file mode 100644 index 5af5d98b..00000000 --- a/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.down.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP TABLE IF EXISTS libp2p_gossipsub_beacon_data_column_sidecar ON CLUSTER '{cluster}'; -DROP TABLE IF EXISTS libp2p_gossipsub_beacon_data_column_sidecar_local ON CLUSTER '{cluster}'; diff --git a/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.up.sql b/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.up.sql deleted file mode 100644 index cdb27c7e..00000000 --- a/deploy/migrations/clickhouse/037_libp2p_gossipsub_beacon_data_column_sidecar.up.sql +++ /dev/null @@ -1,90 +0,0 @@ -CREATE TABLE libp2p_gossipsub_beacon_data_column_sidecar_local on cluster '{cluster}' ( - unique_key Int64, - updated_date_time DateTime CODEC(DoubleDelta, ZSTD(1)), - event_date_time DateTime64(3) Codec(DoubleDelta, ZSTD(1)), - slot UInt32 Codec(DoubleDelta, ZSTD(1)), - slot_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - epoch UInt32 Codec(DoubleDelta, ZSTD(1)), - epoch_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - column_index UInt64 Codec(ZSTD(1)), - kzg_commitments Array(String) Codec(ZSTD(1)), - kzg_proof String Codec(ZSTD(1)), - kzg_commitments_inclusion_proof String Codec(ZSTD(1)), - state_root FixedString(66) Codec(ZSTD(1)), - wallclock_slot UInt32 Codec(DoubleDelta, ZSTD(1)), - wallclock_slot_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - wallclock_epoch UInt32 Codec(DoubleDelta, ZSTD(1)), - wallclock_epoch_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - propagation_slot_start_diff UInt32 Codec(ZSTD(1)), - peer_id_unique_key Int64, - message_id String CODEC(ZSTD(1)), - message_size UInt32 Codec(ZSTD(1)), - topic_layer LowCardinality(String), - topic_fork_digest_value LowCardinality(String), - topic_name LowCardinality(String), - topic_encoding LowCardinality(String), - meta_client_name LowCardinality(String), - meta_client_id String Codec(ZSTD(1)), - meta_client_version LowCardinality(String), - meta_client_implementation LowCardinality(String), - meta_client_os LowCardinality(String), - meta_client_ip Nullable(IPv6) Codec(ZSTD(1)), - meta_client_geo_city LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_country LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_country_code LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_continent_code LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_longitude Nullable(Float64) Codec(ZSTD(1)), - meta_client_geo_latitude Nullable(Float64) Codec(ZSTD(1)), - meta_client_geo_autonomous_system_number Nullable(UInt32) Codec(ZSTD(1)), - meta_client_geo_autonomous_system_organization Nullable(String) Codec(ZSTD(1)), - meta_network_id Int32 Codec(DoubleDelta, ZSTD(1)), - meta_network_name LowCardinality(String) -) Engine = ReplicatedReplacingMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/{database}/{table}', '{replica}', updated_date_time) -PARTITION BY toStartOfMonth(slot_start_date_time) -ORDER BY (slot_start_date_time, unique_key, meta_network_name, meta_client_name); - -ALTER TABLE libp2p_gossipsub_beacon_data_column_sidecar_local ON CLUSTER '{cluster}' -MODIFY COMMENT 'Table for libp2p gossipsub beacon data column sidecar data.', -COMMENT COLUMN unique_key 'Unique identifier for each record', -COMMENT COLUMN updated_date_time 'Timestamp when the record was last updated', -COMMENT COLUMN event_date_time 'Timestamp of the event with millisecond precision', -COMMENT COLUMN slot 'Slot number associated with the event', -COMMENT COLUMN slot_start_date_time 'Start date and time of the slot', -COMMENT COLUMN epoch 'The epoch number in the data column sidecar', -COMMENT COLUMN epoch_start_date_time 'The wall clock time when the epoch started', -COMMENT COLUMN column_index 'Index of the column in the data', -COMMENT COLUMN kzg_commitments 'Commitments for the column', -COMMENT COLUMN kzg_proof 'Proof for the column', -COMMENT COLUMN kzg_commitments_inclusion_proof 'Inclusion proof for the column', -COMMENT COLUMN state_root 'State root for signed block header', -COMMENT COLUMN wallclock_slot 'Slot number of the wall clock when the event was received', -COMMENT COLUMN wallclock_slot_start_date_time 'Start date and time of the wall clock slot when the event was received', -COMMENT COLUMN wallclock_epoch 'Epoch number of the wall clock when the event was received', -COMMENT COLUMN wallclock_epoch_start_date_time 'Start date and time of the wall clock epoch when the event was received', -COMMENT COLUMN propagation_slot_start_diff 'Difference in slot start time for propagation', -COMMENT COLUMN peer_id_unique_key 'Unique key associated with the identifier of the peer', -COMMENT COLUMN message_id 'Identifier of the message', -COMMENT COLUMN message_size 'Size of the message in bytes', -COMMENT COLUMN topic_layer 'Layer of the topic in the gossipsub protocol', -COMMENT COLUMN topic_fork_digest_value 'Fork digest value of the topic', -COMMENT COLUMN topic_name 'Name of the topic', -COMMENT COLUMN topic_encoding 'Encoding used for the topic', -COMMENT COLUMN meta_client_name 'Name of the client that generated the event', -COMMENT COLUMN meta_client_id 'Unique Session ID of the client that generated the event. This changes every time the client is restarted.', -COMMENT COLUMN meta_client_version 'Version of the client that generated the event', -COMMENT COLUMN meta_client_implementation 'Implementation of the client that generated the event', -COMMENT COLUMN meta_client_os 'Operating system of the client that generated the event', -COMMENT COLUMN meta_client_ip 'IP address of the client that generated the event', -COMMENT COLUMN meta_client_geo_city 'City of the client that generated the event', -COMMENT COLUMN meta_client_geo_country 'Country of the client that generated the event', -COMMENT COLUMN meta_client_geo_country_code 'Country code of the client that generated the event', -COMMENT COLUMN meta_client_geo_continent_code 'Continent code of the client that generated the event', -COMMENT COLUMN meta_client_geo_longitude 'Longitude of the client that generated the event', -COMMENT COLUMN meta_client_geo_latitude 'Latitude of the client that generated the event', -COMMENT COLUMN meta_client_geo_autonomous_system_number 'Autonomous system number of the client that generated the event', -COMMENT COLUMN meta_client_geo_autonomous_system_organization 'Autonomous system organization of the client that generated the event', -COMMENT COLUMN meta_network_id 'Network ID associated with the client', -COMMENT COLUMN meta_network_name 'Name of the network associated with the client'; - -CREATE TABLE libp2p_gossipsub_beacon_data_column_sidecar on cluster '{cluster}' AS libp2p_gossipsub_beacon_data_column_sidecar_local -ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_beacon_data_column_sidecar_local, unique_key); diff --git a/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.down.sql b/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.down.sql deleted file mode 100644 index 14b2d5e9..00000000 --- a/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.down.sql +++ /dev/null @@ -1,2 +0,0 @@ -DROP TABLE IF EXISTS libp2p_gossipsub_blob_sidecar ON CLUSTER '{cluster}'; -DROP TABLE IF EXISTS libp2p_gossipsub_blob_sidecar_local ON CLUSTER '{cluster}'; \ No newline at end of file diff --git a/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.up.sql b/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.up.sql deleted file mode 100644 index 9e277fd4..00000000 --- a/deploy/migrations/clickhouse/046_libp2p_gossipsub_blob_sidecar.up.sql +++ /dev/null @@ -1,88 +0,0 @@ -CREATE TABLE libp2p_gossipsub_blob_sidecar_local -ON CLUSTER '{cluster}' ( - unique_key Int64, - updated_date_time DateTime CODEC(DoubleDelta, ZSTD(1)), - event_date_time DateTime64(3) Codec(DoubleDelta, ZSTD(1)), - slot UInt32 Codec(DoubleDelta, ZSTD(1)), - slot_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - epoch UInt32 Codec(DoubleDelta, ZSTD(1)), - epoch_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - wallclock_slot UInt32 Codec(DoubleDelta, ZSTD(1)), - wallclock_slot_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - wallclock_epoch UInt32 Codec(DoubleDelta, ZSTD(1)), - wallclock_epoch_start_date_time DateTime Codec(DoubleDelta, ZSTD(1)), - propagation_slot_start_diff UInt32 Codec(ZSTD(1)), - proposer_index UInt32 CODEC(ZSTD(1)), - blob_index UInt32 CODEC(ZSTD(1)), - peer_id_unique_key Int64, - message_id String CODEC(ZSTD(1)), - message_size UInt32 Codec(ZSTD(1)), - topic_layer LowCardinality(String), - topic_fork_digest_value LowCardinality(String), - topic_name LowCardinality(String), - topic_encoding LowCardinality(String), - meta_client_name LowCardinality(String), - meta_client_id String Codec(ZSTD(1)), - meta_client_version LowCardinality(String), - meta_client_implementation LowCardinality(String), - meta_client_os LowCardinality(String), - meta_client_ip Nullable(IPv6) Codec(ZSTD(1)), - meta_client_geo_city LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_country LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_country_code LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_continent_code LowCardinality(String) Codec(ZSTD(1)), - meta_client_geo_longitude Nullable(Float64) Codec(ZSTD(1)), - meta_client_geo_latitude Nullable(Float64) Codec(ZSTD(1)), - meta_client_geo_autonomous_system_number Nullable(UInt32) Codec(ZSTD(1)), - meta_client_geo_autonomous_system_organization Nullable(String) Codec(ZSTD(1)), - meta_network_id Int32 Codec(DoubleDelta, ZSTD(1)), - meta_network_name LowCardinality(String) -) Engine = ReplicatedReplacingMergeTree('/clickhouse/{installation}/{cluster}/tables/{shard}/{database}/{table}', '{replica}', updated_date_time) -PARTITION BY toStartOfMonth(slot_start_date_time) -ORDER BY (slot_start_date_time, unique_key, meta_network_name, meta_client_name); - -ALTER TABLE libp2p_gossipsub_blob_sidecar_local -ON CLUSTER '{cluster}' -MODIFY COMMENT 'Table for libp2p gossipsub blob sidecar data', -COMMENT COLUMN unique_key 'Unique identifier for each record', -COMMENT COLUMN updated_date_time 'Timestamp when the record was last updated', -COMMENT COLUMN event_date_time 'Timestamp of the event with millisecond precision', -COMMENT COLUMN slot 'Slot number associated with the event', -COMMENT COLUMN slot_start_date_time 'Start date and time of the slot', -COMMENT COLUMN epoch 'Epoch number associated with the event', -COMMENT COLUMN epoch_start_date_time 'Start date and time of the epoch', -COMMENT COLUMN wallclock_slot 'Slot number of the wall clock when the event was received', -COMMENT COLUMN wallclock_slot_start_date_time 'Start date and time of the wall clock slot when the event was received', -COMMENT COLUMN wallclock_epoch 'Epoch number of the wall clock when the event was received', -COMMENT COLUMN wallclock_epoch_start_date_time 'Start date and time of the wall clock epoch when the event was received', -COMMENT COLUMN propagation_slot_start_diff 'Difference in slot start time for propagation', -COMMENT COLUMN proposer_index 'The proposer index of the beacon block', -COMMENT COLUMN blob_index 'Blob index associated with the record', -COMMENT COLUMN peer_id_unique_key 'Unique key associated with the identifier of the peer', -COMMENT COLUMN message_id 'Identifier of the message', -COMMENT COLUMN message_size 'Size of the message in bytes', -COMMENT COLUMN topic_layer 'Layer of the topic in the gossipsub protocol', -COMMENT COLUMN topic_fork_digest_value 'Fork digest value of the topic', -COMMENT COLUMN topic_name 'Name of the topic', -COMMENT COLUMN topic_encoding 'Encoding used for the topic', -COMMENT COLUMN meta_client_name 'Name of the client that generated the event', -COMMENT COLUMN meta_client_id 'Unique Session ID of the client that generated the event. This changes every time the client is restarted.', -COMMENT COLUMN meta_client_version 'Version of the client that generated the event', -COMMENT COLUMN meta_client_implementation 'Implementation of the client that generated the event', -COMMENT COLUMN meta_client_os 'Operating system of the client that generated the event', -COMMENT COLUMN meta_client_ip 'IP address of the client that generated the event', -COMMENT COLUMN meta_client_geo_city 'City of the client that generated the event', -COMMENT COLUMN meta_client_geo_country 'Country of the client that generated the event', -COMMENT COLUMN meta_client_geo_country_code 'Country code of the client that generated the event', -COMMENT COLUMN meta_client_geo_continent_code 'Continent code of the client that generated the event', -COMMENT COLUMN meta_client_geo_longitude 'Longitude of the client that generated the event', -COMMENT COLUMN meta_client_geo_latitude 'Latitude of the client that generated the event', -COMMENT COLUMN meta_client_geo_autonomous_system_number 'Autonomous system number of the client that generated the event', -COMMENT COLUMN meta_client_geo_autonomous_system_organization 'Autonomous system organization of the client that generated the event', -COMMENT COLUMN meta_network_id 'Network ID associated with the client', -COMMENT COLUMN meta_network_name 'Name of the network associated with the client'; - -CREATE TABLE libp2p_gossipsub_blob_sidecar -ON CLUSTER '{cluster}' -AS libp2p_gossipsub_blob_sidecar_local -ENGINE = Distributed('{cluster}', default, libp2p_gossipsub_blob_sidecar_local, unique_key); \ No newline at end of file diff --git a/go.mod b/go.mod index 2ab78171..d0136040 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/ethpandaops/xatu go 1.22.0 -replace github.com/probe-lab/hermes => github.com/ethpandaops/hermes v0.0.0-20240527060557-ae23464cdc41 +replace github.com/probe-lab/hermes => github.com/ethpandaops/hermes v0.0.0-20240725023104-113a74f8b721 require ( github.com/IBM/sarama v1.43.0 diff --git a/go.sum b/go.sum index e7cbb8af..967d4071 100644 --- a/go.sum +++ b/go.sum @@ -266,8 +266,8 @@ github.com/ethpandaops/ethcore v0.0.0-20240422023000-2a5727b18756 h1:8JWjrRfP14m github.com/ethpandaops/ethcore v0.0.0-20240422023000-2a5727b18756/go.mod h1:ZvKqL6CKxiraefdXPHeJurV2pDD/f2HF2uklDVdrry8= github.com/ethpandaops/ethwallclock v0.3.0 h1:xF5fwtBf+bHFHZKBnwiPFEuelW3sMM7SD3ZNFq1lJY4= github.com/ethpandaops/ethwallclock v0.3.0/go.mod h1:y0Cu+mhGLlem19vnAV2x0hpFS5KZ7oOi2SWYayv9l24= -github.com/ethpandaops/hermes v0.0.0-20240527060557-ae23464cdc41 h1:KM07rlGX9EQm6ZawvL0BDMJ5Rf3brZIJKsmiFS92wI0= -github.com/ethpandaops/hermes v0.0.0-20240527060557-ae23464cdc41/go.mod h1:uMPOUopuxLk1Qktn66udTjRBLqJJ+CNfiCyxNQda4Ow= +github.com/ethpandaops/hermes v0.0.0-20240725023104-113a74f8b721 h1:8fwmolf051iMka7QkuiZ7a97wTwTEshNA0RoaLKOy7o= +github.com/ethpandaops/hermes v0.0.0-20240725023104-113a74f8b721/go.mod h1:IZgi+dl4W0aDbxy0IB/hTfJtiDDEe/AkkDzvt/rgvZ8= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= diff --git a/pkg/clmimicry/ethereum/config.go b/pkg/clmimicry/ethereum/config.go index f90bffff..6590c075 100644 --- a/pkg/clmimicry/ethereum/config.go +++ b/pkg/clmimicry/ethereum/config.go @@ -19,6 +19,7 @@ type CustomNetwork struct { ConfigURL string `yaml:"configUrl"` BootnodeENRURL string `yaml:"bootnodeEnrUrl"` DepositContractBlockURL string `yaml:"depositContractBlockUrl"` + GenesisSSZURL string `yaml:"genesisSSZUrl"` } func (c *CustomNetwork) Validate() error { @@ -34,5 +35,9 @@ func (c *CustomNetwork) Validate() error { return errors.New("depositContractBlockUrl is required") } + if c.GenesisSSZURL == "" { + return errors.New("genesisSSZUrl is required") + } + return nil } diff --git a/pkg/clmimicry/mimicry.go b/pkg/clmimicry/mimicry.go index b8e6406d..303e429a 100644 --- a/pkg/clmimicry/mimicry.go +++ b/pkg/clmimicry/mimicry.go @@ -99,68 +99,43 @@ func New(ctx context.Context, log logrus.FieldLogger, config *Config) (*Mimicry, return mimicry, nil } -func (m *Mimicry) deriveNetworkConfig(ctx context.Context) (*eth.GenesisConfig, *params.NetworkConfig, *params.BeaconChainConfig, error) { +func (m *Mimicry) deriveNetworkConfig(ctx context.Context) (*eth.NetworkConfig, error) { if m.Config.Ethereum.CustomNetwork == nil { - return eth.GetConfigsByNetworkName(m.Config.Ethereum.Network) + return eth.DeriveKnownNetworkConfig(ctx, m.Config.Ethereum.Network) } m.log.WithField("network", m.Config.Ethereum.Network).Info("Using a custom Ethereum network") - genesis := m.ethereum.Metadata().Genesis - - genesisConfig := ð.GenesisConfig{ - GenesisValidatorRoot: genesis.GenesisValidatorsRoot[:], - GenesisTime: genesis.GenesisTime, - } - - beaconChainConfig, err := m.FetchConfigFromURL(ctx, m.Config.Ethereum.CustomNetwork.ConfigURL) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to fetch custom Ethereum network config.yaml: %w", err) - } - - if err := params.SetActive(beaconChainConfig); err != nil { - return nil, nil, nil, fmt.Errorf("failed to set active network config: %w", err) - } - - params.OverrideBeaconConfig(beaconChainConfig) - - networkConfig := params.BeaconNetworkConfig() // TODO: Support others - - bootnodes, err := FetchBootnodeENRsFromURL(ctx, m.Config.Ethereum.CustomNetwork.BootnodeENRURL) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to fetch custom Ethereum network bootnodes.yaml: %w", err) - } - - depositContractBlock, err := FetchDepositContractBlockFromURL(ctx, m.Config.Ethereum.CustomNetwork.DepositContractBlockURL) + conf, err := eth.DeriveDevnetConfig(ctx, eth.DevnetOptions{ + ConfigURL: m.Config.Ethereum.CustomNetwork.ConfigURL, + BootnodesURL: m.Config.Ethereum.CustomNetwork.BootnodeENRURL, + DepositContractBlockURL: m.Config.Ethereum.CustomNetwork.DepositContractBlockURL, + GenesisSSZURL: m.Config.Ethereum.CustomNetwork.GenesisSSZURL, + }) if err != nil { - return nil, nil, nil, fmt.Errorf("failed to fetch custom Ethereum network deposit contract block.yaml: %w", err) + return nil, fmt.Errorf("failed to derive devnet config: %w", err) } - networkConfig.BootstrapNodes = bootnodes - networkConfig.ContractDeploymentBlock = depositContractBlock - - params.OverrideBeaconNetworkConfig(networkConfig) - - return genesisConfig, networkConfig, beaconChainConfig, nil + return conf, nil } func (m *Mimicry) startHermes(ctx context.Context) error { - genConfig, netConfig, beaConfig, err := m.deriveNetworkConfig(ctx) + networkConfig, err := m.deriveNetworkConfig(ctx) if err != nil { return fmt.Errorf("failed to derive network config for %s: %w", m.Config.Ethereum.Network, err) } - m.networkConfig = netConfig - m.beaconConfig = beaConfig + m.networkConfig = networkConfig.Network + m.beaconConfig = networkConfig.Beacon - genesisRoot := genConfig.GenesisValidatorRoot - genesisTime := genConfig.GenesisTime + genesisRoot := networkConfig.Genesis.GenesisValidatorRoot + genesisTime := networkConfig.Genesis.GenesisTime // compute fork version and fork digest currentSlot := slots.Since(genesisTime) currentEpoch := slots.ToEpoch(currentSlot) - currentForkVersion, err := eth.GetCurrentForkVersion(currentEpoch, beaConfig) + currentForkVersion, err := eth.GetCurrentForkVersion(currentEpoch, m.beaconConfig) if err != nil { return fmt.Errorf("compute fork version for epoch %d: %w", currentEpoch, err) } @@ -172,14 +147,14 @@ func (m *Mimicry) startHermes(ctx context.Context) error { // Overriding configuration so that functions like ComputForkDigest take the // correct input data from the global configuration. - params.OverrideBeaconConfig(beaConfig) - params.OverrideBeaconNetworkConfig(netConfig) + params.OverrideBeaconConfig(m.beaconConfig) + params.OverrideBeaconNetworkConfig(m.networkConfig) nodeConfig := m.Config.Node.AsHermesConfig() - nodeConfig.GenesisConfig = genConfig - nodeConfig.NetworkConfig = netConfig - nodeConfig.BeaconConfig = beaConfig + nodeConfig.GenesisConfig = networkConfig.Genesis + nodeConfig.NetworkConfig = m.networkConfig + nodeConfig.BeaconConfig = m.beaconConfig nodeConfig.ForkDigest = forkDigest nodeConfig.ForkVersion = currentForkVersion nodeConfig.PubSubSubscriptionRequestLimit = 200