From 685d8746eff142b2acd25504045139d8ae51b0c4 Mon Sep 17 00:00:00 2001 From: Ishant5436 Date: Wed, 17 Jun 2026 17:09:09 +0530 Subject: [PATCH 1/3] fix: prevent reward dilution via zero sharesReward harvest --- contracts/StakedEXA.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/StakedEXA.sol b/contracts/StakedEXA.sol index 47d9764c4..7947ed7bf 100644 --- a/contracts/StakedEXA.sol +++ b/contracts/StakedEXA.sol @@ -349,6 +349,7 @@ contract StakedEXA is address memProvider = provider; uint256 shares = Math.min(memMarket.allowance(memProvider, address(this)), memMarket.maxRedeem(memProvider)); uint256 sharesReward = shares.mulWadDown(providerRatio); + if (sharesReward == 0) return; memMarket.transferFrom(provider, address(this), sharesReward); uint256 save = shares - sharesReward; From 7fabf27a3a07614eaf309261f470fc4b5ed3507d Mon Sep 17 00:00:00 2001 From: Ishant5436 Date: Sun, 21 Jun 2026 12:32:09 +0530 Subject: [PATCH 2/3] fix: restore transferFrom call when sharesReward is zero --- contracts/StakedEXA.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contracts/StakedEXA.sol b/contracts/StakedEXA.sol index 7947ed7bf..28054af60 100644 --- a/contracts/StakedEXA.sol +++ b/contracts/StakedEXA.sol @@ -349,13 +349,12 @@ contract StakedEXA is address memProvider = provider; uint256 shares = Math.min(memMarket.allowance(memProvider, address(this)), memMarket.maxRedeem(memProvider)); uint256 sharesReward = shares.mulWadDown(providerRatio); - if (sharesReward == 0) return; memMarket.transferFrom(provider, address(this), sharesReward); uint256 save = shares - sharesReward; if (save != 0) memMarket.transferFrom(memProvider, savings, save); - notifyRewardAmount(IERC20(address(memMarket)), sharesReward, address(this)); + if (sharesReward != 0) notifyRewardAmount(IERC20(address(memMarket)), sharesReward, address(this)); } /// @notice Returns all reward tokens. From 44add828fd0f6cce5d163de0f86ba2f7d9d723ee Mon Sep 17 00:00:00 2001 From: Ishant5436 Date: Sun, 21 Jun 2026 13:06:27 +0530 Subject: [PATCH 3/3] chore: update pragma to 0.8.17 --- contracts/StakedEXA.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/StakedEXA.sol b/contracts/StakedEXA.sol index 28054af60..e7cbca5b6 100644 --- a/contracts/StakedEXA.sol +++ b/contracts/StakedEXA.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; +pragma solidity ^0.8.17; import { FixedPointMathLib } from "solmate/src/utils/FixedPointMathLib.sol";