Skip to content

Conversation

@matthias-wright
Copy link
Collaborator

This upgrades commonware to 0.0.63 (actually a bit newer commonwarexyz/monorepo@f395c9e).
This updates adds support for dynamic validator sets, switches to the bls12381 multisig signing scheme for simplex, and also includes the consensus refactor commonwarexyz/monorepo#1824.

Major changes:

  • The biggest change is the addition of the orchestrator, which manages the epoch-specific Simplex instances. Prior to this change, there was only a single Simplex instance, that was continuously running. Now each epoch has it's own Simplex instance (and potentially a different set of validators).
  • Switched to bls12381 multisig signing scheme for Simplex. This means that validators running summit will now have two private keys: the node private key (ed25519) and the consensus private key (bls12381). The node key is used for networking, and the consensus key is used for signing consensus messages within Simplex. The node public key (ed25519) also serves as the main identifier. This key is used to query the validator balance on the consensus state.
  • Introduces a key store to houses both node keys.
  • Updates the execution request types and execution request processing in the finalizer to account for the added BLS key. The BLS key along with its signature was added to the deposit contract.
  • The syncer updated with the recent changes to marshal. However, there are a few key differences between summit's syncer and marshal. The syncer is doesn't write the last_processed_height or last_processed_round to disk. On startup, it receives this information from the consensus state (which either comes from a checkpoint, the finalizer DB, or is initialized when the network starts from a clean state). The other main difference is that the syncer will send the finalized block together with the finalization for the last block of an epoch. This is because the finalization (validator signatures) are attesting to the checkpoint hash at the end of an epoch. These signatures are stored and can be used to validate a loaded checkpoint back to a trusted genesis state.
  • The validator management was rewritten. The registry was removed entirely. At the end of an epoch, the finalizer will send the new list of validators for the next epoch to the orchestrator. The orchestrator will start the new Simplex instance with this list of validators.
  • Updates the block verification logic to handle the edge case where Reth rejects a block that was finalized by Simplex.

matthias-wright and others added 28 commits November 18, 2025 20:33
@matthias-wright matthias-wright merged commit 6202198 into main Nov 19, 2025
4 checks passed
@matthias-wright matthias-wright deleted the m/upgrade-commonware-0.0.63 branch November 19, 2025 15:10
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