Open
Conversation
Forge Build Sizes
🔕 Unchanged
|
♻️ Forge Gas SnapshotsSeems like you are not measuring gas of any operations yet. 🤔 |
🌈 Test ResultsNo files changed, compilation skipped
Ran 7 tests for test/GhoDirectMinter.t.sol:GHODirectMinter_Test
[PASS] test_mintAndSupply_council(uint256) (runs: 256, μ: 245260, ~: 244950)
[PASS] test_mintAndSupply_owner(uint256) (runs: 256, μ: 242959, ~: 242649)
[PASS] test_mintAndSupply_rando() (gas: 18366)
[PASS] test_transferExcessToTreasury() (gas: 919147)
[PASS] test_withdrawAndBurn_council(uint256,uint256) (runs: 256, μ: 309667, ~: 311012)
[PASS] test_withdrawAndBurn_owner(uint256,uint256) (runs: 256, μ: 305412, ~: 306757)
[PASS] test_withdrawAndBurn_rando() (gas: 18266)
Suite result: ok. 7 passed; 0 failed; 0 skipped; finished in 986.33ms (2.03s CPU time)
Ran 13 tests for test/GhoDirectMinterV4.t.sol:GHODirectMinterV4_Test
[PASS] test_mintAndSupply_council(uint256) (runs: 256, μ: 124545, ~: 124506)
[PASS] test_mintAndSupply_exceedsBucketCapacity() (gas: 98089)
[PASS] test_mintAndSupply_owner(uint256) (runs: 256, μ: 122359, ~: 122320)
[PASS] test_mintAndSupply_revertsWith_InvalidCaller() (gas: 18300)
[PASS] test_mintAndSupply_zeroAmount() (gas: 21755)
[PASS] test_setup() (gas: 80042)
[PASS] test_transferExcessToTreasury() (gas: 355290)
[PASS] test_transferExcessToTreasury_noExcess(uint256) (runs: 256, μ: 119544, ~: 119505)
[PASS] test_withdrawAndBurn_council(uint256,uint256) (runs: 256, μ: 166925, ~: 167387)
[PASS] test_withdrawAndBurn_exceedsSpokeBalance() (gas: 110547)
[PASS] test_withdrawAndBurn_owner(uint256,uint256) (runs: 256, μ: 162718, ~: 163180)
[PASS] test_withdrawAndBurn_revertsWith_InvalidCaller() (gas: 18365)
[PASS] test_withdrawAndBurn_zeroBalance() (gas: 52408)
Suite result: ok. 13 passed; 0 failed; 0 skipped; finished in 986.35ms (912.76ms CPU time)
Ran 2 test suites in 989.10ms (1.97s CPU time): 20 tests passed, 0 failed, 0 skipped (20 total tests) |
🔮 Coverage report
|
| /// @dev Constructor. | ||
| /// @param hub_ The address of the Aave v4 Hub. | ||
| /// @param gho_ The address of the GHO token. | ||
| constructor(address hub_, address gho_) { |
There was a problem hiding this comment.
What do we think about having this more flexible so it can mint GHO to multiple hubs if needed?
Is that unnecessary?
Collaborator
There was a problem hiding this comment.
while that's possible, I think we'd need to do like AIP to grant access to each, rather than allowing the same owner/guardian to supply into multiple hubs, so would need to add more granular access controls on a per-hub basis perhaps
Member
Author
There was a problem hiding this comment.
no i dont think we should mix facilitator capacities also
yan-man
reviewed
Mar 3, 2026
yan-man
reviewed
Mar 3, 2026
yan-man
reviewed
Mar 3, 2026
yan-man
reviewed
Mar 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add GhoDirectMinterV4, a GHO facilitator that injects (mints) and removes (burns) GHO from an Aave v4 Hub. The minter is expected to be registered as a spoke on the Hub with infinite addCap. mintAndSupply mints GHO and adds it as liquidity to the Hub, withdrawAndBurn removes GHO liquidity and burns it, and transferExcessToTreasury transfers excess interest (added shares above the facilitator bucket level) to the Hub's fee receiver.