Skip to content

Conversation

@ludamad
Copy link
Collaborator

@ludamad ludamad commented Nov 26, 2025

Consolidate network upgrade and contract deployment infrastructure by adopting forge scripts from the ignition-monorepo as the primary deployment method. This addresses configuration errors and clarity around deployment responsibilities by establishing a single, robust deployment path. Design and document the new infrastructure, including how contract code will be organized, e2e test integration, and command interfaces for running network upgrades.

ludamad and others added 6 commits November 26, 2025 20:12
Design documents for consolidating L1 contract deployment around Forge
scripts, replacing the current TypeScript deploy_l1_contracts.ts
infrastructure.

Key decisions:
- Forge scripts will live in l1-contracts/script/deploy/
- TypeScript becomes thin wrapper calling forge script
- E2E tests maintained via backwards-compatible API
- Phased rollout with fallback to existing implementation

Documents include:
- NETWORK_UPGRADE_INFRASTRUCTURE_CONSOLIDATION.md: Overall design
- NETWORK_UPGRADE_IMPLEMENTATION_ROADMAP.md: Detailed phases

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Implements Forge deployment scripts following the ignition-monorepo pattern:

- Add DeployL1Contracts.s.sol for full L1 deployment via Forge
- Add DeployRollupForUpgrade.s.sol for network upgrade deployments
- Add configuration system (BaseConfiguration, DevnetConfiguration)
- Add TypeScript wrapper (forge_deploy.ts) for yarn-project integration

Key fixes:
- Use FOUNDRY_PROFILE=production to avoid mock BlobLib cheatcode issues
- Use --force flag for clean recompilation with production profile
- Fix slashingOffsetInRounds default from 0 to 2

The Forge deployment outputs JSON with contract addresses that maps to
the existing L1ContractAddresses TypeScript type.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Merge forge_deploy.ts into deploy_l1_contracts.ts
- Remove separate forge_deploy.ts file
- Make Forge-based deployment the default
- Simplify setup_l1_contracts.ts to only use Forge
- Update CLI and local-network to use new unified API
- Add --non-interactive flag to Forge commands for programmatic execution

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…racts

Removes the alias and directly names the function deployL1Contracts
as the main entry point for L1 contract deployment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@ludamad ludamad force-pushed the ad/feat/consolidate-network-upgrade-infrastructure branch from 9ff27f7 to 1a8d444 Compare November 28, 2025 14:24
Add feeJuicePortalInitialBalance parameter to fund the fee juice portal
during Forge-based L1 deployments. This enables e2e tests to work
correctly by ensuring accounts can be funded with fee juice.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@ludamad ludamad marked this pull request as ready for review November 28, 2025 19:53
@ludamad ludamad marked this pull request as draft November 28, 2025 20: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.

2 participants