Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
EdgeFactory
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 20000 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;import {EulerRouter} from "euler-price-oracle/EulerRouter.sol";import {IEVault} from "evk/EVault/IEVault.sol";import {GenericFactory} from "evk/GenericFactory/GenericFactory.sol";import {IEulerRouterFactory} from "../EulerRouterFactory/interfaces/IEulerRouterFactory.sol";import {IEdgeFactory} from "./interfaces/IEdgeFactory.sol";import {EscrowedCollateralPerspective} from "../Perspectives/deployed/EscrowedCollateralPerspective.sol";/// @title EdgeFactory/// @custom:security-contact security@euler.xyz/// @author Objective Labs (https://www.objectivelabs.io/)/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Factory contract for deploying and configuring Edge markets/// @dev Deploys and configures vaults, router, and their collateral relationshipscontract EdgeFactory is IEdgeFactory {/// @notice Name of the factory contractstring public constant name = "Edge Factory";/// @notice Minimum delay for a liquidation to happen in secondsuint16 internal constant LIQ_COOL_OFF_TIME = 1;/// @notice Maximum discount applied during liquidations (15%)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;import {IERC4626} from "forge-std/interfaces/IERC4626.sol";import {IPriceOracle} from "./interfaces/IPriceOracle.sol";import {Errors} from "./lib/Errors.sol";import {Governable} from "./lib/Governable.sol";/// @title EulerRouter/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Default Oracle resolver for Euler lending products./// @dev Integration Note: The router supports pricing via `convertToAssets` for trusted `resolvedVaults`./// By ERC4626 spec `convert*` ignores liquidity restrictions, fees, slippage and per-user restrictions./// Therefore the reported price may not be realizable through `redeem` or `withdraw`.contract EulerRouter is Governable, IPriceOracle {/// @inheritdoc IPriceOraclestring public constant name = "EulerRouter";/// @notice The PriceOracle to call if this router is not configured for base/quote./// @dev If `address(0)` then there is no fallback.address public fallbackOracle;/// @notice ERC4626 vaults resolved using internal pricing (`convertToAssets`).mapping(address vault => address asset) public resolvedVaults;/// @notice PriceOracle configured per asset pair./// @dev The keys are lexicographically sorted (asset0 < asset1).mapping(address asset0 => mapping(address asset1 => address oracle)) internal oracles;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;import {IVault as IEVCVault} from "ethereum-vault-connector/interfaces/IVault.sol";// Full interface of EVault and all it's modules/// @title IInitialize/// @notice Interface of the initialization module of EVaultinterface IInitialize {/// @notice Initialization of the newly deployed proxy contract/// @param proxyCreator Account which created the proxy or should be the initial governorfunction initialize(address proxyCreator) external;}/// @title IERC20/// @notice Interface of the EVault's Initialize moduleinterface IERC20 {/// @notice Vault share token (eToken) name, ie "Euler Vault: DAI"/// @return The name of the eTokenfunction name() external view returns (string memory);/// @notice Vault share token (eToken) symbol, ie "eDAI"/// @return The symbol of the eTokenfunction symbol() external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;import {BeaconProxy} from "./BeaconProxy.sol";import {MetaProxyDeployer} from "./MetaProxyDeployer.sol";/// @title IComponent/// @notice Minimal interface which must be implemented by the contract deployed by the factoryinterface IComponent {/// @notice Function replacing the constructor in proxied contracts/// @param creator The new contract's creator addressfunction initialize(address creator) external;}/// @title GenericFactory/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice The factory allows permissionless creation of upgradeable or non-upgradeable proxy contracts and serves as a/// beacon for the upgradeable onescontract GenericFactory is MetaProxyDeployer {// Constantsuint256 internal constant REENTRANCYLOCK__UNLOCKED = 1;uint256 internal constant REENTRANCYLOCK__LOCKED = 2;
12345678910111213141516// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;import {IFactory} from "../../BaseFactory/interfaces/IFactory.sol";/// @title IEulerRouterFactory/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A minimal factory for EulerRouter.interface IEulerRouterFactory is IFactory {/// @notice Deploys a new EulerRouter./// @param governor The governor of the router./// @return The deployment address.function deploy(address governor) external returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IEdgeFactory/// @custom:security-contact security@euler.xyz/// @author Objective Labs (https://www.objectivelabs.io/)/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Factory contract for deploying and configuring Edge marketsinterface IEdgeFactory {/// @notice Parameters for deploying a vault/// @param asset The underlying asset of the vault/// @param irm The address of the interest rate model, ignored if escrow/// @param escrow True if the vault is collateral only, false if it is borrowablestruct VaultParams {address asset;address irm;bool escrow;}/// @notice Parameters for configuring an oracle adapter in the router/// @param base The base token address/// @param adapter The oracle adapter addressstruct AdapterParams {address base;address adapter;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.24;import {GenericFactory} from "evk/GenericFactory/GenericFactory.sol";import {IEVault} from "evk/EVault/IEVault.sol";import "evk/EVault/shared/Constants.sol";import {BasePerspective} from "../implementation/BasePerspective.sol";/// @title EscrowedCollateralPerspective/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A contract that verifies whether a vault has properties of an escrow vault. It allows only one escrow vault/// per asset if the vault has no supply cap configured.contract EscrowedCollateralPerspective is BasePerspective {/// @notice A mapping to look up the vault associated with a given asset.mapping(address => address) public singletonLookup;/// @notice Creates a new EscrowedCollateralPerspective instance./// @param vaultFactory_ The address of the GenericFactory contract.constructor(address vaultFactory_) BasePerspective(vaultFactory_) {}/// @inheritdoc BasePerspectivefunction name() public pure virtual override returns (string memory) {return "Escrowed Collateral Perspective";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.2;import "./IERC20.sol";/// @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in/// https://eips.ethereum.org/EIPS/eip-4626interface IERC4626 is IERC20 {event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares);/// @notice Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing./// @dev/// - MUST be an ERC-20 token contract./// - MUST NOT revert.function asset() external view returns (address assetTokenAddress);/// @notice Returns the total amount of the underlying asset that is “managed” by Vault./// @dev/// - SHOULD include any compounding that occurs from yield./// - MUST be inclusive of any fees that are charged against assets in the Vault./// - MUST NOT revert.function totalAssets() external view returns (uint256 totalManagedAssets);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IPriceOracle/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Common PriceOracle interface.interface IPriceOracle {/// @notice Get the name of the oracle./// @return The name of the oracle.function name() external view returns (string memory);/// @notice One-sided price: How much quote token you would get for inAmount of base token, assuming no price spread./// @param inAmount The amount of `base` to convert./// @param base The token that is being priced./// @param quote The token that is the unit of account./// @return outAmount The amount of `quote` that is equivalent to `inAmount` of `base`.function getQuote(uint256 inAmount, address base, address quote) external view returns (uint256 outAmount);/// @notice Two-sided price: How much quote token you would get/spend for selling/buying inAmount of base token./// @param inAmount The amount of `base` to convert./// @param base The token that is being priced./// @param quote The token that is the unit of account./// @return bidOutAmount The amount of `quote` you would get for selling `inAmount` of `base`./// @return askOutAmount The amount of `quote` you would spend for buying `inAmount` of `base`.function getQuotes(uint256 inAmount, address base, address quote)
12345678910111213141516171819202122232425// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title Errors/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Collects common errors in PriceOracles.library Errors {/// @notice The external feed returned an invalid answer.error PriceOracle_InvalidAnswer();/// @notice The configuration parameters for the PriceOracle are invalid.error PriceOracle_InvalidConfiguration();/// @notice The base/quote path is not supported./// @param base The address of the base asset./// @param quote The address of the quote asset.error PriceOracle_NotSupported(address base, address quote);/// @notice The quote cannot be completed due to overflow.error PriceOracle_Overflow();/// @notice The price is too stale./// @param staleness The time elapsed since the price was updated./// @param maxStaleness The maximum time elapsed since the last price update.error PriceOracle_TooStale(uint256 staleness, uint256 maxStaleness);/// @notice The method can only be called by the governor.error Governance_CallerNotGovernor();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;import {EVCUtil} from "ethereum-vault-connector/utils/EVCUtil.sol";import {Errors} from "./Errors.sol";/// @title Governable/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Contract mixin for governance, compatible with EVC.abstract contract Governable is EVCUtil {/// @notice The active governor address. If `address(0)` then the role is renounced.address public governor;/// @notice Set the governor of the contract./// @param oldGovernor The address of the previous governor./// @param newGovernor The address of the newly appointed governor.event GovernorSet(address indexed oldGovernor, address indexed newGovernor);constructor(address _evc, address _governor) EVCUtil(_evc) {_setGovernor(_governor);}/// @notice Transfer the governor role to another address./// @param newGovernor The address of the next governor./// @dev Can only be called by the current governor.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IVault/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice This interface defines the methods for the Vault for the purpose of integration with the Ethereum Vault/// Connector.interface IVault {/// @notice Disables a controller (this vault) for the authenticated account./// @dev A controller is a vault that has been chosen for an account to have special control over account’s/// balances in the enabled collaterals vaults. User calls this function in order for the vault to disable itself/// for the account if the conditions are met (i.e. user has repaid debt in full). If the conditions are not met,/// the function reverts.function disableController() external;/// @notice Checks the status of an account./// @dev This function must only deliberately revert if the account status is invalid. If this function reverts due/// to any other reason, it may render the account unusable with possibly no way to recover funds./// @param account The address of the account to be checked./// @param collaterals The array of enabled collateral addresses to be considered for the account status check./// @return magicValue Must return the bytes4 magic value 0xb168c58f (which is a selector of this function) when/// account status is valid, or revert otherwise.function checkAccountStatus(address account,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title BeaconProxy/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A proxy contract, forwarding all calls to an implementation contract, fetched from a beacon/// @dev The proxy attaches up to 128 bytes of metadata to the delegated call data.contract BeaconProxy {// ERC-1967 beacon address slot. bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;// Beacon implementation() selectorbytes32 internal constant IMPLEMENTATION_SELECTOR =0x5c60da1b00000000000000000000000000000000000000000000000000000000;// Max trailing data length, 4 immutable slotsuint256 internal constant MAX_TRAILING_DATA_LENGTH = 128;address internal immutable beacon;uint256 internal immutable metadataLength;bytes32 internal immutable metadata0;bytes32 internal immutable metadata1;bytes32 internal immutable metadata2;bytes32 internal immutable metadata3;event Genesis();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title MetaProxyDeployer/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice Contract for deploying minimal proxies with metadata, based on EIP-3448./// @dev The metadata of the proxies does not include the data length as defined by EIP-3448, saving gas at a cost of/// supporting variable size data.contract MetaProxyDeployer {error E_DeploymentFailed();// Meta proxy bytecode from EIP-3488 https://eips.ethereum.org/EIPS/eip-3448bytes constant BYTECODE_HEAD = hex"600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d73";bytes constant BYTECODE_TAIL = hex"5af43d3d93803e603457fd5bf3";/// @dev Creates a proxy for `targetContract` with metadata from `metadata`./// @return addr A non-zero address if successful.function deployMetaProxy(address targetContract, bytes memory metadata) internal returns (address addr) {bytes memory code = abi.encodePacked(BYTECODE_HEAD, targetContract, BYTECODE_TAIL, metadata);assembly ("memory-safe") {addr := create(0, add(code, 32), mload(code))}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IFactory/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A minimal factory interface for deploying contracts.interface IFactory {struct DeploymentInfo {/// @notice The sender of the deployment call.address deployer;/// @notice The timestamp when the contract was deployed.uint96 deployedAt;}/// @notice An instance of a contract was deployed./// @param deployedContract The deployment address of the contract./// @param deployer The sender of the deployment call./// @param deployedAt The deployment timestamp of the contract.event ContractDeployed(address indexed deployedContract, address indexed deployer, uint256 deployedAt);/// @notice Error thrown when the query is incorrect.error Factory_BadQuery();/// @notice Contracts deployed by the factory.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;// Implementation internals// asset amounts are shifted left by this number of bits for increased precision of debt tracking.uint256 constant INTERNAL_DEBT_PRECISION_SHIFT = 31;// max amount for Assets and Shares custom types based on a uint112.uint256 constant MAX_SANE_AMOUNT = type(uint112).max;// max debt amount fits in uint144 (112 + 31 bits).// Last 31 bits are zeros to ensure max debt rounded up equals max sane amount.uint256 constant MAX_SANE_DEBT_AMOUNT = uint256(MAX_SANE_AMOUNT) << INTERNAL_DEBT_PRECISION_SHIFT;// proxy trailing calldata length in bytes.// Three addresses, 20 bytes each: vault underlying asset, oracle and unit of account + 4 empty bytes.uint256 constant PROXY_METADATA_LENGTH = 64;// gregorian calendaruint256 constant SECONDS_PER_YEAR = 365.2425 * 86400;// max interest rate accepted from IRM. 1,000,000% APY: floor(((1000000 / 100 + 1)**(1/(86400*365.2425)) - 1) * 1e27)uint256 constant MAX_ALLOWED_INTEREST_RATE = 291867278914945094175;// max valid value of the ConfigAmount custom type, signifying 100%uint16 constant CONFIG_SCALE = 1e4;// Account status checks special values// no account status checks should be scheduledaddress constant CHECKACCOUNT_NONE = address(0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.24;import {EnumerableSet} from "openzeppelin-contracts/utils/structs/EnumerableSet.sol";import {GenericFactory} from "evk/GenericFactory/GenericFactory.sol";import {IPerspective} from "./interfaces/IPerspective.sol";import {PerspectiveErrors} from "./PerspectiveErrors.sol";/// @title BasePerspective/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A base contract for implementing a perspective.abstract contract BasePerspective is IPerspective, PerspectiveErrors {using EnumerableSet for EnumerableSet.AddressSet;struct Transient {uint256 placeholder;}GenericFactory public immutable vaultFactory;EnumerableSet.AddressSet internal verified;Transient private transientVerified;Transient private transientErrors;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.6.2;/// @dev Interface of the ERC20 standard as defined in the EIP./// @dev This includes the optional name, symbol, and decimals metadata.interface IERC20 {/// @dev Emitted when `value` tokens are moved from one account (`from`) to another (`to`).event Transfer(address indexed from, address indexed to, uint256 value);/// @dev Emitted when the allowance of a `spender` for an `owner` is set, where `value`/// is the new allowance.event Approval(address indexed owner, address indexed spender, uint256 value);/// @notice Returns the amount of tokens in existence.function totalSupply() external view returns (uint256);/// @notice Returns the amount of tokens owned by `account`.function balanceOf(address account) external view returns (uint256);/// @notice Moves `amount` tokens from the caller's account to `to`.function transfer(address to, uint256 amount) external returns (bool);/// @notice Returns the remaining number of tokens that `spender` is allowed/// to spend on behalf of `owner`function allowance(address owner, address spender) external view returns (uint256);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import {IEVC} from "../interfaces/IEthereumVaultConnector.sol";import {ExecutionContext, EC} from "../ExecutionContext.sol";/// @title EVCUtil/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice This contract is an abstract base contract for interacting with the Ethereum Vault Connector (EVC)./// It provides utility functions for authenticating the callers in the context of the EVC, a pattern for enforcing the/// contracts to be called through the EVC.abstract contract EVCUtil {using ExecutionContext for EC;uint160 internal constant ACCOUNT_ID_OFFSET = 8;IEVC internal immutable evc;error EVC_InvalidAddress();error NotAuthorized();error ControllerDisabled();constructor(address _evc) {if (_evc == address(0)) revert EVC_InvalidAddress();
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/EnumerableSet.sol)// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.pragma solidity ^0.8.20;/*** @dev Library for managing* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive* types.** Sets have the following properties:** - Elements are added, removed, and checked for existence in constant time* (O(1)).* - Elements are enumerated in O(n). No guarantees are made on the ordering.** ```solidity* contract Example {* // Add the library methods* using EnumerableSet for EnumerableSet.AddressSet;** // Declare a set state variable* EnumerableSet.AddressSet private mySet;* }* ```
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IPerspective/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A contract that verifies the properties of a vault.interface IPerspective {/// @notice Emitted when a vault is verified successfully./// @param vault The address of the vault that has been verified.event PerspectiveVerified(address indexed vault);/// @notice Error thrown when a perspective verification fails./// @param perspective The address of the perspective contract where the error occurred./// @param vault The address of the vault being verified./// @param codes The error codes indicating the reasons for verification failure.error PerspectiveError(address perspective, address vault, uint256 codes);/// @notice Error thrown when a panic occurs in the perspective contract.error PerspectivePanic();/// @notice Returns the name of the perspective./// @dev Name should be unique and descriptive./// @return The name of the perspective.function name() external view returns (string memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title PerspectiveErrors/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice A contract that defines the error codes for the perspectives.abstract contract PerspectiveErrors {uint256 internal constant ERROR__FACTORY = 1 << 0;uint256 internal constant ERROR__IMPLEMENTATION = 1 << 1;uint256 internal constant ERROR__UPGRADABILITY = 1 << 2;uint256 internal constant ERROR__SINGLETON = 1 << 3;uint256 internal constant ERROR__NESTING = 1 << 4;uint256 internal constant ERROR__ORACLE_INVALID_ROUTER = 1 << 5;uint256 internal constant ERROR__ORACLE_GOVERNED_ROUTER = 1 << 6;uint256 internal constant ERROR__ORACLE_INVALID_FALLBACK = 1 << 7;uint256 internal constant ERROR__ORACLE_INVALID_ROUTER_CONFIG = 1 << 8;uint256 internal constant ERROR__ORACLE_INVALID_ADAPTER = 1 << 9;uint256 internal constant ERROR__UNIT_OF_ACCOUNT = 1 << 10;uint256 internal constant ERROR__CREATOR = 1 << 11;uint256 internal constant ERROR__GOVERNOR = 1 << 12;uint256 internal constant ERROR__FEE_RECEIVER = 1 << 13;uint256 internal constant ERROR__INTEREST_FEE = 1 << 14;uint256 internal constant ERROR__INTEREST_RATE_MODEL = 1 << 15;uint256 internal constant ERROR__SUPPLY_CAP = 1 << 16;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.8.0;/// @title IEVC/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice This interface defines the methods for the Ethereum Vault Connector.interface IEVC {/// @notice A struct representing a batch item./// @dev Each batch item represents a single operation to be performed within a checks deferred context.struct BatchItem {/// @notice The target contract to be called.address targetContract;/// @notice The account on behalf of which the operation is to be performed. msg.sender must be authorized to/// act on behalf of this account. Must be address(0) if the target contract is the EVC itself.address onBehalfOfAccount;/// @notice The amount of value to be forwarded with the call. If the value is type(uint256).max, the whole/// balance of the EVC contract will be forwarded. Must be 0 if the target contract is the EVC itself.uint256 value;/// @notice The encoded data which is called on the target contract.bytes data;}/// @notice A struct representing the result of a batch item operation./// @dev Used only for simulation purposes.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;type EC is uint256;/// @title ExecutionContext/// @custom:security-contact security@euler.xyz/// @author Euler Labs (https://www.eulerlabs.com/)/// @notice This library provides functions for managing the execution context in the Ethereum Vault Connector./// @dev The execution context is a bit field that stores the following information:/// @dev - on behalf of account - an account on behalf of which the currently executed operation is being performed/// @dev - checks deferred flag - used to indicate whether checks are deferred/// @dev - checks in progress flag - used to indicate that the account/vault status checks are in progress. This flag is/// used to prevent re-entrancy./// @dev - control collateral in progress flag - used to indicate that the control collateral is in progress. This flag/// is used to prevent re-entrancy./// @dev - operator authenticated flag - used to indicate that the currently executed operation is being performed by/// the account operator/// @dev - simulation flag - used to indicate that the currently executed batch call is a simulation/// @dev - stamp - dummy value for optimization purposeslibrary ExecutionContext {uint256 internal constant ON_BEHALF_OF_ACCOUNT_MASK =0x000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;uint256 internal constant CHECKS_DEFERRED_MASK = 0x0000000000000000000000FF0000000000000000000000000000000000000000;uint256 internal constant CHECKS_IN_PROGRESS_MASK =
1234567891011121314151617181920212223242526{"remappings": ["lib/euler-price-oracle:@openzeppelin/contracts/=lib/euler-price-oracle/lib/openzeppelin-contracts/contracts/","lib/native-token-transfers/evm:openzeppelin-contracts/contracts/=lib/native-token-transfers/evm/lib/openzeppelin-contracts/contracts/","lib/euler-earn:@openzeppelin/=lib/euler-earn/lib/openzeppelin-contracts/","lib/euler-earn:@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/","lib/euler-earn:ethereum-vault-connector/=lib/euler-earn/lib/ethereum-vault-connector/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","ethereum-vault-connector/=lib/ethereum-vault-connector/src/","evc/=lib/ethereum-vault-connector/src/","evk/=lib/euler-vault-kit/src/","evk-test/=lib/euler-vault-kit/test/","euler-price-oracle/=lib/euler-price-oracle/src/","euler-price-oracle-test/=lib/euler-price-oracle/test/","fee-flow/=lib/fee-flow/src/","reward-streams/=lib/reward-streams/src/","@openzeppelin/=lib/openzeppelin-contracts/contracts/","euler-earn/=lib/euler-earn/src/","native-token-transfers/=lib/native-token-transfers/evm/src/","@openzeppelin-upgradeable/=lib/euler-earn/lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@pendle/core-v2/=lib/euler-price-oracle/lib/pendle-core-v2-public/contracts/","@pyth/=lib/euler-price-oracle/lib/pyth-sdk-solidity/","@redstone/evm-connector/=lib/euler-price-oracle/lib/redstone-oracles-monorepo/packages/evm-connector/contracts/",
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_eVaultFactory","type":"address"},{"internalType":"address","name":"_eulerRouterFactory","type":"address"},{"internalType":"address","name":"_escrowedCollateralPerspective","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"E_BadQuery","type":"error"},{"inputs":[],"name":"E_TooFewVaults","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"router","type":"address"},{"indexed":false,"internalType":"address[]","name":"vaults","type":"address[]"}],"name":"EdgeDeployed","type":"event"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"irm","type":"address"},{"internalType":"bool","name":"escrow","type":"bool"}],"internalType":"struct IEdgeFactory.VaultParams[]","name":"vaults","type":"tuple[]"},{"components":[{"internalType":"address[]","name":"externalResolvedVaults","type":"address[]"},{"components":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"adapter","type":"address"}],"internalType":"struct IEdgeFactory.AdapterParams[]","name":"adapters","type":"tuple[]"}],"internalType":"struct IEdgeFactory.RouterParams","name":"router","type":"tuple"},{"components":[{"internalType":"uint256","name":"collateralVaultIndex","type":"uint256"},{"internalType":"uint256","name":"controllerVaultIndex","type":"uint256"},{"internalType":"uint16","name":"borrowLTV","type":"uint16"},{"internalType":"uint16","name":"liquidationLTV","type":"uint16"}],"internalType":"struct IEdgeFactory.LTVParams[]","name":"ltv","type":"tuple[]"},{"internalType":"address","name":"unitOfAccount","type":"address"}],"internalType":"struct IEdgeFactory.DeployParams","name":"params","type":"tuple"}],"name":"deploy","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eVaultFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escrowedCollateralPerspective","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eulerRouterFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"getDeployment","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDeploymentsListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getDeploymentsListSlice","outputs":[{"internalType":"address[][]","name":"list","type":"address[][]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDeployed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801562000010575f80fd5b5060405162001caf38038062001caf83398101604081905262000033916200006d565b6001600160a01b0392831660805290821660a0521660c052620000b4565b80516001600160a01b038116811462000068575f80fd5b919050565b5f805f6060848603121562000080575f80fd5b6200008b8462000051565b92506200009b6020850162000051565b9150620000ab6040850162000051565b90509250925092565b60805160a05160c051611bad620001025f395f818161017e015281816106ab015261098101525f81816101ca015261033401525f81816101f1015281816107ae0152610aa60152611bad5ff3fe608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063b3a625eb11610072578063bd145e3e11610058578063bd145e3e146101c5578063e1934a07146101ec578063e536913d14610213575f80fd5b8063b3a625eb14610158578063b45f2d3814610179575f80fd5b806306fdde03146100a357806325da1698146100f55780636aebd5831461011557806390184b0214610126575b5f80fd5b6100df6040518060400160405280600c81526020017f4564676520466163746f7279000000000000000000000000000000000000000081525081565b6040516100ec9190611422565b60405180910390f35b61010861010336600461143b565b610233565b6040516100ec91906114a2565b6001546040519081526020016100ec565b6101486101343660046114d8565b5f6020819052908152604090205460ff1681565b60405190151581526020016100ec565b61016b6101663660046114f3565b6102bb565b6040516100ec92919061152a565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ec565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b6101a07f000000000000000000000000000000000000000000000000000000000000000081565b610226610221366004611560565b6111c8565b6040516100ec9190611580565b60606001828154811061024857610248611600565b905f5260205f20018054806020026020016040519081016040528092919081815260200182805480156102af57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610284575b50505050509050919050565b5f606060026102ca848061162d565b90501015610304576040517f6435d19f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4c96a3890000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634c96a389906024016020604051808303815f875af115801561038f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b39190611697565b90505f6103c360208601866116b2565b6103cc90611852565b90505f5b8160200151518110156104cc575f826020015182815181106103f4576103f4611600565b602002602001015190508373ffffffffffffffffffffffffffffffffffffffff166306c570c1825f015189606001602081019061043191906114d8565b60208501516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064015f604051808303815f87803b1580156104aa575f80fd5b505af11580156104bc573d5f803e3d5ffd5b50505050508060010190506103d0565b505f5b6104dc60208701876116b2565b6104e69080611917565b90508110156105bf575f6104fd60208801886116b2565b6105079080611917565b8381811061051757610517611600565b905060200201602081019061052c91906114d8565b6040517fd6c0292600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152600160248301529192509085169063d6c02926906044015f604051808303815f87803b15801561059d575f80fd5b505af11580156105af573d5f803e3d5ffd5b50505050508060010190506104cf565b505f6105cb868061162d565b905067ffffffffffffffff8111156105e5576105e56116ee565b60405190808252806020026020018201604052801561060e578160200160208202803683370190505b5090505f5b61061d878061162d565b9050811015610dd0575f610631888061162d565b8381811061064157610641611600565b905060600201803603810190610657919061198f565b90505f8160400151156109e15781516040517f34a7199a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f0000000000000000000000000000000000000000000000000000000000000000909116906334a7199a90602401602060405180830381865afa1580156106f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107169190611697565b905073ffffffffffffffffffffffffffffffffffffffff81166109dc578151604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b1660208201525f60348201819052604882018190528251603c818403018152605c8301938490527f83e85b270000000000000000000000000000000000000000000000000000000090935291927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16926383e85b27926107f9926001918791016119fd565b6020604051808303815f875af1158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190611697565b6040517fd1a3a3080000000000000000000000000000000000000000000000000000000081525f60048201819052602482015290925073ffffffffffffffffffffffffffffffffffffffff83169063d1a3a308906044015f604051808303815f87803b1580156108a7575f80fd5b505af11580156108b9573d5f803e3d5ffd5b50506040517f82ebd6740000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff851692506382ebd67491506024015f604051808303815f87803b158015610921575f80fd5b505af1158015610933573d5f803e3d5ffd5b50506040517f2e5896e500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600160248301527f0000000000000000000000000000000000000000000000000000000000000000169250632e5896e591506044015f604051808303815f87803b1580156109c4575f80fd5b505af11580156109d6573d5f803e3d5ffd5b50505050505b610d1e565b81515f90876109f660808d0160608e016114d8565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602083015292841b83166034820152921b166048820152605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f83e85b27000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906383e85b2790610ae0905f9060019086906004016119fd565b6020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b209190611697565b60208401516040517f8bcd401600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919350831690638bcd4016906024015f604051808303815f87803b158015610b8e575f80fd5b505af1158015610ba0573d5f803e3d5ffd5b50506040517faf06d3cf0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8516925063af06d3cf91506024015f604051808303815f87803b158015610c09575f80fd5b505af1158015610c1b573d5f803e3d5ffd5b50506040517fb4113ba70000000000000000000000000000000000000000000000000000000081526105dc600482015273ffffffffffffffffffffffffffffffffffffffff8516925063b4113ba791506024015f604051808303815f87803b158015610c85575f80fd5b505af1158015610c97573d5f803e3d5ffd5b50506040517fd1a3a3080000000000000000000000000000000000000000000000000000000081525f60048201819052602482015273ffffffffffffffffffffffffffffffffffffffff8516925063d1a3a30891506044015f604051808303815f87803b158015610d06575f80fd5b505af1158015610d18573d5f803e3d5ffd5b50505050505b80848481518110610d3157610d31611600565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517fd6c029260000000000000000000000000000000000000000000000000000000081528282166004820152600160248201529087169063d6c02926906044015f604051808303815f87803b158015610dad575f80fd5b505af1158015610dbf573d5f803e3d5ffd5b505050505050806001019050610613565b505f5b610de06040880188611a3c565b9050811015610f13575f610df76040890189611a3c565b83818110610e0757610e07611600565b905060800201803603810190610e1d9190611ab1565b90505f83826020015181518110610e3657610e36611600565b602002602001015190505f84835f015181518110610e5657610e56611600565b6020908102919091010151604080850151606086015191517f4bca3d5b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015261ffff92831660248301529190921660448301525f606483015291925090831690634bca3d5b906084015f604051808303815f87803b158015610eef575f80fd5b505af1158015610f01573d5f803e3d5ffd5b50505050505050806001019050610dd3565b505f5b81518110156110af57610f29878061162d565b82818110610f3957610f39611600565b9050606002016040016020810190610f519190611b20565b610fee57818181518110610f6757610f67611600565b60209081029190910101516040517f82ebd6740000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff909116906382ebd674906024015f604051808303815f87803b158015610fd7575f80fd5b505af1158015610fe9573d5f803e3d5ffd5b505050505b5f8083838151811061100257611002611600565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f205460ff166110a75760015f8084848151811061104f5761104f611600565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b600101610f16565b506040517fd38bfff40000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff84169063d38bfff4906024015f604051808303815f87803b158015611114575f80fd5b505af1158015611126573d5f803e3d5ffd5b50506001805480820182555f91909152835161116d93507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690910191506020840190611325565b508273ffffffffffffffffffffffffffffffffffffffff167f0a4879b0794dd09b83ac74f0b8970f90a9b5979d00a6342afd6d662f548db7fb826040516111b491906114a2565b60405180910390a291959194509092505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111f75760015491505b82821080611206575060015482115b1561120f575f80fd5b6112198383611b39565b67ffffffffffffffff811115611231576112316116ee565b60405190808252806020026020018201604052801561126457816020015b606081526020019060019003908161124f5790505b5090505f5b6112738484611b39565b81101561131e576001818154811061128d5761128d611600565b905f5260205f20018054806020026020016040519081016040528092919081815260200182805480156112f457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112c9575b505050505082828151811061130b5761130b611600565b6020908102919091010152600101611269565b5092915050565b828054828255905f5260205f2090810192821561139d579160200282015b8281111561139d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611343565b506113a99291506113ad565b5090565b5b808211156113a9575f81556001016113ae565b5f81518084525f5b818110156113e5576020818501810151868301820152016113c9565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61143460208301846113c1565b9392505050565b5f6020828403121561144b575f80fd5b5035919050565b5f815180845260208085019450602084015f5b8381101561149757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611465565b509495945050505050565b602081525f6114346020830184611452565b73ffffffffffffffffffffffffffffffffffffffff811681146114d5575f80fd5b50565b5f602082840312156114e8575f80fd5b8135611434816114b4565b5f60208284031215611503575f80fd5b813567ffffffffffffffff811115611519575f80fd5b820160808185031215611434575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6115586040830184611452565b949350505050565b5f8060408385031215611571575f80fd5b50508035926020909101359150565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156115f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526115e1858351611452565b945092850192908501906001016115a7565b5092979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611660575f80fd5b83018035915067ffffffffffffffff82111561167a575f80fd5b6020019150606081023603821315611690575f80fd5b9250929050565b5f602082840312156116a7575f80fd5b8151611434816114b4565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126116e4575f80fd5b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561173e5761173e6116ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561178b5761178b6116ee565b604052919050565b5f67ffffffffffffffff8211156117ac576117ac6116ee565b5060051b60200190565b5f82601f8301126117c5575f80fd5b813560206117da6117d583611793565b611744565b82815260069290921b840181019181810190868411156117f8575f80fd5b8286015b848110156118475760408189031215611813575f80fd5b61181b61171b565b8135611826816114b4565b815281850135611835816114b4565b818601528352918301916040016117fc565b509695505050505050565b5f60408236031215611862575f80fd5b61186a61171b565b823567ffffffffffffffff80821115611881575f80fd5b9084019036601f830112611893575f80fd5b813560206118a36117d583611793565b82815260059290921b840181019181810190368411156118c1575f80fd5b948201945b838610156118e85785356118d9816114b4565b825294820194908201906118c6565b865250868101359350828411156118fd575f80fd5b611909368589016117b6565b908501525091949350505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261194a575f80fd5b83018035915067ffffffffffffffff821115611964575f80fd5b6020019150600581901b3603821315611690575f80fd5b8035801515811461198a575f80fd5b919050565b5f6060828403121561199f575f80fd5b6040516060810181811067ffffffffffffffff821117156119c2576119c26116ee565b60405282356119d0816114b4565b815260208301356119e0816114b4565b60208201526119f16040840161197b565b60408201529392505050565b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f611a3360608301846113c1565b95945050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6f575f80fd5b83018035915067ffffffffffffffff821115611a89575f80fd5b6020019150600781901b3603821315611690575f80fd5b803561ffff8116811461198a575f80fd5b5f60808284031215611ac1575f80fd5b6040516080810181811067ffffffffffffffff82111715611ae457611ae46116ee565b80604052508235815260208301356020820152611b0360408401611aa0565b6040820152611b1460608401611aa0565b60608201529392505050565b5f60208284031215611b30575f80fd5b6114348261197b565b81810381811115611b71577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea264697066735822122032bd3a7f20ccbc230089a92c0ca32b68d48a7ed658ec7cef56767b265ccc876e64736f6c63430008180033000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb000000000000000000000000c5b9b95a769c24c18c344c2659db61a0adfb736e0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a25
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061009f575f3560e01c8063b3a625eb11610072578063bd145e3e11610058578063bd145e3e146101c5578063e1934a07146101ec578063e536913d14610213575f80fd5b8063b3a625eb14610158578063b45f2d3814610179575f80fd5b806306fdde03146100a357806325da1698146100f55780636aebd5831461011557806390184b0214610126575b5f80fd5b6100df6040518060400160405280600c81526020017f4564676520466163746f7279000000000000000000000000000000000000000081525081565b6040516100ec9190611422565b60405180910390f35b61010861010336600461143b565b610233565b6040516100ec91906114a2565b6001546040519081526020016100ec565b6101486101343660046114d8565b5f6020819052908152604090205460ff1681565b60405190151581526020016100ec565b61016b6101663660046114f3565b6102bb565b6040516100ec92919061152a565b6101a07f0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a2581565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ec565b6101a07f000000000000000000000000c5b9b95a769c24c18c344c2659db61a0adfb736e81565b6101a07f000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb81565b610226610221366004611560565b6111c8565b6040516100ec9190611580565b60606001828154811061024857610248611600565b905f5260205f20018054806020026020016040519081016040528092919081815260200182805480156102af57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610284575b50505050509050919050565b5f606060026102ca848061162d565b90501015610304576040517f6435d19f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f4c96a3890000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000c5b9b95a769c24c18c344c2659db61a0adfb736e73ffffffffffffffffffffffffffffffffffffffff1690634c96a389906024016020604051808303815f875af115801561038f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b39190611697565b90505f6103c360208601866116b2565b6103cc90611852565b90505f5b8160200151518110156104cc575f826020015182815181106103f4576103f4611600565b602002602001015190508373ffffffffffffffffffffffffffffffffffffffff166306c570c1825f015189606001602081019061043191906114d8565b60208501516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064015f604051808303815f87803b1580156104aa575f80fd5b505af11580156104bc573d5f803e3d5ffd5b50505050508060010190506103d0565b505f5b6104dc60208701876116b2565b6104e69080611917565b90508110156105bf575f6104fd60208801886116b2565b6105079080611917565b8381811061051757610517611600565b905060200201602081019061052c91906114d8565b6040517fd6c0292600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152600160248301529192509085169063d6c02926906044015f604051808303815f87803b15801561059d575f80fd5b505af11580156105af573d5f803e3d5ffd5b50505050508060010190506104cf565b505f6105cb868061162d565b905067ffffffffffffffff8111156105e5576105e56116ee565b60405190808252806020026020018201604052801561060e578160200160208202803683370190505b5090505f5b61061d878061162d565b9050811015610dd0575f610631888061162d565b8381811061064157610641611600565b905060600201803603810190610657919061198f565b90505f8160400151156109e15781516040517f34a7199a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a25909116906334a7199a90602401602060405180830381865afa1580156106f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107169190611697565b905073ffffffffffffffffffffffffffffffffffffffff81166109dc578151604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b1660208201525f60348201819052604882018190528251603c818403018152605c8301938490527f83e85b270000000000000000000000000000000000000000000000000000000090935291927f000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb73ffffffffffffffffffffffffffffffffffffffff16926383e85b27926107f9926001918791016119fd565b6020604051808303815f875af1158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190611697565b6040517fd1a3a3080000000000000000000000000000000000000000000000000000000081525f60048201819052602482015290925073ffffffffffffffffffffffffffffffffffffffff83169063d1a3a308906044015f604051808303815f87803b1580156108a7575f80fd5b505af11580156108b9573d5f803e3d5ffd5b50506040517f82ebd6740000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff851692506382ebd67491506024015f604051808303815f87803b158015610921575f80fd5b505af1158015610933573d5f803e3d5ffd5b50506040517f2e5896e500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152600160248301527f0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a25169250632e5896e591506044015f604051808303815f87803b1580156109c4575f80fd5b505af11580156109d6573d5f803e3d5ffd5b50505050505b610d1e565b81515f90876109f660808d0160608e016114d8565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b8116602083015292841b83166034820152921b166048820152605c01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f83e85b27000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb16906383e85b2790610ae0905f9060019086906004016119fd565b6020604051808303815f875af1158015610afc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b209190611697565b60208401516040517f8bcd401600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919350831690638bcd4016906024015f604051808303815f87803b158015610b8e575f80fd5b505af1158015610ba0573d5f803e3d5ffd5b50506040517faf06d3cf0000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff8516925063af06d3cf91506024015f604051808303815f87803b158015610c09575f80fd5b505af1158015610c1b573d5f803e3d5ffd5b50506040517fb4113ba70000000000000000000000000000000000000000000000000000000081526105dc600482015273ffffffffffffffffffffffffffffffffffffffff8516925063b4113ba791506024015f604051808303815f87803b158015610c85575f80fd5b505af1158015610c97573d5f803e3d5ffd5b50506040517fd1a3a3080000000000000000000000000000000000000000000000000000000081525f60048201819052602482015273ffffffffffffffffffffffffffffffffffffffff8516925063d1a3a30891506044015f604051808303815f87803b158015610d06575f80fd5b505af1158015610d18573d5f803e3d5ffd5b50505050505b80848481518110610d3157610d31611600565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526040517fd6c029260000000000000000000000000000000000000000000000000000000081528282166004820152600160248201529087169063d6c02926906044015f604051808303815f87803b158015610dad575f80fd5b505af1158015610dbf573d5f803e3d5ffd5b505050505050806001019050610613565b505f5b610de06040880188611a3c565b9050811015610f13575f610df76040890189611a3c565b83818110610e0757610e07611600565b905060800201803603810190610e1d9190611ab1565b90505f83826020015181518110610e3657610e36611600565b602002602001015190505f84835f015181518110610e5657610e56611600565b6020908102919091010151604080850151606086015191517f4bca3d5b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808516600483015261ffff92831660248301529190921660448301525f606483015291925090831690634bca3d5b906084015f604051808303815f87803b158015610eef575f80fd5b505af1158015610f01573d5f803e3d5ffd5b50505050505050806001019050610dd3565b505f5b81518110156110af57610f29878061162d565b82818110610f3957610f39611600565b9050606002016040016020810190610f519190611b20565b610fee57818181518110610f6757610f67611600565b60209081029190910101516040517f82ebd6740000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff909116906382ebd674906024015f604051808303815f87803b158015610fd7575f80fd5b505af1158015610fe9573d5f803e3d5ffd5b505050505b5f8083838151811061100257611002611600565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f205460ff166110a75760015f8084848151811061104f5761104f611600565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b600101610f16565b506040517fd38bfff40000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff84169063d38bfff4906024015f604051808303815f87803b158015611114575f80fd5b505af1158015611126573d5f803e3d5ffd5b50506001805480820182555f91909152835161116d93507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf690910191506020840190611325565b508273ffffffffffffffffffffffffffffffffffffffff167f0a4879b0794dd09b83ac74f0b8970f90a9b5979d00a6342afd6d662f548db7fb826040516111b491906114a2565b60405180910390a291959194509092505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036111f75760015491505b82821080611206575060015482115b1561120f575f80fd5b6112198383611b39565b67ffffffffffffffff811115611231576112316116ee565b60405190808252806020026020018201604052801561126457816020015b606081526020019060019003908161124f5790505b5090505f5b6112738484611b39565b81101561131e576001818154811061128d5761128d611600565b905f5260205f20018054806020026020016040519081016040528092919081815260200182805480156112f457602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112c9575b505050505082828151811061130b5761130b611600565b6020908102919091010152600101611269565b5092915050565b828054828255905f5260205f2090810192821561139d579160200282015b8281111561139d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611343565b506113a99291506113ad565b5090565b5b808211156113a9575f81556001016113ae565b5f81518084525f5b818110156113e5576020818501810151868301820152016113c9565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61143460208301846113c1565b9392505050565b5f6020828403121561144b575f80fd5b5035919050565b5f815180845260208085019450602084015f5b8381101561149757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101611465565b509495945050505050565b602081525f6114346020830184611452565b73ffffffffffffffffffffffffffffffffffffffff811681146114d5575f80fd5b50565b5f602082840312156114e8575f80fd5b8135611434816114b4565b5f60208284031215611503575f80fd5b813567ffffffffffffffff811115611519575f80fd5b820160808185031215611434575f80fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6115586040830184611452565b949350505050565b5f8060408385031215611571575f80fd5b50508035926020909101359150565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156115f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526115e1858351611452565b945092850192908501906001016115a7565b5092979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611660575f80fd5b83018035915067ffffffffffffffff82111561167a575f80fd5b6020019150606081023603821315611690575f80fd5b9250929050565b5f602082840312156116a7575f80fd5b8151611434816114b4565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126116e4575f80fd5b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561173e5761173e6116ee565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561178b5761178b6116ee565b604052919050565b5f67ffffffffffffffff8211156117ac576117ac6116ee565b5060051b60200190565b5f82601f8301126117c5575f80fd5b813560206117da6117d583611793565b611744565b82815260069290921b840181019181810190868411156117f8575f80fd5b8286015b848110156118475760408189031215611813575f80fd5b61181b61171b565b8135611826816114b4565b815281850135611835816114b4565b818601528352918301916040016117fc565b509695505050505050565b5f60408236031215611862575f80fd5b61186a61171b565b823567ffffffffffffffff80821115611881575f80fd5b9084019036601f830112611893575f80fd5b813560206118a36117d583611793565b82815260059290921b840181019181810190368411156118c1575f80fd5b948201945b838610156118e85785356118d9816114b4565b825294820194908201906118c6565b865250868101359350828411156118fd575f80fd5b611909368589016117b6565b908501525091949350505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261194a575f80fd5b83018035915067ffffffffffffffff821115611964575f80fd5b6020019150600581901b3603821315611690575f80fd5b8035801515811461198a575f80fd5b919050565b5f6060828403121561199f575f80fd5b6040516060810181811067ffffffffffffffff821117156119c2576119c26116ee565b60405282356119d0816114b4565b815260208301356119e0816114b4565b60208201526119f16040840161197b565b60408201529392505050565b73ffffffffffffffffffffffffffffffffffffffff841681528215156020820152606060408201525f611a3360608301846113c1565b95945050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a6f575f80fd5b83018035915067ffffffffffffffff821115611a89575f80fd5b6020019150600781901b3603821315611690575f80fd5b803561ffff8116811461198a575f80fd5b5f60808284031215611ac1575f80fd5b6040516080810181811067ffffffffffffffff82111715611ae457611ae46116ee565b80604052508235815260208301356020820152611b0360408401611aa0565b6040820152611b1460608401611aa0565b60608201529392505050565b5f60208284031215611b30575f80fd5b6114348261197b565b81810381811115611b71577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea264697066735822122032bd3a7f20ccbc230089a92c0ca32b68d48a7ed658ec7cef56767b265ccc876e64736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb000000000000000000000000c5b9b95a769c24c18c344c2659db61a0adfb736e0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a25
-----Decoded View---------------
Arg [0] : _eVaultFactory (address): 0xF075cC8660B51D0b8a4474e3f47eDAC5fA034cFB
Arg [1] : _eulerRouterFactory (address): 0xc5b9B95a769C24c18c344c2659db61a0AdFB736E
Arg [2] : _escrowedCollateralPerspective (address): 0x4f51FbD2161FC5e41295b866cB42A08e7eA39a25
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f075cc8660b51d0b8a4474e3f47edac5fa034cfb
Arg [1] : 000000000000000000000000c5b9b95a769c24c18c344c2659db61a0adfb736e
Arg [2] : 0000000000000000000000004f51fbd2161fc5e41295b866cb42a08e7ea39a25
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.