harb/onchain/src/OptimizerV3.sol

34 lines
1.2 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.19;
import { IOptimizer, OptimizerInput } from "./IOptimizer.sol";
import { Optimizer } from "./Optimizer.sol";
import { OptimizerV3Push3Lib } from "./OptimizerV3Push3Lib.sol";
/**
* @title OptimizerV3
* @notice UUPS-upgradeable Optimizer whose calculateParams is overridden by
* the Push3 transpiler output. Delegates to OptimizerV3Push3Lib
* the single canonical copy of the transpiler logic so that future
* transpiler changes require only one edit.
*
* @dev No new storage slots. Only overrides the pure calculateParams function.
* Register-to-output mapping must match OptimizerV3Push3 exactly:
* r40 -> ci, r39 -> anchorShare, r38 -> anchorWidth, r37 -> discoveryDepth
*/
contract OptimizerV3 is Optimizer {
/// @custom:oz-upgrades-unsafe-allow constructor
constructor() {
_disableInitializers();
}
function calculateParams(OptimizerInput[8] memory inputs)
public
pure
override
returns (uint256 ci, uint256 anchorShare, uint24 anchorWidth, uint256 discoveryDepth)
{
return OptimizerV3Push3Lib.calculateParams(inputs);
}
}