Skip to content

feat: add migration intervals tracking and verifying settlement layer#1993

Merged
StanislavBreadless merged 33 commits intodraft-v31from
vg/settlement-layer-trust-assumptions
Feb 12, 2026
Merged

feat: add migration intervals tracking and verifying settlement layer#1993
StanislavBreadless merged 33 commits intodraft-v31from
vg/settlement-layer-trust-assumptions

Conversation

@0xValera
Copy link
Collaborator

What ❔

Why ❔

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.

Copy link
Collaborator

@StanislavBreadless StanislavBreadless left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, I just want to tighten our restrictions to make invariants clearer

@StanislavBreadless StanislavBreadless marked this pull request as ready for review February 11, 2026 10:31
StanislavBreadless and others added 2 commits February 12, 2026 12:42
…dler.sol

Co-authored-by: kelemeno <34402761+kelemeno@users.noreply.github.com>
@github-actions
Copy link
Contributor

Coverage after merging vg/settlement-layer-trust-assumptions into draft-v31 will be

91.27%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
contracts/bridge
   BridgeHelper.sol100%100%100%100%
   BridgedStandardERC20.sol96.25%100%92.31%97.01%231–232
   L1ERC20Bridge.sol97.78%100%100%97.30%261
   L1Nullifier.sol95.98%100%100%95.24%432–433, 436, 462, 710, 713, 715, 731
   UpgradeableBeaconDeployer.sol100%100%100%100%
contracts/bridge/asset-router
   AssetRouterBase.sol98.53%100%100%98.21%128
   L1AssetRouter.sol91.62%100%86.67%92.70%104, 319, 330, 412–413, 432, 590, 601, 615, 620
contracts/bridge/asset-tracker
   AssetTrackerBase.sol93.55%100%88.89%95.45%84
   GWAssetTracker.sol89.82%100%94.59%89.08%105–107, 109–111, 124–125, 262–264, 280, 370, 411, 413–419, 426–427, 647–648, 93
   L1AssetTracker.sol97.95%100%100%97.60%226, 404, 61
   LegacySharedBridgeAddresses.sol83.33%100%100%81.82%39, 41
contracts/bridge/interfaces
   AssetHandlerModifiers.sol75%100%100%66.67%13
contracts/bridge/ntv
   L1NativeTokenVault.sol98.13%100%100%97.65%182, 184
   NativeTokenVaultBase.sol98.95%100%100%98.74%139, 144
contracts/common
   MessageVerification.sol88.24%100%87.50%88.46%34, 41–42
   ReentrancyGuard.sol100%100%100%100%
contracts/common/l2-helpers
   L2ContractHelper.sol98.11%100%100%97.78%108
   SystemContractsCaller.sol52.50%100%60%51.43%44–45, 47, 49, 51, 53, 66, 69, 72, 75, 78, 83, 89, 91, 93, 96, 98
contracts/common/libraries
   DataEncoding.sol95.54%100%95.65%95.51%183, 270, 288, 294
   DynamicIncrementalMerkle.sol100%100%100%100%
   DynamicIncrementalMerkleMemory.sol98.96%100%100%98.84%196
   FullMerkle.sol98.72%100%100%98.59%152
   FullMerkleMemory.sol93.81%100%100%93.33%114, 131, 149, 163, 194, 90
   Merkle.sol100%100%100%100%
   MessageHashing.sol98.67%100%100%98.46%154
   SemVer.sol100%100%100%100%
   UncheckedMath.sol100%100%100%100%
   UnsafeBytes.sol100%100%100%100%
   ZKSyncOSBytecodeInfo.sol100%100%100%100%
contracts/common/libraries/TransientPrimitives
   TransientPrimitives.sol100%100%100%100%
contracts/core/bridgehub
   BridgehubBase.sol96.86%100%100%96.23%136, 285, 301, 558, 562, 565
   L1Bridgehub.sol90%100%91.67%89.77%207, 282, 286–287, 290, 300, 66–67, 90
   L2Bridgehub.sol66.67%100%60%68.57%103–104, 112, 114–115, 124, 129–130, 132–133, 76
contracts/core/chain-asset-handler
   ChainAssetHandlerBase.sol85.57%100%92.31%84.52%102–103, 121–123, 172, 175, 184–185, 318, 322, 344, 95
   L1ChainAssetHandler.sol91.67%100%87.50%92.65%249, 71–72, 76–77
   L2ChainAssetHandler.sol84.21%100%80%85.71%121, 125, 70, 94
contracts/core/chain-registration
   ChainRegistrationSender.sol88.24%100%100%85.19%41, 85, 89, 95
contracts/core/ctm-deployment
   CTMDeploymentTracker.sol100%100%100%100%
contracts/core/message-root
   L1MessageRoot.sol93.62%100%88.89%94.74%132–133
   L2MessageRoot.sol61.54%100%44.44%66.67%101, 108, 39–40, 45–46, 50, 57, 62–63
   MessageRootBase.sol90%100%94.44%89.13%118, 122, 129–131, 194, 214, 295, 314, 350
