Description:
Proxy contract enabling upgradeable smart contract patterns. Delegates calls to an implementation contract.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"src/deps/milkman/pricecheckers/DynamicSlippageChecker.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-or-later
pragma solidity 0.8.28;
import { IPriceChecker } from "src/interfaces/deps/milkman/IPriceChecker.sol";
import { IExpectedOutCalculator } from "src/interfaces/deps/milkman/IExpectedOutCalculator.sol";
/// @notice Dynamic slippage checker that evaluates solver quotes against an expected output.
/// @dev Ported from Milkman with Solidity 0.8 semantics and Cove-specific layout.
contract DynamicSlippageChecker is IPriceChecker {
string public NAME;
IExpectedOutCalculator public immutable EXPECTED_OUT_CALCULATOR;
uint256 internal constant MAX_BPS = 10_000;
constructor(string memory name_, address expectedOutCalculator) {
NAME = name_;
EXPECTED_OUT_CALCULATOR = IExpectedOutCalculator(expectedOutCalculator);
}
function checkPrice(
uint256 amountIn,
address fromToken,
address toToken,
uint256,
uint256 minOut,
bytes calldata data
)
external
view
override
returns (bool)
{
(uint256 allowedSlippageBps, bytes memory extraData) = abi.decode(data, (uint256, bytes));
uint256 expectedOut = EXPECTED_OUT_CALCULATOR.getExpectedOut(amountIn, fromToken, toToken, extraData);
return minOut > (expectedOut * (MAX_BPS - allowedSlippageBps)) / MAX_BPS;
}
}
"
},
"src/interfaces/deps/milkman/IPriceChecker.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-or-later
pragma solidity 0.8.28;
/// @title IPriceChecker
/// @notice Interface for price checker contracts used by Milkman to validate swaps
interface IPriceChecker {
/// @notice Check if a swap price is acceptable
/// @param amountIn The amount of input tokens (including fee)
/// @param fromToken The input token address
/// @param toToken The output token address
/// @param feeAmount The fee amount in input tokens
/// @param minOut The minimum output amount from the solver
/// @param data Additional data for price checking
/// @return True if the price is acceptable
function checkPrice(
uint256 amountIn,
address fromToken,
address toToken,
uint256 feeAmount,
uint256 minOut,
bytes calldata data
) external view returns (bool);
}"
},
"src/interfaces/deps/milkman/IExpectedOutCalculator.sol": {
"content": "// SPDX-License-Identifier: LGPL-3.0-or-later
pragma solidity 0.8.28;
interface IExpectedOutCalculator {
function getExpectedOut(uint256 amountIn, address fromToken, address toToken, bytes calldata data)
external
view
returns (uint256);
}
"
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/",
"@openzeppelin-upgradeable/contracts/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
"@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
"clones-with-immutable-args/=dependencies/clones-with-immutable-args-1.1.1/src/",
"create3-factory/=dependencies/lifinance-create3-factory-0/",
"euler-price-oracle/=dependencies/euler-price-oracle-1/",
"forge-std/=dependencies/forge-std-1.9.6/src/",
"milkman/=dependencies/milkman-1/",
"token-plugins-upgradeable/=dependencies/token-plugins-upgradeable-1/",
"@1inch/solidity-utils/=dependencies/solidity-utils-5.3.0/",
"@1inch/farming/=dependencies/farming-3.2.0/",
"@1inch/token-plugins/=dependencies/token-plugins-upgradeable-1/",
"forge-deploy/=dependencies/forge-deploy-1/contracts/",
"forge-safe/=dependencies/forge-safe-1/src/",
"@solady/=dependencies/solady-0.1.17/src/",
"dependencies/tokenized-strategy-3.0.4/:@openzeppelin/=dependencies/tokenized-strategy-3.0.4/lib/openzeppelin-contracts/",
"@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/",
"@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/",
"clones-with-immutable-args-1.1.1/=dependencies/clones-with-immutable-args-1.1.1/",
"euler-price-oracle-1/=dependencies/euler-price-oracle-1/",
"farming-3.2.0/=dependencies/farming-3.2.0/",
"forge-deploy-1/=dependencies/forge-deploy-1/",
"forge-safe-1/=dependencies/forge-safe-1/",
"forge-std-1.9.6/=dependencies/forge-std-1.9.6/",
"lifinance/create3-factory-0/=dependencies/lifinance-create3-factory-0/",
"milkman-1/=dependencies/milkman-1/",
"solady-0.1.17/=dependencies/solady-0.1.17/",
"solidity-utils-5.3.0/=dependencies/solidity-utils-5.3.0/",
"token-plugins-upgradeable-1/=dependencies/token-plugins-upgradeable-1/",
"tokenized-strategy-3.0.4/=dependencies/tokenized-strategy-3.0.4/",
"@balancer/=dependencies/milkman-1/lib/balancer-v2-monorepo/contracts/",
"@cow-protocol/=dependencies/milkman-1/lib/contracts/src/",
"@pendle/core-v2/=dependencies/euler-price-oracle-1/dependencies/pendle-core-v2-public-1.0.0/contracts/",
"@pyth/=dependencies/euler-price-oracle-1/dependencies/@pythnetwork-pyth-sdk-solidity-4.1.0/",
"@pythnetwork-pyth-sdk-solidity-4.1.0/=dependencies/euler-price-oracle-1/dependencies/@pythnetwork-pyth-sdk-solidity-4.1.0/",
"@redstone-finance-evm-connector-0.8.0/=dependencies/euler-price-oracle-1/dependencies/@redstone-finance-evm-connector-0.8.0/contracts/",
"@redstone/evm-connector/=dependencies/euler-price-oracle-1/dependencies/@redstone-finance-evm-connector-0.8.0/contracts/",
"@uniswap/v3-core/=dependencies/euler-price-oracle-1/dependencies/@v3-core-1.0.1-solc-0.8/",
"@uniswap/v3-periphery/=dependencies/euler-price-oracle-1/dependencies/@v3-periphery-1.4.2-solc-0.8/",
"@v3-core-1.0.1-solc-0.8/=dependencies/euler-price-oracle-1/dependencies/@v3-core-1.0.1-solc-0.8/contracts/",
"@v3-periphery-1.4.2-solc-0.8/=dependencies/euler-price-oracle-1/dependencies/@v3-periphery-1.4.2-solc-0.8/contracts/",
"ds-test/=dependencies/clones-with-immutable-args-1.1.1/lib/ds-test/src/",
"erc4626-tests/=dependencies/tokenized-strategy-3.0.4/lib/erc4626-tests/",
"ethereum-vault-connector-1.0.1/=dependencies/euler-price-oracle-1/dependencies/ethereum-vault-connector-1.0.1/",
"ethereum-vault-connector/=dependencies/euler-price-oracle-1/dependencies/ethereum-vault-connector-1.0.1/src/",
"forge-deploy-proxy/=dependencies/forge-deploy-1/examples/basic/lib/forge-deploy-proxy/src/",
"forge-std-1.9.2/=dependencies/euler-price-oracle-1/dependencies/forge-std-1.9.2/src/",
"lifinance-create3-factory-0/=dependencies/lifinance-create3-factory-0/",
"openzeppelin-contracts-4.9.6/=dependencies/euler-price-oracle-1/dependencies/openzeppelin-contracts-4.9.6/",
"openzeppelin-contracts/=dependencies/tokenized-strategy-3.0.4/lib/openzeppelin-contracts/",
"openzeppelin/=dependencies/tokenized-strategy-3.0.4/lib/openzeppelin-contracts/contracts/",
"pendle-core-v2-public-1.0.0/=dependencies/euler-price-oracle-1/dependencies/pendle-core-v2-public-1.0.0/contracts/",
"solady-0.0.178/=dependencies/euler-price-oracle-1/dependencies/solady-0.0.178/src/",
"solidity-stringutils/=dependencies/forge-safe-1/lib/surl/lib/solidity-stringutils/",
"solmate/=dependencies/lifinance-create3-factory-0/lib/solmate/src/",
"surl/=dependencies/forge-safe-1/lib/surl/"
],
"optimizer": {
"enabled": true,
"runs": 400
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "prague",
"viaIR": true
}
}}
Submitted on: 2025-11-01 12:10:57
Comments
Log in to comment.
No comments yet.