Skip to content

Add script to generate pool booster safe transactions#2824

Open
clement-ux wants to merge 3 commits intomasterfrom
clement/script-generate-pool-booster-safe
Open

Add script to generate pool booster safe transactions#2824
clement-ux wants to merge 3 commits intomasterfrom
clement/script-generate-pool-booster-safe

Conversation

@clement-ux
Copy link
Copy Markdown
Collaborator

@clement-ux clement-ux commented Mar 3, 2026

This pull request introduces a new script, generate-pool-booster-safe.sh, designed to automate the generation of Safe Transaction Builder JSON files for deploying Curve Pool Booster contracts and delegating yield. The script validates user input, verifies gauge registration, computes necessary parameters, and outputs a structured JSON transaction bundle suitable for Safe multisig execution.

The most important changes are:

Addition of deployment automation script:

  • Added generate-pool-booster-safe.sh, a Bash script for generating Safe Transaction Builder JSON to deploy CurvePoolBoosterPlain contracts and delegate yield for specified gauges. The script accepts multiple command-line options and validates all required arguments.

Validation and verification logic:

  • Implements logic to fetch all registered gauges from the on-chain gauge controller and verifies that all provided gauge addresses are registered, ensuring only valid gauges are processed.

Transaction building and output:

  • Constructs transaction objects for both the pool booster creation and the yield delegation, assembling them into a single JSON output compatible with the Safe Transaction Builder.
  • Dynamically computes unique salts for each deployment using the factory address and a timestamp-based counter, and calculates the expected booster contract address for each gauge.

User experience and safety:

  • Provides clear usage documentation, error messages, and cleans up temporary files on exit, making the script robust and

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 3, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.95%. Comparing base (6b7393d) to head (ad151d1).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2824   +/-   ##
=======================================
  Coverage   44.95%   44.95%           
=======================================
  Files         106      106           
  Lines        4585     4585           
  Branches     1250     1250           
=======================================
  Hits         2061     2061           
  Misses       2521     2521           
  Partials        3        3           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Collaborator

@naddison36 naddison36 left a comment

Choose a reason for hiding this comment

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

I would have done this using a Hardhat task rather than a bash script for these reasons:
Hard coded addresses rather than reusing addresses in a common file.
Hardhat has CLI infrastructure that helps a lot of the user input validation.
I recently moved Safe file generation out into a js utils file in contracts/utils/safe.js

No need to redo it. But we should have a discussion about what we want to build CLIs in moving forward. I'm not fixed on Hardhat. A js cli package like commander would work just as well. Foundry scripts are also a good option if there's not much off-chain logic.

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