Skip to content

feat(test-suite): add multi-chain e2e testing infrastructure#2135

Open
PanGan21 wants to merge 13 commits intomainfrom
panos/e2e-multi-chain
Open

feat(test-suite): add multi-chain e2e testing infrastructure#2135
PanGan21 wants to merge 13 commits intomainfrom
panos/e2e-multi-chain

Conversation

@PanGan21
Copy link
Contributor

@PanGan21 PanGan21 commented Mar 19, 2026

Summary

  • Add multi-chain deploy support (--multi-chain flag) that spins up a second host chain (Chain B) using parameterized docker compose files
  • Register Chain B in the coprocessor host_chains table and restart the zkproof-worker so it can resolve Chain B's ACL address
  • Add 7 multi-chain state isolation e2e tests: ciphertext handle isolation, ACL permission isolation, block reorg isolation, chain halt isolation, simultaneous decryption, random number independence, and cross-chain user input
  • Propagate KMS signer address to Chain B host-sc env files

Closes: https://github.com/zama-ai/fhevm-internal/issues/1163

@cla-bot cla-bot bot added the cla-signed label Mar 19, 2026
@PanGan21
Copy link
Contributor Author

@PanGan21 PanGan21 marked this pull request as ready for review March 20, 2026 11:57
@PanGan21 PanGan21 requested a review from a team as a code owner March 20, 2026 11:57
@PanGan21 PanGan21 requested a review from tawadaa March 20, 2026 12:09
@PanGan21
Copy link
Contributor Author

Old single chain e2e tests still pass: https://github.com/zama-ai/fhevm/actions/runs/23341768810/job/67896862476

@antoniupop
Copy link
Collaborator

Does this work with multi-chain and multi-copro? It looks like it would just set up multi-chain in one coprocessor no? run_additional_coprocessor_instance won't register this additional chain.

Also not sure why the name cleanup_single_step (of course was there, not added in this PR - thought this was actually cleanup at first.

@PanGan21
Copy link
Contributor Author

Does this work with multi-chain and multi-copro? It looks like it would just set up multi-chain in one coprocessor no? run_additional_coprocessor_instance won't register this additional chain.

Also not sure why the name cleanup_single_step (of course was there, not added in this PR - thought this was actually cleanup at first.

Good catch. Currently --multi-chain only registers Chain B in the primary coprocessor's database and only starts Chain B host-listeners for the primary instance. I will address this by making it work with multi coprocessor setup and renaming cleanup_single_step to something more meaningful.

Just to clarify multi chain doesn't necessarily mean multi coprocessor right? The infrastructure can be one coprocessor with a host listener for each chain or multiple coprocessors and each one with a host listener for each chain. Is this correct?

@antoniupop
Copy link
Collaborator

Just to clarify multi chain doesn't necessarily mean multi coprocessor right? The infrastructure can be one coprocessor with a host listener for each chain or multiple coprocessors and each one with a host listener for each chain. Is this correct?

Absolutely - multi-copro is for security (run multiple instances and validate consensus e.g. 3 out of 5) and is orthogonal to multi-chain. Each copro has its own listeners for each chain (they're completely independent)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants