Skip to content

Conversation

@Stefan-Ethernal
Copy link
Contributor

@Stefan-Ethernal Stefan-Ethernal commented Sep 18, 2025

πŸ”„ Changes Summary

Fix the PP multi chains E2E tests (2 chains):

  • remove setting gas-price explicitly when claiming
  • remove sending legacy transactions for bridges and claims

⚠️ Breaking Changes

  • πŸ› οΈ Config: N/A
  • πŸ”Œ API/CLI: N/A
  • πŸ—‘οΈ Deprecated Features: N/A

πŸ“‹ Config Updates

  • 🧾 Diff/Config snippet: [Optional: Enumerate config changes/provide snippet of changes]

βœ… Testing

  • πŸ€– Automatic: Make sure Multi chains E2E test (2 chains) are 🟒
  • πŸ–±οΈ Manual: N/A

🐞 Issues

@Stefan-Ethernal Stefan-Ethernal force-pushed the fix/e2e-pp-multi-chains branch 4 times, most recently from 0cc4f9e to f2c73e7 Compare September 22, 2025 07:52
@Stefan-Ethernal Stefan-Ethernal changed the title fix: multi chains PP e2e tests fix: multi chains pessimistic proof e2e tests Sep 22, 2025
@Stefan-Ethernal Stefan-Ethernal self-assigned this Sep 22, 2025
@Stefan-Ethernal Stefan-Ethernal marked this pull request as ready for review September 22, 2025 09:32
@Stefan-Ethernal Stefan-Ethernal requested a review from a team September 22, 2025 09:32
name: Notify Slack
needs:
- test-single-l2-network-fork12-pessimistic
- test-single-l2-network-op-pessimistic
Copy link
Contributor

Choose a reason for hiding this comment

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

are we replacing cdk with op?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

