fix: Use Optimizer (base) in deploy scripts — Push3 lacks initialize/getLiquidityParams

OptimizerV3Push3 is an equivalence-proof contract with only isBullMarket().
It cannot serve as an ERC1967Proxy implementation because it has no initialize()
or getLiquidityParams(). The CI bootstrap was failing because the proxy
deployment reverted when calling initialize() on the Push3 implementation.

Switch deploy scripts to Optimizer.sol (the base UUPS contract) which has the
full interface required by ERC1967Proxy and LiquidityManager.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
openhands 2026-02-26 14:33:20 +00:00
parent e925538309
commit 99d9c563d6
4 changed files with 23 additions and 20 deletions

View file

@ -4,7 +4,7 @@ pragma solidity ^0.8.19;
import "../src/Kraiken.sol";
import { LiquidityManager } from "../src/LiquidityManager.sol";
import "../src/OptimizerV3Push3.sol";
import "../src/Optimizer.sol";
import "../src/Stake.sol";
import "../src/helpers/UniswapHelpers.sol";
import { ERC1967Proxy } from "@openzeppelin/proxy/ERC1967/ERC1967Proxy.sol";
@ -86,12 +86,12 @@ contract DeployLocal is Script {
console.log(" Pool initialized at 1 cent price");
}
// Deploy OptimizerV3Push3
OptimizerV3Push3 optimizerImpl = new OptimizerV3Push3();
// Deploy Optimizer
Optimizer optimizerImpl = new Optimizer();
bytes memory params = abi.encodeWithSignature("initialize(address,address)", address(kraiken), address(stake));
ERC1967Proxy proxy = new ERC1967Proxy(address(optimizerImpl), params);
address optimizerAddress = address(proxy);
console.log("\n[4/6] OptimizerV3Push3 deployed:", optimizerAddress);
console.log("\n[4/6] Optimizer deployed:", optimizerAddress);
// Deploy LiquidityManager
liquidityManager = new LiquidityManager(v3Factory, weth, address(kraiken), optimizerAddress);
@ -112,7 +112,7 @@ contract DeployLocal is Script {
console.log("Stake:", address(stake));
console.log("Pool:", address(pool));
console.log("LiquidityManager:", address(liquidityManager));
console.log("OptimizerV3Push3:", optimizerAddress);
console.log("Optimizer:", optimizerAddress);
console.log("\n=== Next Steps ===");
console.log("1. Fund LiquidityManager with ETH:");