-
Notifications
You must be signed in to change notification settings - Fork 2.2k
feat(zkstack): Deploy 2 ctms and deploy chain for each of them #4458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1c2b10b to
8351822
Compare
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
8351822 to
ef91248
Compare
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
9497a29 to
baf0257
Compare
798d951 to
0f6d3e1
Compare
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
2a8ec19 to
f001339
Compare
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
934d36b to
8404486
Compare
Signed-off-by: Danil <[email protected]>
f59008e to
781b6db
Compare
Signed-off-by: Danil <[email protected]>
Signed-off-by: Danil <[email protected]>
mm-zk
reviewed
Oct 7, 2025
zkstack_cli/crates/zkstack/src/commands/ctm/commands/init_new_ctm.rs
Outdated
Show resolved
Hide resolved
sanekmelnikov
previously approved these changes
Oct 8, 2025
artmakh
previously approved these changes
Oct 8, 2025
mm-zk
reviewed
Oct 8, 2025
zkstack_cli/crates/config/src/forge_interface/register_chain/input.rs
Outdated
Show resolved
Hide resolved
zkstack_cli/crates/zkstack/src/commands/dev/commands/upgrades/args/chain.rs
Show resolved
Hide resolved
zkstack_cli/crates/zkstack/src/commands/dev/commands/upgrades/default_ecosystem_upgrade.rs
Show resolved
Hide resolved
zkstack_cli/crates/zkstack/src/commands/ecosystem/args/register_new_ctm.rs
Outdated
Show resolved
Hide resolved
Signed-off-by: Danil <[email protected]>
mm-zk
approved these changes
Oct 8, 2025
artmakh
approved these changes
Oct 8, 2025
This was referenced Oct 8, 2025
github-merge-queue bot
pushed a commit
that referenced
this pull request
Oct 9, 2025
🤖 I have created a release *beep* *boop* --- ## [0.2.0](zkstack_cli-v0.1.2...zkstack_cli-v0.2.0) (2025-10-09) ### ⚠ BREAKING CHANGES * v29 upgrade testing & zkstack_cli changes ([#4332](#4332)) * **zkstack_cli:** Fix zkstack cli v28 script ([#3946](#3946)) * Remove old prover stack ([#3729](#3729)) * V27 update ([#3580](#3580)) ### Features * add dedicated TEE proof data handler module ([#3872](#3872)) ([ac64ee6](ac64ee6)) * add flag to save calldata ([#4471](#4471)) ([1ee5eac](1ee5eac)) * add integration test for DA migration ([#3944](#3944)) ([52aff1d](52aff1d)) * add prividium docker image support for block explorer ([#4127](#4127)) ([df9a433](df9a433)) * add prividium mode to zkstack explorer ([#4079](#4079)) ([c571914](c571914)) * Add proof manager contracts submodule ([#4189](#4189)) ([0c75985](0c75985)) * Add S3 implementation for object_store ([#3664](#3664)) ([a848927](a848927)) * Add Support for Protocol Version v28 ([#3821](#3821)) ([5419420](5419420)) * Adding 'rich_accounts' command to zkstack ([#3895](#3895)) ([50b72dc](50b72dc)) * **api:** Support Unix domain sockets for healthcheck server ([#4226](#4226)) ([b06bacb](b06bacb)) * **avail-client:** async blob dispatch ([#4010](#4010)) ([7a18647](7a18647)) * bump rustc to `nightly-2025-03-19` ([#3985](#3985)) ([d27390e](d27390e)) * **ci:** fast integration tests framework ([#4255](#4255)) ([a72cbd8](a72cbd8)) * **config:** Report config params in more ways ([#4126](#4126)) ([a78531c](a78531c)) * Configuration system PoC ([#3851](#3851)) ([7b449c2](7b449c2)) * **consensus:** Add consensus protocol versioning ([#3720](#3720)) ([d1b4308](d1b4308)) * **consensus:** Validator committee rotation ([#4014](#4014)) ([333efea](333efea)) * **contract_verifier:** add etherscan verification request support to the verifier api ([#3956](#3956)) ([87938b3](87938b3)) * **contract_verifier:** read compiler versions from cbor metadata if available ([#4002](#4002)) ([9bc20a4](9bc20a4)) * **contract-verifier:** add Etherscan contract verification ([#3609](#3609)) ([a4ea0f2](a4ea0f2)) * Draft v29 ([#3960](#3960)) ([91843a2](91843a2)) * **en:** Cache remote config for en ([#4367](#4367)) ([20bc4a8](20bc4a8)) * **en:** remove dependency on pubdata commitment mode ([#3826](#3826)) ([a0c78c0](a0c78c0)) * **en:** remove JSON RPC syncing ([#4258](#4258)) ([d194604](d194604)) * **en:** return back JSON RPC syncing ([#4344](#4344)) ([24b2990](24b2990)) * **en:** Use config system for env-based EN configuration ([#4104](#4104)) ([b706025](b706025)) * Eth proof manager sender ([#4266](#4266)) ([93b2086](93b2086)) * **eth_sender:** Add fast finalization into eth_tx_manager ([#4070](#4070)) ([c6b815d](c6b815d)) * **eth-sender:** set `from_addr` for non-blob txs ([#3898](#3898)) ([c699f8a](c699f8a)) * **gateway:** add checks that the server version is correct ([#3681](#3681)) ([659edaa](659edaa)) * **gateway:** Migration to Gateway ([#3654](#3654)) ([2858ba0](2858ba0)) * **gateway:** Requirement to stop L1->L2 transactions before v26 upgrade ([#3707](#3707)) ([0a095b7](0a095b7)) * **private-rpc:** improved compatibility with ethers library + tests ([#4046](#4046)) ([0e2e0d8](0e2e0d8)) * **private-rpc:** option to run private proxy in ZKStack CLI + moving Private Proxy files inside zksync-era repo ([#3919](#3919)) ([3b9307c](3b9307c)) * Proof data handler client ([#3874](#3874)) ([daf6f7b](daf6f7b)) * Proof manager watcher ([#4241](#4241)) ([6423b0d](6423b0d)) * Prover Cluster follow-up [#2](#2) ([#4001](#4001)) ([d8ed7f7](d8ed7f7)) * **prover:** --threads feature to WVGs ([#4291](#4291)) ([846f6e4](846f6e4)) * remove 2nd validator from command that prepares GW migration calldata ([#4331](#4331)) ([f81ad19](f81ad19)) * Remove feature flags for upgrades & v28.1 ([#4384](#4384)) ([fa7e679](fa7e679)) * Remove old prover stack ([#3729](#3729)) ([fbbdc76](fbbdc76)) * rework prover job identifiers ([#3888](#3888)) ([073326f](073326f)) * split zkstack cli command ([#4418](#4418)) ([36cd668](36cd668)) * update zkstack-cli for updated scripts ([#4481](#4481)) ([cc0a95b](cc0a95b)) * updating upgrade and migration config files for testnet and mainnet ([#4148](#4148)) ([6d11c2d](6d11c2d)) * Use JSON-RPC for core <> prover interaction ([#3626](#3626)) ([4e74730](4e74730)) * V27 update ([#3580](#3580)) ([9e18550](9e18550)) * **v27:** Use latest branch of release-v27 ([#3713](#3713)) ([6e1681e](6e1681e)) * v29 upgrade testing & zkstack_cli changes ([#4332](#4332)) ([9e4755e](9e4755e)) * **zkstack_cli:** Add function to track chain admin priority txs ([#3897](#3897)) ([fed2ca9](fed2ca9)) * **zkstack_cli:** finish enabling migrating chain from Gateway + remove the gateway feature flag ([#3924](#3924)) ([d091c90](d091c90)) * **zkstack_cli:** update gateway chain scripts ([#3852](#3852)) ([542c7a9](542c7a9)) * **zkstack-cli:** add prove & execute wallets ([#4477](#4477)) ([468cec9](468cec9)) * **zkstack:** Add zksync_os flag for ecosystem init ([#4456](#4456)) ([49e0529](49e0529)) * **zkstack:** Allow skipping build for contracts and server during ecosystem init ([#3697](#3697)) ([81abd84](81abd84)) * **zkstack:** Allow to run separate integration test suites ([d287725](d287725)) * **zkstack:** bump alloy ([#4502](#4502)) ([1a6ad60](1a6ad60)) * **zkstack:** Clarify prompt for funds check ([#3723](#3723)) ([a8ea520](a8ea520)) * **zkstack:** Deploy 2 ctms and deploy chain for each of them ([#4458](#4458)) ([5d2a7cd](5d2a7cd)) * **zkstack:** fast fmt ([#4222](#4222)) ([d05c3dd](d05c3dd)) * **zkstack:** Generating keys for compressor ([#4301](#4301)) ([b879b6f](b879b6f)) * **zkstack:** No genesis arg ([#4453](#4453)) ([9034246](9034246)) * **zkstack:** zkstack cli for v27 upgrade ([#3718](#3718)) ([91e04fb](91e04fb)) ### Bug Fixes * Changes to zkstack after testing migration from GW ([#3969](#3969)) ([b63e607](b63e607)) * **consensus:** Correctly handle error on SetValidatorSchedule ([#4147](#4147)) ([e169bd3](e169bd3)) * **consensus:** Debug page server port reuse ([#4273](#4273)) ([77d043f](77d043f)) * **consensus:** Update consensus dependencies ([#4186](#4186)) ([110a527](110a527)) * Fix security issues (bump dependencies) ([#3813](#3813)) ([c6def9c](c6def9c)) * fix zkstack cli upgrade features + remove redundant CI workflow ([#3975](#3975)) ([0f04134](0f04134)) * **gateway-migrator:** Properly handle unknown settlement layer ([#3961](#3961)) ([b43e315](b43e315)) * make proof data handler backwards compatible ([#3767](#3767)) ([bdbbaaa](bdbbaaa)) * remove zksync_contracts dep from zkstack_cli ([#4400](#4400)) ([7bcf275](7bcf275)) * target_rpc address in private-rpc docker-compose ([#4062](#4062)) ([b69819b](b69819b)) * **upgrades:** Read all skipped events ([#4504](#4504)) ([1de5f63](1de5f63)) * **zkstack_cli:** Fix zkstack cli v28 script ([#3946](#3946)) ([0a3d13f](0a3d13f)) * **zkstack:** add `--locked` to `cargo sqlx prepare` ([#3300](#3300)) ([a98b1c8](a98b1c8)) * **zkstack:** Add param for setting da validation pair ([#4150](#4150)) ([47e2517](47e2517)) * **zkstack:** Allow to use chain config if ecosystem is redundant ([#4236](#4236)) ([066b3b1](066b3b1)) * **zkstack:** Fix prover run and shell ([#4422](#4422)) ([eae38e2](eae38e2)) * **zkstack:** fixes for private rpc in zkstack cli ([#4012](#4012)) ([be68210](be68210)) * **zkstack:** Generating compressor keys flow fix ([#4343](#4343)) ([4cf2f67](4cf2f67)) * **zkstack:** make GW migration script compatible with pre-v29 ([#4346](#4346)) ([7ba2cf3](7ba2cf3)) * **zkstack:** make proving network contracts config optional ([#4263](#4263)) ([3ebad3b](3ebad3b)) * **zkstack:** Migration params ([#4369](#4369)) ([8597c32](8597c32)) * **zkstack:** Use `latest` for prover component by default ([#4120](#4120)) ([91af29d](91af29d)) ### Performance Improvements * **db:** use copy in `insert_initial_writes` ([#3899](#3899)) ([c6f1598](c6f1598)) * Instrumentation for Jemalloc (pt. 2) ([#4204](#4204)) ([5e0bd65](5e0bd65)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <[email protected]>
github-merge-queue bot
pushed a commit
that referenced
this pull request
Oct 16, 2025
🤖 I have created a release *beep* *boop* --- ## [29.5.0](core-v29.4.1...core-v29.5.0) (2025-10-16) ### Features * add support for eip-7594 blob format ([#4542](#4542)) ([b57d6f6](b57d6f6)) * adds l1_batch_number to zks_get_l2l1_logproof ([#4530](#4530)) ([004dcdc](004dcdc)) * **zkstack:** Deploy 2 ctms and deploy chain for each of them ([#4458](#4458)) ([5d2a7cd](5d2a7cd)) ### Bug Fixes * **eth_sender:** refactor support for eip7594 ([#4543](#4543)) ([462849a](462849a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <[email protected]>
Deniallugo
added a commit
that referenced
this pull request
Oct 22, 2025
## What ❔ **Support for deploying and managing multiple CTM (Contract Template Manager) contracts, and allowing selection between them when creating chains.** ### Flow of execution #### 1. Create a new ecosystem ```bash zkstack ecosystem create ``` This command creates a **new ecosystem**. You’ll specify the link to the code repository (by default, this points to the **Era** codebase). Contracts will be used as a submodule within this repository. After creating the ecosystem, initialize it: ```bash zkstack ecosystem init ``` This command deploys a **new ecosystem** and **one default Era chain**. --- #### 2. Initialize another CTM Once everything is deployed, you can deploy an additional CTM: ```bash zkstack ctm init-new-ctm --zksync-os --contracts-src-path <path> --default-configs-src-path <path> ``` **Parameters:** * `--contracts-src-path` — Path to the **Era contracts** (you must clone and manage this repository manually). Use a branch or tag matching the desired **zkSync OS** or **Era** version. * `--default-configs-src-path` — Path to **default configs** (in Era this is typically `etc/env/file_based`). Only one file is required: `genesis.yaml` (in the old format). The data from these paths will be used during CTM deployment. --- #### 3. Register the CTM Once deployed, register the CTM within the ecosystem: ```bash zkstack ecosystem register-ctm --zksync-os ``` >⚠️ **Important:** > `register-ctm` is an **ecosystem-level** subcommand — it must be called from within the ecosystem context. After registration, any chain can be created using this CTM. --- #### 4. Create a new chain using the selected CTM ```bash zkstack chain create --zksync-os ``` From this point on, all subsequent commands and scripts will use **zkSync OS contracts** by default. Then initialize the chain: ```bash zkstack chain init ``` This finalizes the chain initialization. --- #### 5. Development mode If you use the `--dev` flag during ecosystem initialization: ```bash zkstack ecosystem init --dev ``` All available CTMs and chains will be automatically initialized. --- #### 6. Optional shortcut Immediately after creating the ecosystem, you can predefine CTM contracts: ```bash zkstack ctm set-ctm-contracts --zksync-os ``` This sets the contracts path for the CTM so you don’t need to specify `--contracts-src-path` later during CTM initialization. --- ## Why ❔ This change enables ecosystems to: * Manage **multiple CTM contract versions** (e.g., Era and zkSync OS) side-by-side. * Flexibly choose which CTM to use when deploying new chains. * Simplify migration testing and allow **parallel evolution** of contract versions. * Support **gradual transition** to zkSync OS while maintaining Era compatibility. It also decouples contract source management from code releases, letting developers point to any desired version manually. --- ## Is this a breaking change? * [ ] Yes * [x] No --- ## Operational changes * New commands added: * `zkstack ctm init-new-ctm` * `zkstack ecosystem register-ctm` * `zkstack ctm set-ctm-contracts` * `ecosystem init --dev` now initializes all allowed CTMs and chains automatically. * Ecosystem can now host multiple CTMs (e.g., Era and zkSync OS). * Paths to contract sources and default configs must be managed manually when deploying additional CTMs. --- ## Checklist * [ ] PR title accurately reflects the body and purpose of the change. * [ ] Tests have been added or updated. * [ ] Documentation comments have been added or updated. * [ ] Code formatted with `zkstack dev fmt` and linted with `zkstack dev lint`. --------- Signed-off-by: Danil <[email protected]>
Deniallugo
pushed a commit
that referenced
this pull request
Oct 22, 2025
🤖 I have created a release *beep* *boop* --- ## [0.2.0](zkstack_cli-v0.1.2...zkstack_cli-v0.2.0) (2025-10-09) ### ⚠ BREAKING CHANGES * v29 upgrade testing & zkstack_cli changes ([#4332](#4332)) * **zkstack_cli:** Fix zkstack cli v28 script ([#3946](#3946)) * Remove old prover stack ([#3729](#3729)) * V27 update ([#3580](#3580)) ### Features * add dedicated TEE proof data handler module ([#3872](#3872)) ([ac64ee6](ac64ee6)) * add flag to save calldata ([#4471](#4471)) ([1ee5eac](1ee5eac)) * add integration test for DA migration ([#3944](#3944)) ([52aff1d](52aff1d)) * add prividium docker image support for block explorer ([#4127](#4127)) ([df9a433](df9a433)) * add prividium mode to zkstack explorer ([#4079](#4079)) ([c571914](c571914)) * Add proof manager contracts submodule ([#4189](#4189)) ([0c75985](0c75985)) * Add S3 implementation for object_store ([#3664](#3664)) ([a848927](a848927)) * Add Support for Protocol Version v28 ([#3821](#3821)) ([5419420](5419420)) * Adding 'rich_accounts' command to zkstack ([#3895](#3895)) ([50b72dc](50b72dc)) * **api:** Support Unix domain sockets for healthcheck server ([#4226](#4226)) ([b06bacb](b06bacb)) * **avail-client:** async blob dispatch ([#4010](#4010)) ([7a18647](7a18647)) * bump rustc to `nightly-2025-03-19` ([#3985](#3985)) ([d27390e](d27390e)) * **ci:** fast integration tests framework ([#4255](#4255)) ([a72cbd8](a72cbd8)) * **config:** Report config params in more ways ([#4126](#4126)) ([a78531c](a78531c)) * Configuration system PoC ([#3851](#3851)) ([7b449c2](7b449c2)) * **consensus:** Add consensus protocol versioning ([#3720](#3720)) ([d1b4308](d1b4308)) * **consensus:** Validator committee rotation ([#4014](#4014)) ([333efea](333efea)) * **contract_verifier:** add etherscan verification request support to the verifier api ([#3956](#3956)) ([87938b3](87938b3)) * **contract_verifier:** read compiler versions from cbor metadata if available ([#4002](#4002)) ([9bc20a4](9bc20a4)) * **contract-verifier:** add Etherscan contract verification ([#3609](#3609)) ([a4ea0f2](a4ea0f2)) * Draft v29 ([#3960](#3960)) ([91843a2](91843a2)) * **en:** Cache remote config for en ([#4367](#4367)) ([20bc4a8](20bc4a8)) * **en:** remove dependency on pubdata commitment mode ([#3826](#3826)) ([a0c78c0](a0c78c0)) * **en:** remove JSON RPC syncing ([#4258](#4258)) ([d194604](d194604)) * **en:** return back JSON RPC syncing ([#4344](#4344)) ([24b2990](24b2990)) * **en:** Use config system for env-based EN configuration ([#4104](#4104)) ([b706025](b706025)) * Eth proof manager sender ([#4266](#4266)) ([93b2086](93b2086)) * **eth_sender:** Add fast finalization into eth_tx_manager ([#4070](#4070)) ([c6b815d](c6b815d)) * **eth-sender:** set `from_addr` for non-blob txs ([#3898](#3898)) ([c699f8a](c699f8a)) * **gateway:** add checks that the server version is correct ([#3681](#3681)) ([659edaa](659edaa)) * **gateway:** Migration to Gateway ([#3654](#3654)) ([2858ba0](2858ba0)) * **gateway:** Requirement to stop L1->L2 transactions before v26 upgrade ([#3707](#3707)) ([0a095b7](0a095b7)) * **private-rpc:** improved compatibility with ethers library + tests ([#4046](#4046)) ([0e2e0d8](0e2e0d8)) * **private-rpc:** option to run private proxy in ZKStack CLI + moving Private Proxy files inside zksync-era repo ([#3919](#3919)) ([3b9307c](3b9307c)) * Proof data handler client ([#3874](#3874)) ([daf6f7b](daf6f7b)) * Proof manager watcher ([#4241](#4241)) ([6423b0d](6423b0d)) * Prover Cluster follow-up [#2](#2) ([#4001](#4001)) ([d8ed7f7](d8ed7f7)) * **prover:** --threads feature to WVGs ([#4291](#4291)) ([846f6e4](846f6e4)) * remove 2nd validator from command that prepares GW migration calldata ([#4331](#4331)) ([f81ad19](f81ad19)) * Remove feature flags for upgrades & v28.1 ([#4384](#4384)) ([fa7e679](fa7e679)) * Remove old prover stack ([#3729](#3729)) ([fbbdc76](fbbdc76)) * rework prover job identifiers ([#3888](#3888)) ([073326f](073326f)) * split zkstack cli command ([#4418](#4418)) ([36cd668](36cd668)) * update zkstack-cli for updated scripts ([#4481](#4481)) ([cc0a95b](cc0a95b)) * updating upgrade and migration config files for testnet and mainnet ([#4148](#4148)) ([6d11c2d](6d11c2d)) * Use JSON-RPC for core <> prover interaction ([#3626](#3626)) ([4e74730](4e74730)) * V27 update ([#3580](#3580)) ([9e18550](9e18550)) * **v27:** Use latest branch of release-v27 ([#3713](#3713)) ([6e1681e](6e1681e)) * v29 upgrade testing & zkstack_cli changes ([#4332](#4332)) ([9e4755e](9e4755e)) * **zkstack_cli:** Add function to track chain admin priority txs ([#3897](#3897)) ([fed2ca9](fed2ca9)) * **zkstack_cli:** finish enabling migrating chain from Gateway + remove the gateway feature flag ([#3924](#3924)) ([d091c90](d091c90)) * **zkstack_cli:** update gateway chain scripts ([#3852](#3852)) ([542c7a9](542c7a9)) * **zkstack-cli:** add prove & execute wallets ([#4477](#4477)) ([468cec9](468cec9)) * **zkstack:** Add zksync_os flag for ecosystem init ([#4456](#4456)) ([49e0529](49e0529)) * **zkstack:** Allow skipping build for contracts and server during ecosystem init ([#3697](#3697)) ([81abd84](81abd84)) * **zkstack:** Allow to run separate integration test suites ([d287725](d287725)) * **zkstack:** bump alloy ([#4502](#4502)) ([1a6ad60](1a6ad60)) * **zkstack:** Clarify prompt for funds check ([#3723](#3723)) ([a8ea520](a8ea520)) * **zkstack:** Deploy 2 ctms and deploy chain for each of them ([#4458](#4458)) ([5d2a7cd](5d2a7cd)) * **zkstack:** fast fmt ([#4222](#4222)) ([d05c3dd](d05c3dd)) * **zkstack:** Generating keys for compressor ([#4301](#4301)) ([b879b6f](b879b6f)) * **zkstack:** No genesis arg ([#4453](#4453)) ([9034246](9034246)) * **zkstack:** zkstack cli for v27 upgrade ([#3718](#3718)) ([91e04fb](91e04fb)) ### Bug Fixes * Changes to zkstack after testing migration from GW ([#3969](#3969)) ([b63e607](b63e607)) * **consensus:** Correctly handle error on SetValidatorSchedule ([#4147](#4147)) ([e169bd3](e169bd3)) * **consensus:** Debug page server port reuse ([#4273](#4273)) ([77d043f](77d043f)) * **consensus:** Update consensus dependencies ([#4186](#4186)) ([110a527](110a527)) * Fix security issues (bump dependencies) ([#3813](#3813)) ([c6def9c](c6def9c)) * fix zkstack cli upgrade features + remove redundant CI workflow ([#3975](#3975)) ([0f04134](0f04134)) * **gateway-migrator:** Properly handle unknown settlement layer ([#3961](#3961)) ([b43e315](b43e315)) * make proof data handler backwards compatible ([#3767](#3767)) ([bdbbaaa](bdbbaaa)) * remove zksync_contracts dep from zkstack_cli ([#4400](#4400)) ([7bcf275](7bcf275)) * target_rpc address in private-rpc docker-compose ([#4062](#4062)) ([b69819b](b69819b)) * **upgrades:** Read all skipped events ([#4504](#4504)) ([1de5f63](1de5f63)) * **zkstack_cli:** Fix zkstack cli v28 script ([#3946](#3946)) ([0a3d13f](0a3d13f)) * **zkstack:** add `--locked` to `cargo sqlx prepare` ([#3300](#3300)) ([a98b1c8](a98b1c8)) * **zkstack:** Add param for setting da validation pair ([#4150](#4150)) ([47e2517](47e2517)) * **zkstack:** Allow to use chain config if ecosystem is redundant ([#4236](#4236)) ([066b3b1](066b3b1)) * **zkstack:** Fix prover run and shell ([#4422](#4422)) ([eae38e2](eae38e2)) * **zkstack:** fixes for private rpc in zkstack cli ([#4012](#4012)) ([be68210](be68210)) * **zkstack:** Generating compressor keys flow fix ([#4343](#4343)) ([4cf2f67](4cf2f67)) * **zkstack:** make GW migration script compatible with pre-v29 ([#4346](#4346)) ([7ba2cf3](7ba2cf3)) * **zkstack:** make proving network contracts config optional ([#4263](#4263)) ([3ebad3b](3ebad3b)) * **zkstack:** Migration params ([#4369](#4369)) ([8597c32](8597c32)) * **zkstack:** Use `latest` for prover component by default ([#4120](#4120)) ([91af29d](91af29d)) ### Performance Improvements * **db:** use copy in `insert_initial_writes` ([#3899](#3899)) ([c6f1598](c6f1598)) * Instrumentation for Jemalloc (pt. 2) ([#4204](#4204)) ([5e0bd65](5e0bd65)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <[email protected]>
Deniallugo
pushed a commit
that referenced
this pull request
Oct 22, 2025
🤖 I have created a release *beep* *boop* --- ## [29.5.0](core-v29.4.1...core-v29.5.0) (2025-10-16) ### Features * add support for eip-7594 blob format ([#4542](#4542)) ([b57d6f6](b57d6f6)) * adds l1_batch_number to zks_get_l2l1_logproof ([#4530](#4530)) ([004dcdc](004dcdc)) * **zkstack:** Deploy 2 ctms and deploy chain for each of them ([#4458](#4458)) ([5d2a7cd](5d2a7cd)) ### Bug Fixes * **eth_sender:** refactor support for eip7594 ([#4543](#4543)) ([462849a](462849a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: zksync-era-bot <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What ❔
Support for deploying and managing multiple CTMs, and allowing selection between them when creating chains.
Flow of execution
1. Create a new ecosystem
This command creates a new ecosystem.
You’ll specify the link to the code repository (by default, this points to the Era codebase).
Contracts will be used as a submodule within this repository.
After creating the ecosystem, initialize it:
This command deploys a new ecosystem and one default Era chain.
2. Initialize another CTM
Once everything is deployed, you can deploy an additional CTM:
Parameters:
--contracts-src-path— Path to the Era contracts (you must clone and manage this repository manually).Use a branch or tag matching the desired zkSync OS or Era version.
--default-configs-src-path— Path to default configs (in Era this is typicallyetc/env/file_based).Only one file is required:
genesis.yaml(in the old format).The data from these paths will be used during CTM deployment.
3. Register the CTM
Once deployed, register the CTM within the ecosystem:
After registration, any chain can be created using this CTM.
4. Create a new chain using the selected CTM
From this point on, all subsequent commands and scripts will use zkSync OS contracts by default.
Then initialize the chain:
This finalizes the chain initialization.
5. Development mode
If you use the
--devflag during ecosystem initialization:All available CTMs and chains will be automatically initialized.
6. Optional shortcut
Immediately after creating the ecosystem, you can predefine CTM contracts:
This sets the contracts path for the CTM so you don’t need to specify
--contracts-src-pathlater during CTM initialization.Why ❔
This change enables ecosystems to:
It also decouples contract source management from code releases, letting developers point to any desired version manually.
Is this a breaking change?
Operational changes
New commands added:
zkstack ctm init-new-ctmzkstack ecosystem register-ctmzkstack ctm set-ctm-contractsecosystem init --devnow initializes all allowed CTMs and chains automatically.Ecosystem can now host multiple CTMs (e.g., Era and zkSync OS).
Paths to contract sources and default configs must be managed manually when deploying additional CTMs.
Checklist
zkstack dev fmtand linted withzkstack dev lint.