diff --git a/deployments/sequencer/configs/overlays/hybrid/common/common.yaml b/deployments/sequencer/configs/overlays/hybrid/common/common.yaml index ef9a095d781..85cce07e5ee 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/common.yaml @@ -2,14 +2,6 @@ image: repository: ghcr.io/starkware-libs/sequencer/sequencer imagePullPolicy: IfNotPresent -config: - sequencerConfig: - eth_fee_token_address: '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7' - monitoring_endpoint_config.port: 8082 - strk_fee_token_address: '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d' - versioned_constants_overrides.#is_none: true - versioned_constants_overrides.max_n_events: 1000 - service: ports: - name: monitoring-endpoint diff --git a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/common.yaml b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/common.yaml index cada030a22c..883b3c7124c 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/common.yaml @@ -2,6 +2,3 @@ # If the value is private and cannot be set publicly, it should be added here and set the actual # values in the sequeuncer-devops repo. # If the value can be set publicly, it should be added for each env in this repo. -config: - sequencerConfig: - validator_id: "0x64" diff --git a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/core.yaml index 71f1d08b1ac..dc0b27e3a1a 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/core.yaml @@ -1,7 +1 @@ name: core -config: - sequencerConfig: - consensus_manager_config.network_config.advertised_multiaddr: "" - consensus_manager_config.network_config.advertised_multiaddr.#is_none: true - consensus_manager_config.network_config.bootstrap_peer_multiaddr: "" - consensus_manager_config.network_config.bootstrap_peer_multiaddr.#is_none: true diff --git a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/mempool.yaml b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/mempool.yaml index 2563db33139..030328bbd59 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/mempool.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/dummy_for_testing/services/mempool.yaml @@ -1,7 +1 @@ name: mempool -config: - sequencerConfig: - mempool_p2p_config.network_config.advertised_multiaddr: "" - mempool_p2p_config.network_config.advertised_multiaddr.#is_none: true - mempool_p2p_config.network_config.bootstrap_peer_multiaddr: "" - mempool_p2p_config.network_config.bootstrap_peer_multiaddr.#is_none: true diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/committer.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/committer.yaml index 51fc10ba55a..fa70f496a04 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/committer.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/committer.yaml @@ -1,13 +1,6 @@ name: committer config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_committer.json - sequencerConfig: - committer_config.verify_state_diff_hash: true - committer_config.storage_config.inner_storage_config.cache_size: 8589934592 - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.committer.port: 55013 - components.committer.url: sequencer-committer-service service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/core.yaml index 694d6c72e22..16e71bd942d 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/core.yaml @@ -1,49 +1,6 @@ name: core config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_core.json - sequencerConfig: - batcher_config.dynamic_config.proposer_idle_detection_delay_millis: 1500 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.n_events: 5000 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.receipt_l2_gas: 5800000000 - class_manager_config.static_config.class_manager_config.max_compiled_contract_class_object_size: 4089446 - consensus_manager_config.consensus_manager_config.dynamic_config.require_virtual_proposer_vote: false - consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.base: 9.1 - consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.max: 9.1 - consensus_manager_config.context_config.dynamic_config.build_proposal_margin_millis: 1000 - consensus_manager_config.context_config.dynamic_config.compare_retrospective_block_hash: true - consensus_manager_config.context_config.dynamic_config.override_eth_to_fri_rate: 0 - consensus_manager_config.context_config.dynamic_config.override_eth_to_fri_rate.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l1_data_gas_price_fri: 0 - consensus_manager_config.context_config.dynamic_config.override_l1_data_gas_price_fri.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l1_gas_price_fri: 0 - consensus_manager_config.context_config.dynamic_config.override_l1_gas_price_fri.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l2_gas_price_fri: 0 - consensus_manager_config.context_config.dynamic_config.override_l2_gas_price_fri.#is_none: true - consensus_manager_config.network_config.port: 53080 - consensus_manager_config.staking_manager_config.dynamic_config.override_committee: '' - consensus_manager_config.staking_manager_config.dynamic_config.override_committee.#is_none: true - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.committer.port: 55013 - components.committer.url: sequencer-committer-service - components.l1_events_provider.port: 55004 - components.l1_events_provider.url: sequencer-l1-service - components.l1_gas_price_provider.port: 55003 - components.l1_gas_price_provider.url: sequencer-l1-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - components.sierra_compiler.port: 55007 - components.sierra_compiler.url: sequencer-sierracompiler-service - components.signature_manager.port: 55008 - components.signature_manager.url: sequencer-core-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service - state_sync_config.static_config.p2p_sync_client_config.#is_none: true - state_sync_config.static_config.rpc_config.port: 8090 service: ports: - name: batcher diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/gateway.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/gateway.yaml index a1f0af46212..1f81f36d26e 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/gateway.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/gateway.yaml @@ -1,23 +1,6 @@ name: gateway config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_gateway.json - sequencerConfig: - gateway_config.static_config.authorized_declarer_accounts: '' - gateway_config.static_config.authorized_declarer_accounts.#is_none: true - gateway_config.static_config.stateful_tx_validator_config.max_allowed_nonce_gap: 200 - gateway_config.static_config.stateless_tx_validator_config.max_contract_bytecode_size: 81920 - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.gateway.port: 55002 - components.gateway.url: sequencer-gateway-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service - gateway_config.static_config.stateless_tx_validator_config.min_gas_price: 8000000000 - http_server_config.static_config.port: 8080 service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/l1.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/l1.yaml index b9ef49a8b61..e0ddcc597a7 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/l1.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/l1.yaml @@ -1,15 +1,6 @@ name: l1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_l1.json - sequencerConfig: - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.l1_events_provider.port: 55004 - components.l1_events_provider.url: sequencer-l1-service - components.l1_gas_price_provider.port: 55003 - components.l1_gas_price_provider.url: sequencer-l1-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/mempool.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/mempool.yaml index fea8c590104..d7b30a73083 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/mempool.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/mempool.yaml @@ -1,17 +1,6 @@ name: mempool config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_mempool.json - sequencerConfig: - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.gateway.port: 55002 - components.gateway.url: sequencer-gateway-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - mempool_config.dynamic_config.transaction_ttl: 300 - mempool_p2p_config.network_config.port: 53200 service: ports: - name: mempool diff --git a/deployments/sequencer/configs/overlays/hybrid/common/services/sierra-compiler.yaml b/deployments/sequencer/configs/overlays/hybrid/common/services/sierra-compiler.yaml index 888bda840fa..30983bd9c5c 100644 --- a/deployments/sequencer/configs/overlays/hybrid/common/services/sierra-compiler.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/common/services/sierra-compiler.yaml @@ -1,10 +1,6 @@ name: sierracompiler config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_sierra_compiler.json - sequencerConfig: - components.sierra_compiler.port: 55007 - components.sierra_compiler.url: sequencer-sierracompiler-service - sierra_compiler_config.max_bytecode_size: 81920 service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/common.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/common.yaml index 5a9f0e3bfd6..7b1ee0b7c6a 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/common.yaml @@ -2,10 +2,3 @@ include: configs/overlays/hybrid/common/common.yaml image: tag: APOLLO-0.14.2-RC.6 - -config: - sequencerConfig: - chain_id: SN_MAIN - native_classes_whitelist: '["0x054c5afe61ed27be53b1e4dec5707209a9fcabdb14712fb800fbc60439090115"]' - recorder_url: http://starknet-mainnet.cende-recorder-proxy.starknet.io/ - starknet_url: https://feeder.alpha-mainnet.starknet.io/ diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/committer.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/committer.yaml index 89dc0b85b63..1c5f0cd7d09 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/committer.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/committer.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/committer.yaml - -config: - sequencerConfig: - committer_config.storage_config.cache_size: 50000000 diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/core.yaml index 8c4afe7f9a3..80b204bc244 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/core.yaml @@ -1,17 +1 @@ include: configs/overlays/hybrid/common/services/core.yaml - -config: - sequencerConfig: - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size: 5000 - batcher_config.static_config.block_builder_config.execute_config.n_workers: 12 - batcher_config.dynamic_config.n_concurrent_txs: 100 - batcher_config.static_config.first_block_with_partial_block_hash.#is_none: false - batcher_config.static_config.first_block_with_partial_block_hash.block_hash: '0x12889b177c93baa28b5ee3afc80cb6f4836adac086af4bef25ae1ac762e8a62' - batcher_config.static_config.first_block_with_partial_block_hash.block_number: 671813 - batcher_config.static_config.first_block_with_partial_block_hash.parent_block_hash: '0x1e68b0d22b14688dc97afa3006a53cf4e62ebcb02102e80f55e8b48f9a28b97' - consensus_manager_config.context_config.dynamic_config.min_l2_gas_price_per_height: '8269292:27400000000,8742344:30100000000' - consensus_manager_config.staking_manager_config.dynamic_config.default_committee: 0,10:0x64,1,0x1,true;0x65,1,0x1,true;0x66,1,0x1,true;0x67,1,0x1,true;0x68,1,0x1,true - state_sync_config.static_config.central_sync_client_config.#is_none: false - state_sync_config.static_config.central_sync_client_config.sync_config.store_sierras_and_casms_block_threshold: 103129 - state_sync_config.static_config.network_config.#is_none: false - state_sync_config.static_config.network_config.port: 55010 diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/gateway.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/gateway.yaml index e9d1d4e65ef..a57eaaacd5b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/gateway.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/gateway.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/gateway.yaml - -config: - sequencerConfig: - gateway_config.static_config.proof_archive_writer_config.bucket_name: starkware-starknet-mainnet diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/l1.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/l1.yaml index 88aee859e0f..622573c6a0b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/l1.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/l1.yaml @@ -1,8 +1 @@ include: configs/overlays/hybrid/common/services/l1.yaml - -config: - sequencerConfig: - base_layer_config.bpo1_start_block_number: 23973546 - base_layer_config.bpo2_start_block_number: 24168146 - base_layer_config.fusaka_no_bpo_start_block_number: 23934586 - base_layer_config.starknet_contract_address: '0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4' diff --git a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/sierra-compiler.yaml b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/sierra-compiler.yaml index f8594a62a64..ee3133d6733 100644 --- a/deployments/sequencer/configs/overlays/hybrid/mainnet/services/sierra-compiler.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/mainnet/services/sierra-compiler.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/sierra-compiler.yaml - -config: - sequencerConfig: - sierra_compiler_config.audited_libfuncs_only: true diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/common.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/common.yaml index 08e9fbd4739..2c9664e0f2b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/common.yaml @@ -2,10 +2,3 @@ include: configs/overlays/hybrid/common/common.yaml image: tag: APOLLO-0.14.2-RC.5 - -config: - sequencerConfig: - chain_id: SN_SEPOLIA - native_classes_whitelist: All - recorder_url: http://starknet-sepolia-alpha.cende-recorder-proxy.starknet.io/ - starknet_url: https://feeder.alpha-sepolia.starknet.io/ diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/committer.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/committer.yaml index 026a3c8dd55..1c5f0cd7d09 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/committer.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/committer.yaml @@ -1,6 +1 @@ include: configs/overlays/hybrid/common/services/committer.yaml - -config: - sequencerConfig: - committer_config.storage_config.cache_size: 10000000 - committer_config.storage_config.inner_storage_config.cache_size: 1073741824 diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/core.yaml index fd3e9f2ce1a..80b204bc244 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/core.yaml @@ -1,17 +1 @@ include: configs/overlays/hybrid/common/services/core.yaml - -config: - sequencerConfig: - batcher_config.dynamic_config.n_concurrent_txs: 8 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size: 5000 - batcher_config.static_config.block_builder_config.execute_config.n_workers: 5 - batcher_config.static_config.first_block_with_partial_block_hash.#is_none: false - batcher_config.static_config.first_block_with_partial_block_hash.block_hash: '0x578b4e2f34e4da24e7482de643b4e3435fa7e34770cdb8d71002bb19e415ffa' - batcher_config.static_config.first_block_with_partial_block_hash.block_number: 86311 - batcher_config.static_config.first_block_with_partial_block_hash.parent_block_hash: '0x5c980ea7747167d2ae98fa7ef7d62f52243e924c453b4934045443d977458d3' - consensus_manager_config.context_config.dynamic_config.min_l2_gas_price_per_height: '' - consensus_manager_config.staking_manager_config.dynamic_config.default_committee: 0,10:0x64,1,0x1,true;0x65,1,0x1,true;0x66,1,0x1,true;0x67,1,0x1,true;0x68,1,0x1,true - state_sync_config.static_config.central_sync_client_config.#is_none: false - state_sync_config.static_config.central_sync_client_config.sync_config.store_sierras_and_casms_block_threshold: 0 - state_sync_config.static_config.network_config.#is_none: true - state_sync_config.static_config.network_config.port: 55010 diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/gateway.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/gateway.yaml index 591e51079ef..a57eaaacd5b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/gateway.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/gateway.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/gateway.yaml - -config: - sequencerConfig: - gateway_config.static_config.proof_archive_writer_config.bucket_name: starkware-starknet-alpha diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/l1.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/l1.yaml index f02a0f7a6bc..622573c6a0b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/l1.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/l1.yaml @@ -1,8 +1 @@ include: configs/overlays/hybrid/common/services/l1.yaml - -config: - sequencerConfig: - base_layer_config.bpo1_start_block_number: 9456501 - base_layer_config.bpo2_start_block_number: 9504747 - base_layer_config.fusaka_no_bpo_start_block_number: 9408577 - base_layer_config.starknet_contract_address: '0xE2Bb56ee936fd6433DC0F6e7e3b8365C906AA057' diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/sierra-compiler.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/sierra-compiler.yaml index f8594a62a64..ee3133d6733 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/sierra-compiler.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-alpha/services/sierra-compiler.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/sierra-compiler.yaml - -config: - sequencerConfig: - sierra_compiler_config.audited_libfuncs_only: true diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/common.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/common.yaml index 766dfa09fb9..3fb9ec4510d 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/common.yaml @@ -2,10 +2,3 @@ include: configs/overlays/hybrid/common/common.yaml image: tag: APOLLO-0.14.2-RC.7 - -config: - sequencerConfig: - chain_id: SN_INTEGRATION_SEPOLIA - native_classes_whitelist: All - recorder_url: http://starknet-sepolia-integration.cende-recorder-proxy.starknet.io/ - starknet_url: https://feeder.integration-sepolia.starknet.io/ diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/committer.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/committer.yaml index a63aedfd67c..1c5f0cd7d09 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/committer.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/committer.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/committer.yaml - -config: - sequencerConfig: - committer_config.storage_config.cache_size: 10000000 diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/core.yaml index 82b0d55ac0b..80b204bc244 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/core.yaml @@ -1,17 +1 @@ include: configs/overlays/hybrid/common/services/core.yaml - -config: - sequencerConfig: - batcher_config.dynamic_config.n_concurrent_txs: 2 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size: 4000 - batcher_config.static_config.block_builder_config.execute_config.n_workers: 1 - batcher_config.static_config.first_block_with_partial_block_hash.#is_none: false - batcher_config.static_config.first_block_with_partial_block_hash.block_hash: '0x1ea2a9cfa3df5297d58c0a04d09d276bc68d40fe64701305bbe2ed8f417e869' - batcher_config.static_config.first_block_with_partial_block_hash.block_number: 35748 - batcher_config.static_config.first_block_with_partial_block_hash.parent_block_hash: '0x77140bef51bbb4d1932f17cc5081825ff18465a1df4440ca0429a4fa80f1dc5' - consensus_manager_config.context_config.dynamic_config.min_l2_gas_price_per_height: '' - consensus_manager_config.staking_manager_config.dynamic_config.default_committee: 0,10:0x64,1,0x1,true;0x65,1,0x1,true;0x66,1,0x1,true - state_sync_config.static_config.central_sync_client_config.#is_none: false - state_sync_config.static_config.central_sync_client_config.sync_config.store_sierras_and_casms_block_threshold: 0 - state_sync_config.static_config.network_config.#is_none: true - state_sync_config.static_config.network_config.port: 55010 diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/gateway.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/gateway.yaml index f3211b62c29..a57eaaacd5b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/gateway.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/gateway.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/gateway.yaml - -config: - sequencerConfig: - gateway_config.static_config.proof_archive_writer_config.bucket_name: starkware-starknet-integration diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/l1.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/l1.yaml index add18c59d72..622573c6a0b 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/l1.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/l1.yaml @@ -1,8 +1 @@ include: configs/overlays/hybrid/common/services/l1.yaml - -config: - sequencerConfig: - base_layer_config.bpo1_start_block_number: 9456501 - base_layer_config.bpo2_start_block_number: 9504747 - base_layer_config.fusaka_no_bpo_start_block_number: 9408577 - base_layer_config.starknet_contract_address: '0x4737c0c1B4D5b1A687B42610DdabEE781152359c' diff --git a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/sierra-compiler.yaml b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/sierra-compiler.yaml index d17c4e49f0d..ee3133d6733 100644 --- a/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/sierra-compiler.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/sepolia-integration/services/sierra-compiler.yaml @@ -1,5 +1 @@ include: configs/overlays/hybrid/common/services/sierra-compiler.yaml - -config: - sequencerConfig: - sierra_compiler_config.audited_libfuncs_only: false diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/all-constructs/common.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/all-constructs/common.yaml index 0da6386a503..6aa5516f56a 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/all-constructs/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/all-constructs/common.yaml @@ -15,8 +15,6 @@ image: config: configList: deployments/sequencer/test/app_configs/sequencer/replacer_deployment_common.json - sequencerConfig: - components.fake_field: "overridden in common.yaml" service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/common.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/common.yaml index bd11cc6ff7d..9d94c0264ed 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/common.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/common.yaml @@ -9,19 +9,6 @@ image: digest: '' imagePullPolicy: IfNotPresent -config: - sequencerConfig: - chain_id: "CHAIN_ID_SUBDIR" - eth_fee_token_address: "0x1001" - monitoring_endpoint_config.port: 8082 - native_classes_whitelist: "All" - recorder_url: "http://dummy-recorder-service.dummy-recorder.svc.cluster.local:8080" - starknet_url: "https://integration-sepolia.starknet.io/" - strk_fee_token_address: "0x1002" - validator_id: "0x64" - versioned_constants_overrides.#is_none: true - versioned_constants_overrides.max_n_events: 1000 - service: ports: - name: monitoring-endpoint diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/committer.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/committer.yaml index 03f3f903e8d..437c48cc979 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/committer.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/committer.yaml @@ -7,14 +7,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_committer.json - sequencerConfig: - committer_config.verify_state_diff_hash: true - committer_config.storage_config.cache_size: 1000000 - committer_config.storage_config.inner_storage_config.cache_size: 8589934592 - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.committer.port: 55013 - components.committer.url: sequencer-committer-service service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/core.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/core.yaml index d95e8b3f6a8..8c6baa664b8 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/core.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/core.yaml @@ -8,66 +8,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_core.json - sequencerConfig: - batcher_config.dynamic_config.n_concurrent_txs: 100 - batcher_config.dynamic_config.proposer_idle_detection_delay_millis: 2000 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.n_events: 5000 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.receipt_l2_gas: 5800000000 - batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size: 4000 - batcher_config.static_config.block_builder_config.execute_config.n_workers: 28 - batcher_config.static_config.first_block_with_partial_block_hash.#is_none: true - batcher_config.static_config.first_block_with_partial_block_hash.block_number: 0 - batcher_config.static_config.first_block_with_partial_block_hash.block_hash: "0x0" - batcher_config.static_config.first_block_with_partial_block_hash.parent_block_hash: "0x0" - class_manager_config.static_config.class_manager_config.max_compiled_contract_class_object_size: 4089446 - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.committer.port: 55013 - components.committer.url: sequencer-committer-service - components.l1_gas_price_provider.port: 55003 - components.l1_gas_price_provider.url: sequencer-l1-service - components.l1_events_provider.port: 55004 - components.l1_events_provider.url: sequencer-l1-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.sierra_compiler.port: 55007 - components.sierra_compiler.url: sequencer-sierracompiler-service - components.signature_manager.port: 55008 - components.signature_manager.url: sequencer-core-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service - consensus_manager_config.consensus_manager_config.dynamic_config.require_virtual_proposer_vote: false - consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.base: 9.1 - consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.max: 15.0 - consensus_manager_config.context_config.dynamic_config.min_l2_gas_price_per_height: "" - consensus_manager_config.context_config.dynamic_config.build_proposal_margin_millis: 1000 - consensus_manager_config.context_config.dynamic_config.compare_retrospective_block_hash: false - consensus_manager_config.context_config.dynamic_config.override_eth_to_fri_rate.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_eth_to_fri_rate: 0 - consensus_manager_config.context_config.dynamic_config.override_l1_data_gas_price_fri.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l1_data_gas_price_fri: 0 - consensus_manager_config.context_config.dynamic_config.override_l1_gas_price_fri.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l1_gas_price_fri: 0 - consensus_manager_config.context_config.dynamic_config.override_l2_gas_price_fri.#is_none: true - consensus_manager_config.context_config.dynamic_config.override_l2_gas_price_fri: 0 - consensus_manager_config.network_config.advertised_multiaddr.#is_none: true - consensus_manager_config.network_config.advertised_multiaddr: "" - consensus_manager_config.network_config.bootstrap_peer_multiaddr.#is_none: true - consensus_manager_config.network_config.bootstrap_peer_multiaddr: "" - consensus_manager_config.network_config.port: 53080 - consensus_manager_config.staking_manager_config.dynamic_config.default_committee: "0,100:0x64,1,0x1,true" - consensus_manager_config.staking_manager_config.dynamic_config.override_committee.#is_none: true - consensus_manager_config.staking_manager_config.dynamic_config.override_committee: "" - state_sync_config.static_config.central_sync_client_config.#is_none: true - state_sync_config.static_config.central_sync_client_config.sync_config.store_sierras_and_casms_block_threshold: 0 - state_sync_config.static_config.network_config.#is_none: false - state_sync_config.static_config.network_config.port: 55010 - state_sync_config.static_config.p2p_sync_client_config.#is_none: false - state_sync_config.static_config.rpc_config.port: 8090 service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/gateway.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/gateway.yaml index 9250f533e70..d26447cf844 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/gateway.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/gateway.yaml @@ -7,24 +7,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_gateway.json - sequencerConfig: - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.gateway.port: 55002 - components.gateway.url: sequencer-gateway-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service - gateway_config.static_config.authorized_declarer_accounts: "" - gateway_config.static_config.authorized_declarer_accounts.#is_none: true - gateway_config.static_config.proof_archive_writer_config.bucket_name: "" - gateway_config.static_config.stateful_tx_validator_config.max_allowed_nonce_gap: 200 - gateway_config.static_config.stateless_tx_validator_config.max_contract_bytecode_size: 81920 - gateway_config.static_config.stateless_tx_validator_config.min_gas_price: 3000000000 - http_server_config.static_config.port: 8080 service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/l1.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/l1.yaml index a5d11b9bc0c..995c3a0cd18 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/l1.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/l1.yaml @@ -7,19 +7,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_l1.json - sequencerConfig: - base_layer_config.bpo1_start_block_number: 13205504 - base_layer_config.bpo2_start_block_number: 13410304 - base_layer_config.fusaka_no_bpo_start_block_number: 13164544 - base_layer_config.starknet_contract_address: "0x5FbDB2315678afecb367f032d93F642f64180aa3" - components.batcher.port: 55000 - components.batcher.url: sequencer-core-service - components.l1_gas_price_provider.port: 55003 - components.l1_gas_price_provider.url: sequencer-l1-service - components.l1_events_provider.port: 55004 - components.l1_events_provider.url: sequencer-l1-service - components.state_sync.port: 55009 - components.state_sync.url: sequencer-core-service service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/mempool.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/mempool.yaml index 6936c20ee31..8a3ead2b180 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/mempool.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/mempool.yaml @@ -7,21 +7,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_mempool.json - sequencerConfig: - components.class_manager.port: 55001 - components.class_manager.url: sequencer-core-service - components.gateway.port: 55002 - components.gateway.url: sequencer-gateway-service - components.mempool.port: 55006 - components.mempool.url: sequencer-mempool-service - components.proof_manager.port: 55012 - components.proof_manager.url: sequencer-core-service - mempool_config.dynamic_config.transaction_ttl: 300 - mempool_p2p_config.network_config.advertised_multiaddr.#is_none: true - mempool_p2p_config.network_config.advertised_multiaddr: "" - mempool_p2p_config.network_config.bootstrap_peer_multiaddr.#is_none: true - mempool_p2p_config.network_config.bootstrap_peer_multiaddr: "" - mempool_p2p_config.network_config.port: 53200 service: enabled: true diff --git a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/sierra-compiler.yaml b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/sierra-compiler.yaml index c0aeb33ac4d..97fa8152009 100644 --- a/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/sierra-compiler.yaml +++ b/deployments/sequencer/configs/overlays/hybrid/testing/node-0/services/sierra-compiler.yaml @@ -7,11 +7,6 @@ replicas: 1 config: configList: crates/apollo_deployments/resources/services/hybrid/replacer_deployment_sierra_compiler.json - sequencerConfig: - components.sierra_compiler.port: 55007 - components.sierra_compiler.url: sequencer-sierracompiler-service - sierra_compiler_config.audited_libfuncs_only: false - sierra_compiler_config.max_bytecode_size: 81920 service: enabled: true diff --git a/deployments/sequencer/src/config/native.py b/deployments/sequencer/src/config/native.py index 273f11f2623..85085aba6c0 100644 --- a/deployments/sequencer/src/config/native.py +++ b/deployments/sequencer/src/config/native.py @@ -32,3 +32,15 @@ def build_native_config(service_name: str, node_file: Path) -> Dict[str, Any]: f"'{service_name}'). Available services: {sorted(built.keys())}" ) return built[build_key] + + +def flatten_dotted(nested: dict, prefix: str = "") -> Dict[str, Any]: + """Flatten a nested config to dotted keys. Lists and null are leaf values (not recursed).""" + flat: Dict[str, Any] = {} + for key, value in nested.items(): + dotted = f"{prefix}{key}" + if isinstance(value, dict): + flat.update(flatten_dotted(value, prefix=f"{dotted}.")) + else: + flat[dotted] = value + return flat diff --git a/deployments/sequencer/test/test_env_overlay_parity.py b/deployments/sequencer/test/test_env_overlay_parity.py deleted file mode 100644 index 6bf1f0f8667..00000000000 --- a/deployments/sequencer/test/test_env_overlay_parity.py +++ /dev/null @@ -1,190 +0,0 @@ -"""Parity test: each overlay's bucketed native config matches its YAML `config.sequencerConfig`. - -Asserts every key set by the layer's bucketed jsonnet (chain_params, flattened) exists in -the layer's folded YAML sequencerConfig with an equal value. Covers the sepolia/mainnet env overlays -and the `testing/*` overlays (node-0, all-constructs). - -Skips when the YAML `config.sequencerConfig` is absent (either removed downstack at -`drop-yaml-sequencer-config`, or a structure-only stub like `all-constructs` whose sole entry is a -folded-away `components.*` marker), so the test self-disables instead of failing on a missing source. -""" - -import json -from pathlib import Path - -import _jsonnet -import pytest -import yaml -from src.config.native import JSONNET_DIR - -DEPLOYMENTS_SEQUENCER = Path(__file__).resolve().parents[1] -HYBRID_OVERLAYS_DIR = DEPLOYMENTS_SEQUENCER / "configs" / "overlays" / "hybrid" - -_FLAT_TO_CONFIG_PATH = { - "starknet_contract_address": "base_layer_config.starknet_contract_address", - "base_layer": "base_layer_config", - "staking_default_committee": "consensus_manager_config.staking_manager_config.dynamic_config.default_committee", - "proof_archive_bucket_name": "gateway_config.static_config.proof_archive_writer_config.bucket_name", - "consensus_advertised_multiaddr": "consensus_manager_config.network_config.advertised_multiaddr", - "consensus_bootstrap_peer_multiaddr": "consensus_manager_config.network_config.bootstrap_peer_multiaddr", - "mempool_advertised_multiaddr": "mempool_p2p_config.network_config.advertised_multiaddr", - "mempool_bootstrap_peer_multiaddr": "mempool_p2p_config.network_config.bootstrap_peer_multiaddr", - "n_concurrent_txs": "batcher_config.dynamic_config.n_concurrent_txs", - "proposer_idle_detection_delay_millis": "batcher_config.dynamic_config.proposer_idle_detection_delay_millis", - "max_events_in_block": "batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.n_events", - "max_receipt_l2_gas_in_block": "batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.receipt_l2_gas", - "max_state_diff_in_block": "batcher_config.static_config.block_builder_config.bouncer_config.block_max_capacity.state_diff_size", - "n_execution_workers": "batcher_config.static_config.block_builder_config.execute_config.n_workers", - "first_block_with_partial_block_hash": "batcher_config.static_config.first_block_with_partial_block_hash", - "committer_cache_size": "committer_config.storage_config.cache_size", - "committer_inner_storage_cache_size": "committer_config.storage_config.inner_storage_config.cache_size", - "proposal_timeout_base": "consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.base", - "proposal_timeout_max": "consensus_manager_config.consensus_manager_config.dynamic_config.timeouts.proposal.max", - "min_l2_gas_price_per_height": "consensus_manager_config.context_config.dynamic_config.min_l2_gas_price_per_height", - "override_eth_to_fri_rate": "consensus_manager_config.context_config.dynamic_config.override_eth_to_fri_rate", - "override_l1_data_gas_price_fri": "consensus_manager_config.context_config.dynamic_config.override_l1_data_gas_price_fri", - "override_l1_gas_price_fri": "consensus_manager_config.context_config.dynamic_config.override_l1_gas_price_fri", - "override_l2_gas_price_fri": "consensus_manager_config.context_config.dynamic_config.override_l2_gas_price_fri", - "authorized_declarer_accounts": "gateway_config.static_config.authorized_declarer_accounts", - "max_allowed_nonce_gap": "gateway_config.static_config.stateful_tx_validator_config.max_allowed_nonce_gap", - "max_contract_bytecode_size": "gateway_config.static_config.stateless_tx_validator_config.max_contract_bytecode_size", - "min_gas_price": "gateway_config.static_config.stateless_tx_validator_config.min_gas_price", - "transaction_ttl": "mempool_config.dynamic_config.transaction_ttl", - "audited_libfuncs_only": "sierra_compiler_config.audited_libfuncs_only", - "max_bytecode_size": "sierra_compiler_config.max_bytecode_size", - "central_sync_client_config": "state_sync_config.static_config.central_sync_client_config", - "state_sync_network_config": "state_sync_config.static_config.network_config", - "p2p_sync_client_config": "state_sync_config.static_config.p2p_sync_client_config", -} - - -def _flatten(nested: dict, prefix: str = "") -> dict: - """Flatten a nested config to dotted keys. Lists and null are leaf values (not recursed).""" - flat: dict = {} - for key, value in nested.items(): - dotted = f"{prefix}{key}" - if isinstance(value, dict): - flat.update(_flatten(value, prefix=f"{dotted}.")) - else: - flat[dotted] = value - return flat - - -def _is_under(prefix: str, dotted_key: str) -> bool: - """True if `dotted_key` equals `prefix` or is nested under it (segment-aligned).""" - return dotted_key == prefix or dotted_key.startswith(prefix + ".") - - -def _combined_layer_sequencer_config(layer_dir: Path) -> dict: - """Merge the flat-dotted `config.sequencerConfig` across one overlay layer's own YAMLs. - - `/common.yaml` first, then each `/services/*.yaml` (sorted, last wins). Does NOT - expand `include:` — only the layer's own files. Still carries `.#is_none` markers and - `components.*` (fold them with `_fold_is_none_drop_components`). - """ - merged: dict = {} - files = [] - common_yaml = layer_dir / "common.yaml" - if common_yaml.exists(): - files.append(common_yaml) - services_dir = layer_dir / "services" - if services_dir.is_dir(): - files.extend(sorted(services_dir.glob("*.yaml"))) - for yaml_file in files: - document = yaml.safe_load(yaml_file.read_text()) or {} - merged.update((document.get("config") or {}).get("sequencerConfig") or {}) - return merged - - -def _fold_is_none_drop_components(flat: dict) -> dict: - """Apply the transform the jsonnet layers encode: `#is_none:true` -> null (drop the subtree), - drop `#is_none:false` markers (keep the real leaves), drop `components.*`.""" - none_true_roots = [ - key[: -len(".#is_none")] - for key, value in flat.items() - if key.endswith(".#is_none") and value is True - ] - folded: dict = {} - for key, value in flat.items(): - if key.split(".", 1)[0] == "components": - continue - if key.endswith(".#is_none"): - continue - if any(_is_under(root, key) for root in none_true_roots): - continue - folded[key] = value - for root in none_true_roots: - if root.split(".", 1)[0] != "components": - folded[root] = None - return folded - - -def _layer_bucketed_override_flat(layer_dir: Path) -> dict: - """The layer's `chain_params` override as flat config-override dotted keys, expanded to the full - config paths (via `_FLAT_TO_CONFIG_PATH`) that the YAML `config.sequencerConfig` uses. - - node_params (validator_id / P2P multiaddrs) are supplied by the devops layers and absent from the - env YAML, so they are out of scope and excluded. - """ - path = layer_dir / "chain_params.jsonnet" - if not path.is_file(): - return {} - raw = json.loads(_jsonnet.evaluate_file(str(path), jpathdir=[str(JSONNET_DIR)])) - mandatory = { - key: value - for key, value in raw.pop("mandatory", {}).items() - if key not in ("topology", "nodes_at_same_cluster") - } - flat = _flatten({**mandatory, **raw}) - # Expand each flat name to its config path, preserving any sub-path for object-valued entries - # (e.g. `first_block_with_partial_block_hash.block_hash`); unmapped names pass through unchanged. - expanded: dict = {} - for key, value in flat.items(): - head, _, rest = key.partition(".") - full = _FLAT_TO_CONFIG_PATH.get(head, head) - expanded[f"{full}.{rest}" if rest else full] = value - return expanded - - -def assert_env_overlay_matches_yaml(layer_dir: Path) -> None: - """Assert every key the env layer's bucketed native config sets matches its YAML sequencerConfig. - - Skips if the YAML sequencerConfig is gone (removed downstack at `drop-yaml-sequencer-config`). - """ - yaml_flat = _fold_is_none_drop_components(_combined_layer_sequencer_config(layer_dir)) - if not yaml_flat: - pytest.skip(f"{layer_dir.name}: no YAML config.sequencerConfig (removed downstack)") - - jsonnet_flat = _layer_bucketed_override_flat(layer_dir) - - mismatches = [] - for key, value in sorted(jsonnet_flat.items()): - if key not in yaml_flat: - mismatches.append(f"{key}: present in jsonnet, missing from YAML") - elif yaml_flat[key] != value: - mismatches.append(f"{key}: jsonnet={value!r} != yaml={yaml_flat[key]!r}") - - assert not mismatches, ( - f"{layer_dir.name} native override diverges from its YAML config.sequencerConfig:\n " - + "\n ".join(mismatches) - ) - - -def test_sepolia_integration_native_matches_yaml(): - assert_env_overlay_matches_yaml(HYBRID_OVERLAYS_DIR / "sepolia-integration") - - -def test_sepolia_alpha_native_matches_yaml(): - assert_env_overlay_matches_yaml(HYBRID_OVERLAYS_DIR / "sepolia-alpha") - - -def test_mainnet_native_matches_yaml(): - assert_env_overlay_matches_yaml(HYBRID_OVERLAYS_DIR / "mainnet") - - -def test_node_0_native_matches_yaml(): - assert_env_overlay_matches_yaml(HYBRID_OVERLAYS_DIR / "testing" / "node-0") - - -def test_all_constructs_native_matches_yaml(): - assert_env_overlay_matches_yaml(HYBRID_OVERLAYS_DIR / "testing" / "all-constructs") diff --git a/deployments/sequencer/test/test_port_uniqueness.py b/deployments/sequencer/test/test_port_uniqueness.py index 076d2cc8d91..64788c5c5c8 100644 --- a/deployments/sequencer/test/test_port_uniqueness.py +++ b/deployments/sequencer/test/test_port_uniqueness.py @@ -3,6 +3,7 @@ import pytest import yaml from src.config.loaders import DeploymentConfigLoader +from src.config.native import build_native_config, flatten_dotted DEPLOYMENTS_SEQUENCER = Path(__file__).resolve().parents[1] HYBRID_COMMON_SERVICES = DEPLOYMENTS_SEQUENCER / "configs/overlays/hybrid/common/services" @@ -15,6 +16,11 @@ pytest.param(HYBRID_TESTING_NODE0_SERVICES, id="testing-node-0"), ] +LAYOUT = "hybrid" +# The functional `node-0` overlay is fully public (no devops checkout needed) and carries complete +# per-service port data, so it is the source for the native-config port checks. +NODE0_OVERLAYS = ["hybrid.testing.node-0"] + def _load_service_yamls(services_dir: Path) -> dict[str, dict]: """Raw per-service overlay YAMLs, WITHOUT expanding `include:`. @@ -55,43 +61,77 @@ def _k8s_service_ports(config: dict) -> list[int]: ] -def _sequencer_config(config: dict) -> dict: - return config.get("config", {}).get("sequencerConfig", {}) +def _service_names(services_dir: Path) -> list[str]: + """The `name:` field of each service overlay YAML in `services_dir`, sorted by file.""" + names = [] + for path in sorted(services_dir.glob("*.yaml")): + document = yaml.safe_load(path.read_text()) or {} + name = document.get("name") + if name: + names.append(name) + return names + +def _nonzero_port_leaves(flat: dict) -> list[tuple[str, int]]: + """(key, port) for every '*.port' leaf with a non-zero int value. -def _all_sequencer_ports(config: dict) -> list[tuple[str, int]]: - """Return (key, port) for all sequencerConfig keys ending in '.port' with integer values.""" - result = [] - for key, value in _sequencer_config(config).items(): - if key.endswith(".port") and isinstance(value, int): - result.append((key, value)) - return result + A `port: 0` leaf marks a component the service does not serve (disabled), so the many zeros are + not real bindings and must not be treated as colliding. + """ + return [ + (key, value) + for key, value in flat.items() + if key.endswith(".port") + and isinstance(value, int) + and not isinstance(value, bool) + and value + ] -def _component_ports(config: dict) -> dict[str, int]: +def _component_ports(flat: dict) -> dict[str, int]: + """component -> port for every non-zero `components..port` leaf in a flattened built config.""" result = {} - for key, value in _sequencer_config(config).items(): + for key, value in flat.items(): parts = key.split(".") if ( len(parts) == 3 and parts[0] == "components" and parts[2] == "port" and isinstance(value, int) + and not isinstance(value, bool) + and value ): result[parts[1]] = value return result -def _assert_sequencer_ports_unique_within_service(service_name: str, config: dict) -> None: - """Assert no two sequencerConfig '.port' keys in a single service share a port number.""" +def _assert_ports_unique_within_service(service_name: str, flat: dict) -> None: + """Assert no two non-zero '*.port' leaves in a single built service config share a port.""" seen: dict[int, str] = {} - for key, port in _all_sequencer_ports(config): + for key, port in _nonzero_port_leaves(flat): assert ( port not in seen ), f"Service '{service_name}': port {port} assigned to both '{key}' and '{seen[port]}'" seen[port] = key +@pytest.fixture(scope="module") +def node0_flat_configs() -> dict[str, dict]: + """The built native config for each `node-0` service, flattened to dotted keys. + + This is the deployed source of truth for ports (jsonnet `build()`), replacing the former YAML + `sequencerConfig` reads. Public overlay only — no devops checkout needed. + """ + node_file = ( + DEPLOYMENTS_SEQUENCER.joinpath("configs", "overlays", *NODE0_OVERLAYS[-1].split(".")) + / "node.jsonnet" + ) + return { + name: flatten_dotted(build_native_config(service_name=name, node_file=node_file)) + for name in _service_names(HYBRID_TESTING_NODE0_SERVICES) + } + + @pytest.mark.parametrize("services_dir", SERVICES_DIRS) def test_k8s_service_ports_unique(services_dir: Path) -> None: seen: dict[int, str] = {} @@ -103,19 +143,6 @@ def test_k8s_service_ports_unique(services_dir: Path) -> None: seen[port] = service_name -@pytest.mark.parametrize("services_dir", SERVICES_DIRS) -def test_sequencer_ports_unique_within_service(services_dir: Path) -> None: - """Within each service, all sequencerConfig port values are unique. - - Catches collisions between any two port-keyed entries in the same service, - e.g. a component port and a subsystem port accidentally sharing the same number. - Runs on the merged config (includes expanded) so a service-local port colliding - with a common-provided port (e.g. the monitoring port) is caught. - """ - for service_name, config in _load_merged_service_yamls(services_dir).items(): - _assert_sequencer_ports_unique_within_service(service_name, config) - - @pytest.mark.parametrize("services_dir", SERVICES_DIRS) def test_k8s_service_ports_unique_within_service(services_dir: Path) -> None: """Within each service, its k8s `service.ports` are unique on the merged config. @@ -132,13 +159,25 @@ def test_k8s_service_ports_unique_within_service(services_dir: Path) -> None: seen[port] = service_name -@pytest.mark.parametrize("services_dir", SERVICES_DIRS) -def test_component_ports_unique(services_dir: Path) -> None: +def test_sequencer_ports_unique_within_service(node0_flat_configs: dict[str, dict]) -> None: + """Within each built service config, all non-zero `*.port` values are unique. + + Catches collisions between any two port-keyed entries in the same service (a component port and + a subsystem/storage-reader port accidentally sharing a number). Read from the jsonnet `build()` + output — the deployed source of truth — so it covers both the component ports + (`templates.componentPorts`) and the subsystem ports the override layers supply. + """ + for service_name, flat in node0_flat_configs.items(): + _assert_ports_unique_within_service(service_name, flat) + + +def test_component_ports_unique(node0_flat_configs: dict[str, dict]) -> None: + """Across services, each reactive component maps to one consistent, distinct infra port.""" component_to_port: dict[str, int] = {} port_to_component: dict[int, str] = {} - for config in _load_service_yamls(services_dir).values(): - for component, port in _component_ports(config).items(): + for flat in node0_flat_configs.values(): + for component, port in _component_ports(flat).items(): if component in component_to_port: assert component_to_port[component] == port, ( f"Component '{component}' has inconsistent ports: " @@ -152,37 +191,24 @@ def test_component_ports_unique(services_dir: Path) -> None: port_to_component[port] = component -def test_within_service_collision_from_include_is_detected(tmp_path: Path) -> None: - """The within-service check must reject a port that collides with an included common port. +def test_within_service_port_collision_is_detected() -> None: + """The within-service check ignores disabled components (port 0) but rejects a real collision. - The collision is only visible once `include:` is expanded (the monitoring port lives in - common.yaml), so this guards the merge-aware loader: raw loading would never see it. Fails - if `_load_merged_service_yamls` ever stops expanding `include:`. + Guards the zero-filter (the load-bearing new behavior): a built config emits every component the + service does not serve as `port: 0`, so those must not be flagged; two non-zero ports sharing a + value must. """ - collision_port = 8082 - service_key = "components.batcher.port" - common_key = "monitoring_endpoint_config.port" - - common = tmp_path / "common.yaml" - common.write_text(yaml.dump({"config": {"sequencerConfig": {common_key: collision_port}}})) - service = tmp_path / "core.yaml" - service.write_text( - yaml.dump( - { - "include": [str(common)], - "name": "core", - "config": {"sequencerConfig": {service_key: collision_port}}, - } - ) - ) - - # Raw loading does not expand the include, so the collision is invisible — the gap. - raw_core = _load_service_yamls(tmp_path)["core"] - assert _all_sequencer_ports(raw_core) == [(service_key, collision_port)] + # Disabled components (port 0) must not be treated as colliding. + no_collision = { + "components": {"a": {"port": 0}, "b": {"port": 0}}, + "http_server_config": {"static_config": {"port": 8080}}, + } + _assert_ports_unique_within_service("ok", flatten_dotted(no_collision)) - # Merge-aware loading pulls in the common monitoring port, exposing the collision. - merged_core = _load_merged_service_yamls(tmp_path)["core"] - with pytest.raises( - AssertionError, match=f"port {collision_port} assigned to both '{service_key}'" - ): - _assert_sequencer_ports_unique_within_service("core", merged_core) + # Two non-zero ports sharing a value must raise. + collision = { + "components": {"batcher": {"port": 55000}}, + "monitoring_endpoint_config": {"port": 55000}, + } + with pytest.raises(AssertionError, match="port 55000 assigned to both"): + _assert_ports_unique_within_service("bad", flatten_dotted(collision))