Skip to content

Commit

Permalink
EF 1.0.2: fix _compound
Browse files Browse the repository at this point in the history
  • Loading branch information
a17 committed Jan 3, 2025
1 parent 8ac9d85 commit 23d5097
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/strategies/EqualizerFarmStrategy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ contract EqualizerFarmStrategy is LPStrategyBase, FarmingStrategyBase {
/*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

/// @inheritdoc IControllable
string public constant VERSION = "1.0.1";
string public constant VERSION = "1.0.2";

/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
/* INITIALIZATION */
Expand Down Expand Up @@ -283,7 +283,7 @@ contract EqualizerFarmStrategy is LPStrategyBase, FarmingStrategyBase {
/// @inheritdoc StrategyBase
function _compound() internal override {
uint[] memory amountsToDeposit = _swapForDepositProportion(getAssetsProportions()[0]);
if (amountsToDeposit[0] != 0 && amountsToDeposit[1] != 0) {
if (amountsToDeposit[0] > 2500 && amountsToDeposit[1] > 2500) {
_depositAssets(amountsToDeposit, true);
}

Check notice

Code scanning / Semgrep OSS

Semgrep Finding: rules.solidity.performance.use-nested-if Note

Using nested is cheaper than using && multiple check combinations.
There are more advantages, such as easier to read code and better coverage reports.
}
Expand Down
59 changes: 59 additions & 0 deletions test/strategies/EF.Upgrade.Sonic.t.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "forge-std/Test.sol";
import {IHardWorker} from "../../src/interfaces/IHardWorker.sol";
import {IPlatform} from "../../src/interfaces/IPlatform.sol";
import {IStrategy} from "../../src/interfaces/IStrategy.sol";
import {IFactory} from "../../src/interfaces/IFactory.sol";
import {StrategyIdLib} from "../../src/strategies/libs/StrategyIdLib.sol";
import {EqualizerFarmStrategy} from "../../src/strategies/EqualizerFarmStrategy.sol";
// import "../../chains/SonicLib.sol";

contract EFUpgradeTest is Test {
address public constant PLATFORM = 0x4Aca671A420eEB58ecafE83700686a2AD06b20D8;
address public constant STRATEGY = 0x2488359A89Da677605186f68780C3475745155e9;

constructor() {
vm.selectFork(vm.createFork(vm.envString("SONIC_RPC_URL")));
vm.rollFork(2346485); // Jan-03-2025 10:36:37 AM +UTC
}

function testEFUpgrade() public {
IFactory factory = IFactory(IPlatform(PLATFORM).factory());
address multisig = IPlatform(PLATFORM).multisig();
IHardWorker hw = IHardWorker(IPlatform(PLATFORM).hardWorker());

vm.prank(multisig);
hw.setDedicatedServerMsgSender(address(this), true);

address[] memory vaultsForHardWork = new address[](1);
vaultsForHardWork[0] = IStrategy(STRATEGY).vault();

// test
//deal(SonicLib.TOKEN_USDC, STRATEGY, 1700);
///////

vm.expectRevert();
hw.call(vaultsForHardWork);

// deploy new impl and upgrade
address strategyImplementation = address(new EqualizerFarmStrategy());
vm.prank(multisig);
factory.setStrategyLogicConfig(
IFactory.StrategyLogicConfig({
id: StrategyIdLib.EQUALIZER_FARM,
implementation: strategyImplementation,
deployAllowed: true,
upgradeAllowed: true,
farming: true,
tokenId: 0
}),
address(this)
);

factory.upgradeStrategyProxy(STRATEGY);

hw.call(vaultsForHardWork);
}
}

0 comments on commit 23d5097

Please sign in to comment.