To provide you with the context:

  • we are deprecating the PolygonPessimisticConsensus (and all the legacy rollup implementations AFAIK), in favor of AggchainECDSAMultisig (PP certificates) and AggchainFEP (FEP certificates),
  • kurtosis cdk was not supporting the cdk erigon as the L2, up until two days ago, and the op-stack was the only option we had for running pessimistic proofs (that's why we have chosen to integrate this part into the CI first). After this PR, I'm going to start integrating the cdk erigon path as well,
  • probably it is enough to have only single chain tests running against the cdk erigon setup. IMO it is better that way, because op-stack acts as the vanilla client.

},
"args": {
"consensus_contract_type": "ecdsa_multisig",
"use_agg_sender_validator": true,
Copy link
Contributor

Choose a reason for hiding this comment

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

why are we always using aggsender validator?

Copy link
Contributor

Choose a reason for hiding this comment

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

also, should the filename change?

Copy link
Contributor

Choose a reason for hiding this comment

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

maybe add a new case with aggsender validator and leave the old as it is?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

why are we always using aggsender validator?

This is the preferred option, as the most likely it is going to be like that in the production. For sure we can use the single signer as well, but that is more like a special case, rather than the general rule.

also, should the filename change?

Sure, I can consider it, although maybe would leave it when I integrate the cdk erigon setup. Any ideas?

maybe add a new case with aggsender validator and leave the old as it is?

To me we can do the opposite, as having the single signer is not considered as a safe option, so therefore we can consider adding a path to test it without the validators (although it is just a subset of what we currently have: if this more complex setup works, chances are the "single signer" setup would work as well).

Copy link
Contributor

@goran-ethernal goran-ethernal left a comment

Choose a reason for hiding this comment

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

I agree with @temaniarpit27 , maybe we should rename the file to be more precise.

@sonarqubecloud
Copy link

@Stefan-Ethernal Stefan-Ethernal changed the title fix: multi chains pessimistic proof e2e tests fix: multi chains (2 chains) pessimistic proof e2e tests Sep 22, 2025
@Stefan-Ethernal Stefan-Ethernal merged commit dc18d45 into feat/aggsender-multisig Sep 22, 2025
23 of 24 checks passed
@Stefan-Ethernal Stefan-Ethernal deleted the fix/e2e-pp-multi-chains branch September 22, 2025 16:11
Stefan-Ethernal added a commit that referenced this pull request Oct 10, 2025
## πŸ”„ Changes Summary

Enable the AggSender to work with multiple validator nodes in a
committee-based validation system. The implementation includes validator
services, multisig committee management, certificate validation
improvements, and enhanced gRPC communication protocols.

**Multisig Committee Support:** 
- Added `MultisigCommittee` type to manage signer sets and enforce
signature thresholds.
- Signers are represented as `SignerInfo` structs with both address and
URL for improved context and error reporting.
- Committee construction validates non-empty membership and non-zero
threshold, preventing misconfiguration.
- Dynamic signer management: methods for adding signers, duplicate
checks by address and URL.

**Aggsender Validator Refactor:**
- The Aggsender certificate validation flow was refactored to integrate
multisig logic.
- The multisig validation logic is applicable to both `PP` and `FEP`
certificates.
- Certificate validation now checks for contiguous certificates, last L2
block, and settlement status using new queries.
- Import bridge exit proof verification is handled via new logic using
`verifyClaimProofs`, ensuring only valid proofs pass.

**Certificate Metadata removal:**
- It is gone from the agglayer and therefore it is not sent anymore from
the aggsender either.
- Only thing worth noting is that, when calculating `CertificateID`,
instead of metadata field, which was used previously, we now use
`ZeroHash`.

**Smart contracts integration:**
- **AggchainFEP contract:** Removed querying of `TrustedSequencer`
address and rely on the signers committee instead
- **AggchainBase contract:** Retrieve the multisig committee from the
`AggchainBase` contract

**Agglayer integration:**
- Invoke the `GetNetworkState` API from agglayer to get the latest
settled imported bridge exit info.
- Multisig is populated into the certificate and sent to the Agglayer's
`SendCertificate` gRPC endpoint

## ⚠️ Breaking Changes
- πŸ› οΈ **Config**: Make sure that `Mode` on the `Validator` and
`AggSender` are the same.
- πŸ”Œ **API/CLI**: `aggkit` version (`v0.7.0`) that supports `multisig`
will now require updated contracts to run. At least version
`v12.1.0-rc.3` of `agglayer-contracts`, and a new version of `agglayer`
which supports `multisig`, which is the `v0.4.0` of `agglayer`.
- πŸ—‘οΈ **Deprecated Features**: Aggsender Phase II validator signing logic

## πŸ“‹ Config Updates
- Added `AggSender.RequireCommitteeMembershipCheck = false` parameter,
which defines if a check on `aggsender proposer` startup will be
performed to see if the proposer is in the `multisig` committee.
- Added `Validator.RequireCommitteeMembershipCheck =
{{AggSender.RequireCommitteeMembershipCheck}}` parameter, which defines
if a check on `aggsender validator` startup will be performed to see if
the validator is in the `multisig` committee.
- Added `Validator.Mode = "PessimisticProof"` parameter, which acts the
same as the `AggSender.Mode`. It tells the validator that the network is
a `PP` network or an `FEP` network. It has to be the same as on
`aggsender proposer`.
- Added `Validator.FEPConfig.SovereignRollupAddr =
"{{AggSender.SovereignRollupAddr}}" parameter which is the address of
the `AggchainFEP` rollup on L1 for given network for which validator is
running.
- Added `Validator.FEPConfig.RequireNoBlockGap =
{{AggSender.RequireNoFEPBlockGap}}, which acts the same as the given
paremeter on `AggSender` (proposer) config, and tells the validator if
gaps in blocks in certificates are allowed in `FEP` network.

```toml
[AggSender]
RequireCommitteeMembershipCheck = false

[Validator]
# PessimisticProof or AggchainProof
Mode = "PessimisticProof"
RequireCommitteeMembershipCheck = {{AggSender.RequireCommitteeMembershipCheck}}
[Validator.FEPConfig]
	SovereignRollupAddr = "{{AggSender.SovereignRollupAddr}}"
	RequireNoBlockGap = "{{AggSender.RequireNoFEPBlockGap}}"
```

## βœ… Testing
- πŸ€– **Automatic**: `aggkit` CI
- πŸ–±οΈ **Manual**: [Optional: Steps to verify]

## 🐞 Issues
- Closes #792 
## πŸ”— Related PRs
- #814
- #832
- #838
- #839
- #843
- #842
- #846
- #858
- #847
- #865
- #861
- #863
- #875
- #876
- #881
- #877
- #898
- #920
- #913
- #926
- #945
- #951
- #954
- #957
- #955
- #974
- #978
- #985
- #989
- #984
- #998
- #1017
- #1028
- #1034
- #1024
- #1052
- #1067
- #1068
- #1050
- #1071
- #1072
- #1060
- #1087
- #1077
- #1073

---------

Co-authored-by: Goran Rojovic <[email protected]>
Co-authored-by: Goran Rojovic <[email protected]>
Co-authored-by: Joan Esteban <[email protected]>
Co-authored-by: Rachit Sonthalia <[email protected]>
Co-authored-by: Arpit Temani <[email protected]>
Co-authored-by: Copilot <[email protected]>
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.

5 participants