Skip to content

feat: add L2 deployment addresses and propagate-fees CLI command#127

Merged
marktoda merged 1 commit intomainfrom
feat/proposal-2-deployments
Mar 4, 2026
Merged

feat: add L2 deployment addresses and propagate-fees CLI command#127
marktoda merged 1 commit intomainfrom
feat/proposal-2-deployments

Conversation

@marktoda
Copy link
Contributor

@marktoda marktoda commented Feb 20, 2026


✨ Claude-Generated Content

Summary

Adds deployed contract addresses for mainnet V3OpenFeeAdapter and 8 L2 chains to README documentation, with supporting deployment script and a new CLI command for propagating protocol fees.

Changes

Documentation:

  • Add V3OpenFeeAdapter address (0xf2371551Fe3937Db7c750f4DfABe5c2fFFdcBf5A) to Ethereum Mainnet section
  • Add deployment addresses for 8 L2 chains with block explorer links:
    • World Chain (480): Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • Soneium (1868): CrossChainAccount, Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • Celo (42220): CrossChainAccount, Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • Zora (7777777): Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • X Layer (196): CrossChainAccount, Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • Arbitrum One (42161): Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • OP Mainnet (10): Deployer, TokenJar, Releaser, V3OpenFeeAdapter
    • Base (8453): Deployer, TokenJar, Releaser, V3OpenFeeAdapter
      Deployment Scripts:
  • Add script/DeployV3OpenMainnet.s.sol for V3OpenFeeAdapter deployment
  • Fix V3OpenMainnetDeployer.sol to set global default fee during deployment
    CLI Tooling:
  • Rename CLI from merkle-generator to protocol-fees
  • Add propagate-fees command for discovering V3 pools and batch-updating protocol fees via V3OpenFeeAdapter
  • Add merkle-generator/src/abi.ts with minimal contract ABIs
  • Add merkle-generator/src/propagate-fees.ts implementing pool discovery, fee checking, and batch execution
  • Add unit tests for propagate-fees functionality

Notes

  • Soneium, Celo, and X Layer include CrossChainAccount contracts for L2 governance
  • The propagate-fees command scans PoolCreated events, checks current vs expected fees, and batch-updates pools with incorrect fees
  • Markdown formatting fixes applied to README tables

@github-actions
Copy link

github-actions bot commented Feb 20, 2026

🤖 Claude Code Review

Review still valid — No new code changes detected since the last review.

💡 To force a fresh review, add a comment containing @request-claude-review.

Summary

This PR adds:

  1. A new CLI command propagate-fees to discover V3 pools and batch-update their protocol fees via V3OpenFeeAdapter
  2. A deployment script for mainnet V3OpenFeeAdapter
  3. README updates with deployment addresses for multiple chains
  4. Minor package renaming from merkle-generator to protocol-fees

The implementation is well-structured with good test coverage and clean separation of concerns.

Observations

Security Note

The --private-key flag in the CLI command (merkle-generator/src/cli.ts:400) accepts keys directly on the command line. This is functional but worth noting that command-line arguments can appear in shell history and process listings. For production use, consider supporting environment variables or file-based key loading in the future.

Deployer Script

The DeployV3OpenMainnet.s.sol deployment script looks straightforward. The V3OpenMainnetDeployer constructor now correctly sets both the global defaultFee and the per-tier defaults, ensuring pools have a fallback fee regardless of their tier.

TypeScript Implementation

The propagate-fees.ts implementation is clean:

  • Pool discovery uses chunked event scanning
  • Sequential pool checking with proper uninitialized pool handling
  • Batch transaction execution with wait-for-receipt between batches
  • Tests cover the core functions adequately

Minor Observations

  • The default batchSize of 500 pools per transaction is reasonable for gas limits
  • The checkFees function processes pools sequentially - this could be slow for chains with thousands of pools, but is acceptable for a CLI tool
  • Test coverage is focused on unit tests with mocks, which is appropriate for this functionality

💡 Want a fresh review? Add a comment containing @request-claude-review to trigger a new review at any time.

github-actions[bot]
github-actions bot previously approved these changes Feb 20, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

@github-actions github-actions bot dismissed their stale review February 20, 2026 22:36

Superseded by new review after PR update

github-actions[bot]
github-actions bot previously approved these changes Feb 20, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

@github-actions github-actions bot dismissed their stale review February 23, 2026 15:15

Superseded by new review after PR update

github-actions[bot]
github-actions bot previously approved these changes Feb 23, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

@github-actions github-actions bot dismissed their stale review February 23, 2026 22:27

Superseded by new review after PR update

github-actions[bot]
github-actions bot previously approved these changes Feb 23, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

Base automatically changed from deploy-opstack to main March 3, 2026 15:21
@ccashwell ccashwell dismissed github-actions[bot]’s stale review March 3, 2026 15:21

The base branch was changed.

github-actions[bot]
github-actions bot previously approved these changes Mar 3, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

@github-actions github-actions bot changed the title feat: add deployment addresses feat: add L2 deployment addresses and propagate-fees CLI command Mar 3, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: APPROVE

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

@marktoda marktoda force-pushed the feat/proposal-2-deployments branch from e56faec to fcc9095 Compare March 3, 2026 20:30
@ccashwell ccashwell self-requested a review March 4, 2026 00:33
feat: Deploy V3 Open Mainnet

feat: redeploy mainnet open fees

chore: rename merkle-generator to protocol-fees

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

feat: add minimal contract ABIs for fee propagation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

feat: add pool discovery, fee checking, and batch execution

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

feat: wire up propagate-fees CLI command

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

fix: fmt
@marktoda marktoda force-pushed the feat/proposal-2-deployments branch from fcc9095 to 62c74e2 Compare March 4, 2026 01:02
@marktoda marktoda merged commit 8713bb9 into main Mar 4, 2026
7 checks passed
@ccashwell ccashwell deleted the feat/proposal-2-deployments branch March 4, 2026 16:33
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