Skip to content

deploy: v6.0.0 Groth16 & Plonk verifiers on 18 chains#72

Merged
fakedev9999 merged 14 commits intomainfrom
fakedev9999/deploy-v6
Feb 24, 2026
Merged

deploy: v6.0.0 Groth16 & Plonk verifiers on 18 chains#72
fakedev9999 merged 14 commits intomainfrom
fakedev9999/deploy-v6

Conversation

@fakedev9999
Copy link
Member

@fakedev9999 fakedev9999 commented Feb 16, 2026

Summary

Deployed Addresses (all 18 chains)

  • Groth16: 0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508
  • Plonk: 0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C

Route Registration

Phase 2 (route registration) instructions in cloud-ops runbook:
https://github.com/succinctlabs/cloud-ops/pull/2

…ration (#61)

Replace unconditional gateway.addRoute() call with env-var-controlled
conditional. This allows the same script to work for both:
- Multisig deployments (default): REGISTER_ROUTE unset/false, route added via Safe UI
- Direct deployments: REGISTER_ROUTE=true, route added during script execution

The gateway.addRoute() function has onlyOwner modifier, so when the gateway
owner is a multisig and the deployer is an EOA, the call would revert.
This change prevents deployment failures without requiring code modifications.
* feat: add Safe Transaction Builder JSON generator

Adds a Node.js script to generate Safe Transaction Builder JSON files
for registering verifier routes via multisig. This eliminates manual
copy/paste errors when executing Phase 2 (multisig) deployments.

Usage:
  node script/utils/generate-safe-batch.js --chain=all --version=v6.0.0-beta.1

Features:
- Generates JSON files compatible with Safe UI Transaction Builder
- Reads gateway addresses and verifier addresses from deployment files
- Supports all 5 mainnet chains (Ethereum, Optimism, Arbitrum, Base, Scroll)
- Handles version string conversion (v6.0.0-beta.1 -> V6_0_0_BETA_1)
- Encodes addRoute(address) calldata with correct function selector
- Includes ABI metadata for transaction decoding in Safe UI

* refactor: code quality improvements for generate-safe-batch.js

- Compact: single regex in versionToKey, reuse for filename generation
- Concise: inline object literals, simplified arg parsing
- Clean: condensed JSDoc to single-line comments, consistent error indentation
- Capable: added chain ID validation, JSON parse error handling, verifier loop

* chore: remove slop from generate-safe-batch.js (200→102 lines)

* fix: read available chains from deployments directory
- Add missing CHAINS= env var to all deployment commands
- Update version references from v3.0.0 to v6.0.0-beta.1
- Add source .env requirement (multichain modifier reads env vars directly)
- Document that --rpc-url flag is ignored by multichain modifier
- Add CREATE2_SALT collision warning for gateway deployments
- Document REGISTER_ROUTE env var and multisig workflow
- Reference Safe Transaction Builder JSON generator
- Fix typo in remappings.txt instruction
- Remove hardcoded verifier address from example
- Add Tempo chain config (4217.json)
- Add CREATE2_SALT to Monad, X Layer, MegaETH, Plasma, Hoodi deployment files
- Add BSC and Tempo to foundry.toml (RPC + etherscan)
- Update generate-safe-batch.js: v6.0.0 default, freeze support, testnet chains
Remove Holesky (chain ID 17000) from:
- generate-safe-batch.js testnet chains
- foundry.toml RPC and etherscan configs
- .env.example
Add RPC, etherscan API key, and etherscan API URL entries for
Hoodi, BSC, Monad, X Layer, MegaETH, Plasma, and Tempo.
Replace 36 per-chain ETHERSCAN_API_KEY_*/ETHERSCAN_API_URL_* env vars
and 18 per-chain foundry.toml entries with Etherscan V2 endpoints that
use a single API key. X Layer uses OKLINK_API_KEY, Tempo uses Sourcify.

Also removes exposed Tempo credentials from .env.example.
The Tempo Sourcify endpoint requires the root URL with trailing slash
(https://contracts.tempo.xyz/), not /api. Forge concatenates paths like
{url}v2/contract/... so /api produced /apiv2/contract/... (broken).
…ication

- HANDOFF-v6-routes.md: step-by-step guide for Phase 2a (10 multisig
  chains via Safe TX Builder) and Phase 2b (8 ledger chains via cast)
- check-routes.sh: pre/post-flight verification of all 36 routes
- generate-safe-batch.js: add Safe TX Builder checksum (keccak256)
- 10 pre-generated Safe batch JSONs with valid checksums
Tenderly simulation revealed testnet gateways are EOA-owned, not
multisig-owned. Remove 5 testnet Safe batches, keep only mainnet
batches, and move testnets to Phase 2b (ledger) in handoff guide.
PR #73 corrected DELTA_NEG_* constants in Groth16Verifier.sol, which
changes the CREATE2 address. Update all artifacts to the new address:

- 18 deployment JSONs: V6_0_0_SP1_VERIFIER_GROTH16 → 0x99A74A05...
- check-routes.sh: V6_GROTH16 address
- HANDOFF-v6-routes.md: all addRoute commands and references
- 5 Safe batch JSONs: regenerated via generate-safe-batch.js
@fakedev9999 fakedev9999 force-pushed the fakedev9999/deploy-v6 branch from 0205972 to a7bb13c Compare February 18, 2026 01:14
@fakedev9999
Copy link
Member Author

Updated: Groth16 verifier address corrected

PR #73 fixed incorrect DELTA_NEG_* constants in Groth16Verifier.sol. Since CREATE2 is used, corrected bytecode → new address.

Old Groth16 address (pre-fix): 0xEfe0156fe9C4013Dfd3F5D0BFa8dF01B28843e0f
New Groth16 address (post-fix): 0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508
Plonk address (unchanged): 0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C

All 18 chains redeployed and verified. This push updates:

  • 18 deployments/*.json files
  • check-routes.sh (V6_GROTH16 address)
  • HANDOFF-v6-routes.md (all addRoute commands)
  • 5 Safe batch JSONs (regenerated)

Branch was also rebased onto main (which now includes the PR #73 merge).

- Remove HANDOFF-v6-routes.md — 100% subset of cloud-ops runbook (PR #2)
- Add .DS_Store to .gitignore
- Delete temp scripts (check-balances.sh, test-rpcs.sh)
@fakedev9999 fakedev9999 changed the title deploy: v6.0.0 verifiers + route registration handoff deploy: v6.0.0 Groth16 & Plonk verifiers on 18 chains Feb 19, 2026
@fakedev9999 fakedev9999 merged commit 22c4a47 into main Feb 24, 2026
1 check passed
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.

2 participants