From 0c7c7368301274f1574ec19e51cacd0acbeeb5e7 Mon Sep 17 00:00:00 2001 From: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com> Date: Fri, 6 Jun 2025 11:15:01 +0100 Subject: [PATCH] coordinator: adds config v2 (#853) * coordinator: adds config v2 sample * coordinator: update config V2 * coordinator: update config v2 * coordinator: update config v2 * coordinator: config v2 wip * spotless fix * coordinator: adds config v2 parsers * coordinator: adds config v2 classes and parsing tests * coordinator: adds config v2 classes and parsing tests * remove end2end changes from staterecovery test trigger * coordinator: config v2 - fix prover directory config * coordinator: add getChaindId to EthApiClient.kt * coordinator: improve EIP1559GasProvider validation * coordinator: add createReadOnly to Web3JL2MessageServiceSmartContractClient * coordinator: add validation to FeeHistoryFetcherImpl * coordinator: add more configs to v2 * coordinator: extend Web3JFactory * coordinator: addapt CoordinatorApp to new V2 configs * coordinator: adapt local stack coordinator configs * coordinator: log4j clients.l1 debug * coordinator: revert attempt to use web3signer on CI ONly :( * coordinator: fix test and configs * coordinator: fix test and configs * coordinator: fix traces node address * coordinator: remove unnecessary file * coordinator: hardcode tracesVersion to v2.1.0 to match prover regex * Update config/coordinator/coordinator-config-v2.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Roman Vaseev <4833306+Filter94@users.noreply.github.com> Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com> * coordinator: default targetBlobsPerTransaction=7u * coordinator: hardcode tracesVersion to 2.1.0 to match prover regex * coordinator: fix agg configs * coordinator: strict configs log warning when config is not used * coordinator: add carved out config files * coordinator: add opt-in to avoid annoying warning log * feat: update Makefile for new coordinator config file and variable name * localstack: remove coordinator forced platform * coordinator: add missing config on gas-price-cap-calculation * coordinator: remove old configs --------- Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Roman Vaseev <4833306+Filter94@users.noreply.github.com> Co-authored-by: jonesho <81145364+jonesho@users.noreply.github.com> Co-authored-by: jonesho --- .github/workflows/main.yml | 1 - ...reuse-linea-besu-package-run-e2e-tests.yml | 6 +- .run/Coordinator.run.xml.template | 2 +- Makefile | 2 +- ...rdinator-config-v2-override-local-dev.toml | 58 ++ config/coordinator/coordinator-config-v2.toml | 287 +++++++++ ...ator-docker-traces-v2-override.config.toml | 35 - ...tor-docker-web3signer-override.config.toml | 13 - .../coordinator-docker.config.toml | 288 --------- ...-local-dev.config-traces-v2.overrides.toml | 28 - ...oordinator-local-dev.config.overrides.toml | 66 -- config/coordinator/log4j2-dev.xml | 4 + coordinator/app/build.gradle | 4 +- .../linea/coordinator/config/ConfigLoader.kt | 131 ---- .../linea/coordinator/config/Mappers.kt | 13 + .../linea/coordinator/config/v2/ApiConfig.kt | 5 + .../coordinator/config/v2/ConflationConfig.kt | 46 ++ .../config/v2/CoordinatorConfig.kt | 20 + .../coordinator/config/v2/DatabaseConfig.kt | 22 + .../coordinator/config/v2/FeatureToggle.kt | 8 + .../config/v2/L1FinalizationMonitorConfig.kt | 13 + .../config/v2/L1SubmissionConfig.kt | 84 +++ .../config/v2/L2NetworkGasPricingConfig.kt | 34 + .../config/v2/MessageAnchoringConfig.kt | 71 +++ .../coordinator/config/v2/ProtocolConfig.kt | 44 ++ .../coordinator/config/v2/ProverConfig.kt | 21 + .../coordinator/config/v2/SignerConfig.kt | 76 +++ .../config/v2/StateManagerConfig.kt | 15 + .../coordinator/config/v2/TracesConfig.kt | 22 + .../config/v2/Type2StateProofManagerConfig.kt | 18 + .../config/v2/toml/ApiConfigToml.kt | 11 + .../config/v2/toml/ConfigLoaderHelper.kt | 169 +++++ .../config/v2/toml/ConflationToml.kt | 91 +++ .../v2/toml/CoordinatorConfigFilesToml.kt | 73 +++ .../config/v2/toml/DatabaseToml.kt | 36 ++ .../config/v2/toml/DefaultsToml.kt | 17 + .../toml/L1FinalizationMonitorConfigToml.kt | 25 + .../config/v2/toml/L1SubmissionConfigToml.kt | 172 +++++ .../v2/toml/L2NetworkGasPricingConfigToml.kt | 83 +++ .../v2/toml/MessageAnchoringConfigToml.kt | 106 ++++ .../config/v2/toml/ProtocolToml.kt | 65 ++ .../coordinator/config/v2/toml/ProverToml.kt | 88 +++ .../config/v2/toml/RequestRetriesToml.kt | 54 ++ .../config/v2/toml/SignerConfigToml.kt | 116 ++++ .../config/v2/toml/StateManagerToml.kt | 24 + .../coordinator/config/v2/toml/TracesToml.kt | 66 ++ .../v2/toml/Type2StateProofManagerToml.kt | 28 + .../toml/decoders}/BlockParameterDecoder.kt | 30 +- .../config/v2/toml/decoders/Decoders.kt | 83 +++ .../coordinator/app/BlockchainClientHelper.kt | 22 +- .../zkevm/coordinator/app/CoordinatorApp.kt | 45 +- .../coordinator/app/CoordinatorAppCli.kt | 4 +- .../coordinator/app/CoordinatorAppMain.kt | 2 +- .../app/DisabledLongRunningService.kt | 15 + .../zkevm/coordinator/app/L1DependentApp.kt | 592 ++++++++++------- .../app/config/CoordinatorConfig.kt | 597 ------------------ .../app/config/L2NetworkGasPricingConfig.kt | 194 ------ .../app/config/MessageAnchoringConfig.kt | 95 --- .../coordinator/app/config/ProverConfig.kt | 91 --- .../config/v2/ApiConfigParsingTest.kt | 39 ++ .../config/v2/ConflationParsingTest.kt | 107 ++++ .../config/v2/CoordinatorConfigTest.kt | 79 +++ .../config/v2/DataBaseConfigParsingTest.kt | 86 +++ .../config/v2/DefaultsParsingTest.kt | 69 ++ .../v2/L1FinalizationMonitorParsingTest.kt | 57 ++ .../v2/L1SubmissionConfigParsingTest.kt | 358 +++++++++++ ...L2NetWorkingGasPricingConfigParsingTest.kt | 135 ++++ .../config/v2/LocalStackConfigsParsingTest.kt | 27 + .../v2/MessageAnchoringConfigParsingTest.kt | 185 ++++++ .../config/v2/ProtocolParsingTest.kt | 78 +++ .../config/v2/ProverParsingTest.kt | 129 ++++ .../config/v2/SignerConfigParsingTest.kt | 61 ++ .../config/v2/StateManagerParsingTest.kt | 68 ++ .../linea/coordinator/config/v2/TestHelper.kt | 15 + .../config/v2/TracesParsingTest.kt | 174 +++++ .../v2/Type2StateProofProviderParsingTest.kt | 71 +++ .../toml/decoder/BlockParameterDecoderTest.kt | 63 ++ .../app/config/CoordinatorConfigTest.kt | 558 ---------------- .../app/config/ExpectedGasPriceMultipliers.kt | 172 ----- .../app/config/ExpectedTracesLimitsV2.kt | 60 -- .../config/L2NetworkGasPricingConfigTest.kt | 548 ---------------- .../app/config/MessageAnchoringConfigTest.kt | 132 ---- .../app/config/ProverConfigTest.kt | 149 ----- .../staticcap/FeeHistoryFetcherImpl.kt | 3 + .../zkevm/ethereum/ContractsManager.kt | 7 +- docker/compose-spec-l2-services.yml | 9 +- docker/compose-tracing-v2-ci-extension.yml | 2 +- .../kotlin/linea/kotlin/StringExtensions.kt | 1 + .../main/kotlin/linea/ethapi/EthApiClient.kt | 2 + .../kotlin/linea/ethapi/FakeEthApiClient.kt | 5 + ...eb3JL2MessageServiceSmartContractClient.kt | 25 + .../main/kotlin/linea/web3j/Web3JFactory.kt | 52 +- .../linea/web3j/ethapi/Web3jEthApiClient.kt | 9 + .../web3j/ethapi/Web3jEthApiClientFactory.kt | 9 +- .../ethapi/Web3jEthApiClientWithRetries.kt | 4 + .../linea/web3j/gas/EIP1559GasProvider.kt | 13 +- linea-besu-package/Makefile | 6 +- 97 files changed, 4511 insertions(+), 3487 deletions(-) create mode 100644 config/coordinator/coordinator-config-v2-override-local-dev.toml create mode 100644 config/coordinator/coordinator-config-v2.toml delete mode 100644 config/coordinator/coordinator-docker-traces-v2-override.config.toml delete mode 100644 config/coordinator/coordinator-docker-web3signer-override.config.toml delete mode 100644 config/coordinator/coordinator-docker.config.toml delete mode 100644 config/coordinator/coordinator-local-dev.config-traces-v2.overrides.toml delete mode 100644 config/coordinator/coordinator-local-dev.config.overrides.toml delete mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/ConfigLoader.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/Mappers.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/ApiConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/ConflationConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/CoordinatorConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/DatabaseConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/FeatureToggle.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/L1FinalizationMonitorConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/L1SubmissionConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/L2NetworkGasPricingConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/MessageAnchoringConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/ProtocolConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/ProverConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/SignerConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/StateManagerConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/TracesConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/Type2StateProofManagerConfig.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/ApiConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/ConfigLoaderHelper.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/ConflationToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/CoordinatorConfigFilesToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/DatabaseToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/DefaultsToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/L1FinalizationMonitorConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/L1SubmissionConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/L2NetworkGasPricingConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/MessageAnchoringConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/ProtocolToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/ProverToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/RequestRetriesToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/SignerConfigToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/StateManagerToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/TracesToml.kt create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/Type2StateProofManagerToml.kt rename coordinator/app/src/main/kotlin/{net/consensys/zkevm/coordinator/app/config => linea/coordinator/config/v2/toml/decoders}/BlockParameterDecoder.kt (52%) create mode 100644 coordinator/app/src/main/kotlin/linea/coordinator/config/v2/toml/decoders/Decoders.kt create mode 100644 coordinator/app/src/main/kotlin/net/consensys/zkevm/coordinator/app/DisabledLongRunningService.kt delete mode 100644 coordinator/app/src/main/kotlin/net/consensys/zkevm/coordinator/app/config/CoordinatorConfig.kt delete mode 100644 coordinator/app/src/main/kotlin/net/consensys/zkevm/coordinator/app/config/L2NetworkGasPricingConfig.kt delete mode 100644 coordinator/app/src/main/kotlin/net/consensys/zkevm/coordinator/app/config/MessageAnchoringConfig.kt delete mode 100644 coordinator/app/src/main/kotlin/net/consensys/zkevm/coordinator/app/config/ProverConfig.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/ApiConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/ConflationParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/CoordinatorConfigTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/DataBaseConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/DefaultsParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/L1FinalizationMonitorParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/L1SubmissionConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/L2NetWorkingGasPricingConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/LocalStackConfigsParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/MessageAnchoringConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/ProtocolParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/ProverParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/SignerConfigParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/StateManagerParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/TestHelper.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/TracesParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/Type2StateProofProviderParsingTest.kt create mode 100644 coordinator/app/src/test/kotlin/linea/coordinator/config/v2/toml/decoder/BlockParameterDecoderTest.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/CoordinatorConfigTest.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/ExpectedGasPriceMultipliers.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/ExpectedTracesLimitsV2.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/L2NetworkGasPricingConfigTest.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/MessageAnchoringConfigTest.kt delete mode 100644 coordinator/app/src/test/kotlin/net/consensys/zkevm/coordinator/app/config/ProverConfigTest.kt diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 586bcf3e..a8334486 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,7 +65,6 @@ jobs: - '.github/workflows/staterecovery-*.yml' - '.github/workflows/main.yml' - '.github/workflows/reuse-*.yml' - - 'e2e/**' postman: - 'postman/**' - 'sdk/**' diff --git a/.github/workflows/reuse-linea-besu-package-run-e2e-tests.yml b/.github/workflows/reuse-linea-besu-package-run-e2e-tests.yml index 6341488b..07f6a01f 100644 --- a/.github/workflows/reuse-linea-besu-package-run-e2e-tests.yml +++ b/.github/workflows/reuse-linea-besu-package-run-e2e-tests.yml @@ -78,12 +78,10 @@ jobs: - name: Replace expected traces api version in coordinator config file shell: bash run: | - sed -i 's/^\(expected-traces-api-version-v2=\).*/\1"${{ env.EXPECTED_TRACES_API_VERSION }}"/' config/coordinator/coordinator-docker.config.toml - sed -i 's/^\(expected-traces-api-version-v2=\).*/\1"${{ env.EXPECTED_TRACES_API_VERSION }}"/' config/coordinator/coordinator-docker-traces-v2-override.config.toml + sed -i 's/^\(expected-traces-api-version[ ]*=[ ]*\).*/\1"${{ env.EXPECTED_TRACES_API_VERSION }}"/' config/coordinator/coordinator-config-v2.toml echo "EXPECTED_TRACES_API_VERSION=${{ env.EXPECTED_TRACES_API_VERSION }}" echo "BESU_PACKAGE_TAG=${{ env.BESU_PACKAGE_TAG }}" - echo "$(grep expected-traces-api-version-v2 config/coordinator/coordinator-docker.config.toml)" - echo "$(grep expected-traces-api-version-v2 config/coordinator/coordinator-docker-traces-v2-override.config.toml)" + echo "$(grep expected-traces-api-version config/coordinator/coordinator-config-v2.toml)" - name: Spin up fresh environment with besu tracing with retry uses: nick-fields/retry@v3 with: diff --git a/.run/Coordinator.run.xml.template b/.run/Coordinator.run.xml.template index 85bc6379..7ef9711f 100644 --- a/.run/Coordinator.run.xml.template +++ b/.run/Coordinator.run.xml.template @@ -4,7 +4,7 @@