From a76d3937ddb5af304feb7f906ec4346951096af5 Mon Sep 17 00:00:00 2001 From: johba Date: Mon, 23 Mar 2026 09:51:46 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20bundled=20dust=20cleanup=20=E2=80=94=20o?= =?UTF-8?q?nchain=20source=20quality=20(#1134)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix misleading taxRate comment in AttackRunner.s.sol (index into TAX_RATES[], not raw rate) - Clarify _validatePriceMovement NatSpec return doc in PriceOracle.sol - Remove redundant double-cast uint256(uint256(...)) in OptimizerV3Push3Lib.sol - Add Basescan URL source comments for SWAP_ROUTER and WETH addresses Co-Authored-By: Claude Opus 4.6 (1M context) --- onchain/script/backtesting/AttackRunner.s.sol | 4 +++- onchain/src/OptimizerV3Push3Lib.sol | 4 ++-- onchain/src/abstracts/PriceOracle.sol | 2 +- onchain/test/FitnessEvaluator.t.sol | 2 ++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/onchain/script/backtesting/AttackRunner.s.sol b/onchain/script/backtesting/AttackRunner.s.sol index cca791c..60d5ecb 100644 --- a/onchain/script/backtesting/AttackRunner.s.sol +++ b/onchain/script/backtesting/AttackRunner.s.sol @@ -49,7 +49,7 @@ interface IOptimizer { } interface IStake { - // taxRate matches the actual Stake.sol parameter name (a raw rate value, not a lookup index) + // taxRate is an index into the Stake.sol TAX_RATES[] array, not a raw rate value function snatch(uint256 assets, address receiver, uint32 taxRate, uint256[] calldata positionsToSnatch) external returns (uint256 positionId); function exitPosition(uint256 positionId) external; } @@ -150,7 +150,9 @@ contract AttackRunner is Script { // ─── Protocol constants (local Anvil deployment) ────────────────────────── uint24 internal constant POOL_FEE = 10_000; + // Base mainnet WETH — https://basescan.org/address/0x4200000000000000000000000000000000000006 address internal constant WETH = 0x4200000000000000000000000000000000000006; + // Base mainnet SwapRouter02 — https://basescan.org/address/0x2626664c2603336E57B271c5C0b26F421741e481 address internal constant DEFAULT_SWAP_ROUTER = 0x2626664c2603336E57B271c5C0b26F421741e481; address internal constant DEFAULT_NPM_ADDR = 0x03a520B32c04bf3beef7BEb72E919cF822Ed34F3; address internal constant DEFAULT_V3_FACTORY = 0x33128a8fC17869897dcE68Ed026d694621f6FDfD; // Base mainnet diff --git a/onchain/src/OptimizerV3Push3Lib.sol b/onchain/src/OptimizerV3Push3Lib.sol index 0a7f870..59a9510 100644 --- a/onchain/src/OptimizerV3Push3Lib.sol +++ b/onchain/src/OptimizerV3Push3Lib.sol @@ -26,8 +26,8 @@ library OptimizerV3Push3Lib { require(inputs[k].mantissa <= 1e18, "mantissa overflow"); } - uint256 percentagestaked = uint256(uint256(inputs[0].mantissa)); - uint256 taxrate = uint256(uint256(inputs[1].mantissa)); + uint256 percentagestaked = uint256(inputs[0].mantissa); + uint256 taxrate = uint256(inputs[1].mantissa); uint256 staked = uint256(((percentagestaked * 100) / 1_000_000_000_000_000_000)); uint256 r37; uint256 r38; diff --git a/onchain/src/abstracts/PriceOracle.sol b/onchain/src/abstracts/PriceOracle.sol index 2645d29..4195576 100644 --- a/onchain/src/abstracts/PriceOracle.sol +++ b/onchain/src/abstracts/PriceOracle.sol @@ -62,7 +62,7 @@ abstract contract PriceOracle { /// @param centerTick The center tick of the anchor position /// @param tickSpacing The tick spacing for minimum amplitude calculation /// @param token0isWeth Whether token0 is WETH (affects price direction logic) - /// @return isUp True if price moved up (relative to token ordering) + /// @return isUp True if ETH price moved up (WETH appreciating vs KRK); accounts for token0isWeth ordering /// @return isEnough True if movement amplitude is sufficient for recentering function _validatePriceMovement(int24 currentTick, int24 centerTick, int24 tickSpacing, bool token0isWeth) internal diff --git a/onchain/test/FitnessEvaluator.t.sol b/onchain/test/FitnessEvaluator.t.sol index 15d2a85..7bf076a 100644 --- a/onchain/test/FitnessEvaluator.t.sol +++ b/onchain/test/FitnessEvaluator.t.sol @@ -137,7 +137,9 @@ contract FitnessEvaluator is Test { // ─── Base network constants ─────────────────────────────────────────────── uint24 internal constant POOL_FEE = 10_000; + // Base mainnet WETH — https://basescan.org/address/0x4200000000000000000000000000000000000006 address internal constant WETH_ADDR = 0x4200000000000000000000000000000000000006; + // Base mainnet SwapRouter02 — https://basescan.org/address/0x2626664c2603336E57B271c5C0b26F421741e481 address internal constant SWAP_ROUTER = 0x2626664c2603336E57B271c5C0b26F421741e481; // Base mainnet NonfungiblePositionManager — https://basescan.org/address/0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1 address internal constant NPM_ADDR = 0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1;