contracts/governance
   AccessControlRestriction.sol100%100%100%100%
   ChainAdmin.sol97.87%100%100%97.30%39
   ChainAdminOwnable.sol100%100%100%100%
   Governance.sol100%100%100%100%
   L2ProxyAdminDeployer.sol100%100%100%100%
   PermanentRestriction.sol100%100%100%100%
   ServerNotifier.sol100%100%100%100%
   TransitionaryOwner.sol100%100%100%100%
contracts/governance/restriction
   Restriction.sol100%100%100%100%
   RestrictionValidator.sol100%100%100%100%
contracts/interop
   AttributesDecoder.sol100%100%100%100%
   InteropCenter.sol93.90%100%89.47%94.48%114, 428, 502, 54–55, 59–60, 72
   InteropDataEncoding.sol100%100%100%100%
   InteropHandler.sol91.53%100%83.33%92.45%33–35, 381, 403, 408, 41–42
   L2MessageVerification.sol100%100%100%100%
contracts/l2-system/zksync-os
   L1MessageGasLib.sol100%100%100%100%
   L1Messenger.sol94.12%100%100%92.86%29
   SystemContext.sol100%100%100%100%
   ZKOSContractDeployer.sol0%100%0%0%12–14, 20, 26, 30–31
contracts/l2-upgrades
   L2ComplexUpgrader.sol0%100%0%0%23–25, 39, 44, 46, 56, 62–63, 70, 79–81, 84, 86–87
   L2GenesisForceDeploymentsHelper.sol93.92%100%100%93.33%117, 148, 150, 154, 156–157, 187, 193, 402
   L2GenesisUpgrade.sol0%100%0%0%30, 37, 39–40, 43, 47–50, 53, 55, 63
   L2V30TestnetSystemProxiesUpgrade.sol0%100%0%0%22, 27–28, 30, 41, 47, 52, 56, 61, 66, 71, 76, 81, 86, 93, 99
   L2V31Upgrade.sol0%100%0%0%17–18
   SystemContractProxy.sol87.50%100%66.67%90.48%16–17
   SystemContractProxyAdmin.sol60%100%66.67%57.14%12, 18–19
   V31AcrossRecovery.sol0%100%0%0%43–45, 64–65, 67–68, 72, 77–78, 93
contracts/state-transition
   AccessControlEnumerablePerChainAddressUpgradeable.sol98.25%100%100%97.83%179
   ChainTypeManagerBase.sol98.01%100%100%97.50%459, 522, 560, 636
   EraChainTypeManager.sol89.47%100%100%87.50%32, 52
   ZKsyncOSChainTypeManager.sol100%100%100%100%
contracts/state-transition/chain-deps
   DiamondInit.sol94%100%100%93.75%60, 64, 68
   DiamondProxy.sol100%100%100%100%
   StoredBatchHashing.sol100%100%100%100%
contracts/state-transition/chain-deps/facets
   Admin.sol96.12%100%100%95.48%137, 141, 145, 215, 240–241, 325, 364
   Committer.sol90.70%100%100%89.87%144, 169, 176, 222, 225–226, 230–231, 340, 369, 378–379, 388, 450, 477, 484–486, 513, 588, 599, 637, 713, 740
   Executor.sol80.34%100%100%78.30%105–107, 110, 112, 114–115, 117–118, 120, 160, 166–167, 177–179, 187, 245–246, 278, 283, 66, 84
   Getters.sol100%100%100%100%
   

@StanislavBreadless StanislavBreadless merged commit e69bb44 into draft-v31 Feb 12, 2026
26 checks passed
@StanislavBreadless StanislavBreadless deleted the vg/settlement-layer-trust-assumptions branch February 12, 2026 23:17
StanislavBreadless added a commit to matter-labs/zksync-era that referenced this pull request Feb 12, 2026
## What ❔

Uses contracts from
matter-labs/era-contracts#1993.

They add additional protections for chains migrating to and from gateway
as well as during withdrawal verification.

No new server functionality should be required.

## Why ❔

<!-- Why are these changes done? What goal do they contribute to? What
are the principles behind them? -->
<!-- The `Why` has to be clear to non-Matter Labs entities running their
own ZK Chain -->
<!-- Example: PR templates ensure PR reviewers, observers, and future
iterators are in context about the evolution of repos. -->

## Is this a breaking change?
- [ ] Yes
- [ ] No

## Operational changes
<!-- Any config changes? Any new flags? Any changes to any scripts? -->
<!-- Please add anything that non-Matter Labs entities running their own
ZK Chain may need to know -->

## Checklist

<!-- Check your PR fulfills the following items. -->
<!-- For draft PRs check the boxes as you complete them. -->

- [ ] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [ ] Tests for the changes have been added / updated.
- [ ] Documentation comments have been added / updated.
- [ ] Code has been formatted via `zkstack dev fmt` and `zkstack dev
lint`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants