github agglayer/aggkit v0.7.0-beta3

latest releases: v0.12.0-rc2, v0.12.0-rc1, v0.11.1...
pre-release13 months ago

🔄 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 inFEP` network.
[AggSender]
RequireCommitteeMembershipCheck = false

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

What's Changed

Full Changelog: v0.7.0-beta2...v0.7.0-beta3

Don't miss a new aggkit release

NewReleases is sending notifications on new releases.