fix: address review findings for anchorWidth guard (#817)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a21cf398bf
commit
aa274fd8ed
3 changed files with 68 additions and 52 deletions
|
|
@ -1,39 +1,10 @@
|
|||
diff --git a/onchain/src/LiquidityManager.sol b/onchain/src/LiquidityManager.sol
|
||||
index 0daccf9..e3a9b2f 100644
|
||||
--- a/onchain/src/LiquidityManager.sol
|
||||
+++ b/onchain/src/LiquidityManager.sol
|
||||
@@ -36,7 +36,7 @@ contract LiquidityManager is ThreePositionStrategy, PriceOracle {
|
||||
|
||||
/// @notice Maximum anchor width (in ticks) accepted from the optimizer.
|
||||
/// Any optimizer-returned value above this ceiling is silently clamped down.
|
||||
- uint24 internal constant MAX_ANCHOR_WIDTH = 100;
|
||||
diff --git a/onchain/src/abstracts/ThreePositionStrategy.sol b/onchain/src/abstracts/ThreePositionStrategy.sol
|
||||
index 0000000..0000000 100644
|
||||
--- a/onchain/src/abstracts/ThreePositionStrategy.sol
|
||||
+++ b/onchain/src/abstracts/ThreePositionStrategy.sol
|
||||
@@ -33,7 +33,7 @@
|
||||
/// @notice Maximum safe anchorWidth: ensures 34 * MAX_ANCHOR_WIDTH * TICK_SPACING / 100 fits in int24
|
||||
/// @dev With TICK_SPACING=200: 34 * 1233 * 200 = 8,384,400 ≤ int24 max (8,388,607).
|
||||
/// anchorWidth=1234 produces 8,391,200 which overflows int24 and reverts in Solidity 0.8.
|
||||
- uint24 internal constant MAX_ANCHOR_WIDTH = 1233;
|
||||
+ uint24 internal constant MAX_ANCHOR_WIDTH = type(uint24).max;
|
||||
|
||||
/// @notice Upper bound (inclusive) for scale-1 optimizer parameters: capitalInefficiency,
|
||||
/// anchorShare, and discoveryDepth. Values above this ceiling are silently clamped.
|
||||
diff --git a/onchain/src/Optimizer.sol b/onchain/src/Optimizer.sol
|
||||
index 4efa74c..a29612f 100644
|
||||
--- a/onchain/src/Optimizer.sol
|
||||
+++ b/onchain/src/Optimizer.sol
|
||||
@@ -136,7 +136,7 @@ contract Optimizer is Initializable, UUPSUpgradeable, IOptimizer {
|
||||
/// staticcall to actually receive 200 000. Callers with exactly 200–203 k
|
||||
/// gas will see a spurious bear-defaults fallback. This is not a practical
|
||||
/// concern from recenter(), which always has abundant gas.
|
||||
- uint256 internal constant CALCULATE_PARAMS_GAS_LIMIT = 200_000;
|
||||
+ uint256 internal constant CALCULATE_PARAMS_GAS_LIMIT = 500_000;
|
||||
|
||||
/**
|
||||
* @notice Initialize the Optimizer.
|
||||
diff --git a/onchain/test/FitnessEvaluator.t.sol b/onchain/test/FitnessEvaluator.t.sol
|
||||
index 9434163..5b91eca 100644
|
||||
--- a/onchain/test/FitnessEvaluator.t.sol
|
||||
+++ b/onchain/test/FitnessEvaluator.t.sol
|
||||
@@ -152,7 +152,7 @@ contract FitnessEvaluator is Test {
|
||||
/// @dev Must match Optimizer.CALCULATE_PARAMS_GAS_LIMIT. Candidates that exceed
|
||||
/// this limit would unconditionally produce bear defaults in production and
|
||||
/// are disqualified (fitness = 0) rather than scored against their theoretical output.
|
||||
- uint256 internal constant CALCULATE_PARAMS_GAS_LIMIT = 200_000;
|
||||
+ uint256 internal constant CALCULATE_PARAMS_GAS_LIMIT = 500_000;
|
||||
|
||||
/// @dev Soft gas penalty: wei deducted from fitness per gas unit used by calculateParams.
|
||||
/// Creates selection pressure toward leaner programs while keeping gas as a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue