Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
USDeBeforeMaturityFeed
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 10000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import {IChainlinkBasePriceFeed} from "src/interfaces/IChainlinkFeed.sol"; import {IERC4626} from "lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; /// @title USDeFeed /// @notice A contract to get the USDe price using sUSDe Chainlink Wrapper feed and sUSDe/USDe rate contract USDeBeforeMaturityFeed { error DecimalsMismatch(); IChainlinkBasePriceFeed public immutable sUSDeFeed; IERC4626 public immutable sUSDe; string public description; constructor(address _sUSDeFeed, address _sUSDe) { sUSDeFeed = IChainlinkBasePriceFeed(_sUSDeFeed); sUSDe = IERC4626(_sUSDe); if (sUSDeFeed.decimals() != 18 || sUSDe.decimals() != 18) revert DecimalsMismatch(); description = string( abi.encodePacked( "USDe/USD Feed using sUSDe Chainlink feed and sUSDe/USDe rate" ) ); } /** * @return roundId The round ID of sUSDe Chainlink price feed * @return USDeUsdPrice The latest USDe price in USD * @return startedAt The timestamp when the latest round of Chainlink price feed started * @return updatedAt The timestamp when the latest round of Chainlink price feed was updated * @return answeredInRound The round ID in which the answer was computed */ function latestRoundData() public view returns (uint80, int256, uint256, uint256, uint80) { ( uint80 roundId, int256 sUSDePrice, uint startedAt, uint updatedAt, uint80 answeredInRound ) = sUSDeFeed.latestRoundData(); uint256 sUSDeToUSDeRate = sUSDe.convertToAssets(1e18); // divide sUSDe/USD by sUSDe/USDe rate to get USDe/USD price int256 USDeUsdPrice = (sUSDePrice * 1e18) / int256(sUSDeToUSDeRate); return (roundId, USDeUsdPrice, startedAt, updatedAt, answeredInRound); } /** @notice Retrieves the latest USDe price @return price The latest USDe price */ function latestAnswer() external view returns (int256) { (, int256 price, , , ) = latestRoundData(); return price; } /** * @notice Retrieves number of decimals for the price feed * @return decimals The number of decimals for the price feed */ function decimals() public pure returns (uint8) { return 18; } }
pragma solidity ^0.8.13; interface IChainlinkFeed { function aggregator() external view returns (address aggregator); function decimals() external view returns (uint8 decimals); function latestRoundData() external view returns ( uint80 roundId, int256 crvUsdPrice, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestAnswer() external view returns (int256 price); function description() external view returns (string memory description); } interface IChainlinkBasePriceFeed is IChainlinkFeed { function assetToUsd() external view returns (IChainlinkFeed); function assetToUsdFallback() external view returns (IChainlinkFeed); function assetToUsdHeartbeat() external view returns (uint256 heartbeat); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC4626.sol) pragma solidity ^0.8.20; import {IERC20} from "../token/ERC20/IERC20.sol"; import {IERC20Metadata} from "../token/ERC20/extensions/IERC20Metadata.sol"; /** * @dev Interface of the ERC-4626 "Tokenized Vault Standard", as defined in * https://eips.ethereum.org/EIPS/eip-4626[ERC-4626]. */ interface IERC4626 is IERC20, IERC20Metadata { 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 ); /** * @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing. * * - MUST be an ERC-20 token contract. * - MUST NOT revert. */ function asset() external view returns (address assetTokenAddress); /** * @dev Returns the total amount of the underlying asset that is “managed” by Vault. * * - 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); /** * @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal * scenario where all the conditions are met. * * - MUST NOT be inclusive of any fees that are charged against assets in the Vault. * - MUST NOT show any variations depending on the caller. * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. * - MUST NOT revert. * * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and * from. */ function convertToShares(uint256 assets) external view returns (uint256 shares); /** * @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal * scenario where all the conditions are met. * * - MUST NOT be inclusive of any fees that are charged against assets in the Vault. * - MUST NOT show any variations depending on the caller. * - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange. * - MUST NOT revert. * * NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the * “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and * from. */ function convertToAssets(uint256 shares) external view returns (uint256 assets); /** * @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver, * through a deposit call. * * - MUST return a limited value if receiver is subject to some deposit limit. * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited. * - MUST NOT revert. */ function maxDeposit(address receiver) external view returns (uint256 maxAssets); /** * @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given * current on-chain conditions. * * - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit * call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called * in the same transaction. * - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the * deposit would be accepted, regardless if the user has enough tokens approved, etc. * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. * - MUST NOT revert. * * NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in * share price or some other type of condition, meaning the depositor will lose assets by depositing. */ function previewDeposit(uint256 assets) external view returns (uint256 shares); /** * @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens. * * - MUST emit the Deposit event. * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the * deposit execution, and are accounted for during deposit. * - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not * approving enough underlying tokens to the Vault contract, etc). * * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. */ function deposit(uint256 assets, address receiver) external returns (uint256 shares); /** * @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call. * - MUST return a limited value if receiver is subject to some mint limit. * - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted. * - MUST NOT revert. */ function maxMint(address receiver) external view returns (uint256 maxShares); /** * @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given * current on-chain conditions. * * - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call * in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the * same transaction. * - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint * would be accepted, regardless if the user has enough tokens approved, etc. * - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees. * - MUST NOT revert. * * NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in * share price or some other type of condition, meaning the depositor will lose assets by minting. */ function previewMint(uint256 shares) external view returns (uint256 assets); /** * @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens. * * - MUST emit the Deposit event. * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint * execution, and are accounted for during mint. * - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not * approving enough underlying tokens to the Vault contract, etc). * * NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token. */ function mint(uint256 shares, address receiver) external returns (uint256 assets); /** * @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the * Vault, through a withdraw call. * * - MUST return a limited value if owner is subject to some withdrawal limit or timelock. * - MUST NOT revert. */ function maxWithdraw(address owner) external view returns (uint256 maxAssets); /** * @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block, * given current on-chain conditions. * * - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw * call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if * called * in the same transaction. * - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though * the withdrawal would be accepted, regardless if the user has enough shares, etc. * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. * - MUST NOT revert. * * NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in * share price or some other type of condition, meaning the depositor will lose assets by depositing. */ function previewWithdraw(uint256 assets) external view returns (uint256 shares); /** * @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver. * * - MUST emit the Withdraw event. * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the * withdraw execution, and are accounted for during withdraw. * - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner * not having enough shares, etc). * * Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed. * Those methods should be performed separately. */ function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares); /** * @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault, * through a redeem call. * * - MUST return a limited value if owner is subject to some withdrawal limit or timelock. * - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock. * - MUST NOT revert. */ function maxRedeem(address owner) external view returns (uint256 maxShares); /** * @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block, * given current on-chain conditions. * * - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call * in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the * same transaction. * - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the * redemption would be accepted, regardless if the user has enough shares, etc. * - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees. * - MUST NOT revert. * * NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in * share price or some other type of condition, meaning the depositor will lose assets by redeeming. */ function previewRedeem(uint256 shares) external view returns (uint256 assets); /** * @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver. * * - MUST emit the Withdraw event. * - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the * redeem execution, and are accounted for during redeem. * - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner * not having enough shares, etc). * * NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed. * Those methods should be performed separately. */ function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; import {IERC20} from "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC-20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
{ "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solmate/=lib/solmate/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/" ], "optimizer": { "enabled": true, "runs": 10000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "shanghai", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_sUSDeFeed","type":"address"},{"internalType":"address","name":"_sUSDe","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DecimalsMismatch","type":"error"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sUSDe","outputs":[{"internalType":"contract IERC4626","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sUSDeFeed","outputs":[{"internalType":"contract IChainlinkBasePriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561000f575f80fd5b50604051620009a4380380620009a4833981016040819052610030916101d0565b6001600160a01b03808316608081905290821660a0526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561007f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a39190610201565b60ff16601214158061011a575060a0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101129190610201565b60ff16601214155b1561013857604051635a8dbaed60e01b815260040160405180910390fd5b604051602001610191907f555344652f5553442046656564207573696e6720735553446520436861696e6c81527f696e6b206665656420616e642073555344652f555344652072617465000000006020820152603c0190565b6040516020818303038152906040525f90816101ad91906102c2565b50505061037d565b80516001600160a01b03811681146101cb575f80fd5b919050565b5f80604083850312156101e1575f80fd5b6101ea836101b5565b91506101f8602084016101b5565b90509250929050565b5f60208284031215610211575f80fd5b815160ff81168114610221575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061025057607f821691505b60208210810361026e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156102bd575f81815260208120601f850160051c8101602086101561029a5750805b601f850160051c820191505b818110156102b9578281556001016102a6565b5050505b505050565b81516001600160401b038111156102db576102db610228565b6102ef816102e9845461023c565b84610274565b602080601f831160018114610322575f841561030b5750858301515b5f19600386901b1c1916600185901b1785556102b9565b5f85815260208120601f198616915b8281101561035057888601518255948401946001909101908401610331565b508582101561036d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516105f8620003ac5f395f818161010301526102a801525f818160b7015261021001526105f85ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063954085c01161004d578063954085c0146100b2578063e0d05d39146100fe578063feaf968c14610125575f80fd5b8063313ce5671461007357806350d25bcd146100875780637284e4161461009d575b5f80fd5b604051601281526020015b60405180910390f35b61008f610164565b60405190815260200161007e565b6100a5610179565b60405161007e919061037d565b6100d97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007e565b6100d97f000000000000000000000000000000000000000000000000000000000000000081565b61012d610204565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a00161007e565b5f8061016e610204565b509195945050505050565b5f8054610185906103e6565b80601f01602080910402602001604051908101604052809291908181526020018280546101b1906103e6565b80156101fc5780601f106101d3576101008083540402835291602001916101fc565b820191905f5260205f20905b8154815290600101906020018083116101df57829003601f168201915b505050505081565b5f805f805f805f805f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610277573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029b9190610455565b945094509450945094505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166307a2d13a670de0b6b3a76400006040518263ffffffff1660e01b815260040161030991815260200190565b602060405180830381865afa158015610324573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034891906104a1565b90505f8161035e87670de0b6b3a76400006104e5565b6103689190610536565b969c969b509399509197509550929350505050565b5f6020808352835180828501525f5b818110156103a85785810183015185820160400152820161038c565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b600181811c908216806103fa57607f821691505b602082108103610431577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b805169ffffffffffffffffffff81168114610450575f80fd5b919050565b5f805f805f60a08688031215610469575f80fd5b61047286610437565b945060208601519350604086015192506060860151915061049560808701610437565b90509295509295909350565b5f602082840312156104b1575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082025f82127f80000000000000000000000000000000000000000000000000000000000000008414161561051c5761051c6104b8565b8181058314821517610530576105306104b8565b92915050565b5f82610569577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156105bd576105bd6104b8565b50059056fea26469706673582212206bacc0b04d024f145f05bb210d07fef06071d2baac1668d8151ce23da3a6784264736f6c63430008140033000000000000000000000000d723a0910e261de49a90779d38a94afaaa028f150000000000000000000000009d39a5de30e57443bff2a8307a4256c8797a3497
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063954085c01161004d578063954085c0146100b2578063e0d05d39146100fe578063feaf968c14610125575f80fd5b8063313ce5671461007357806350d25bcd146100875780637284e4161461009d575b5f80fd5b604051601281526020015b60405180910390f35b61008f610164565b60405190815260200161007e565b6100a5610179565b60405161007e919061037d565b6100d97f000000000000000000000000d723a0910e261de49a90779d38a94afaaa028f1581565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007e565b6100d97f0000000000000000000000009d39a5de30e57443bff2a8307a4256c8797a349781565b61012d610204565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a00161007e565b5f8061016e610204565b509195945050505050565b5f8054610185906103e6565b80601f01602080910402602001604051908101604052809291908181526020018280546101b1906103e6565b80156101fc5780601f106101d3576101008083540402835291602001916101fc565b820191905f5260205f20905b8154815290600101906020018083116101df57829003601f168201915b505050505081565b5f805f805f805f805f807f000000000000000000000000d723a0910e261de49a90779d38a94afaaa028f1573ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610277573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029b9190610455565b945094509450945094505f7f0000000000000000000000009d39a5de30e57443bff2a8307a4256c8797a349773ffffffffffffffffffffffffffffffffffffffff166307a2d13a670de0b6b3a76400006040518263ffffffff1660e01b815260040161030991815260200190565b602060405180830381865afa158015610324573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034891906104a1565b90505f8161035e87670de0b6b3a76400006104e5565b6103689190610536565b969c969b509399509197509550929350505050565b5f6020808352835180828501525f5b818110156103a85785810183015185820160400152820161038c565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b600181811c908216806103fa57607f821691505b602082108103610431577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b805169ffffffffffffffffffff81168114610450575f80fd5b919050565b5f805f805f60a08688031215610469575f80fd5b61047286610437565b945060208601519350604086015192506060860151915061049560808701610437565b90509295509295909350565b5f602082840312156104b1575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082025f82127f80000000000000000000000000000000000000000000000000000000000000008414161561051c5761051c6104b8565b8181058314821517610530576105306104b8565b92915050565b5f82610569577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156105bd576105bd6104b8565b50059056fea26469706673582212206bacc0b04d024f145f05bb210d07fef06071d2baac1668d8151ce23da3a6784264736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d723a0910e261de49a90779d38a94afaaa028f150000000000000000000000009d39a5de30e57443bff2a8307a4256c8797a3497
-----Decoded View---------------
Arg [0] : _sUSDeFeed (address): 0xD723a0910e261de49A90779d38A94aFaAA028F15
Arg [1] : _sUSDe (address): 0x9D39A5DE30e57443BfF2A8307A4256c8797A3497
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d723a0910e261de49a90779d38a94afaaa028f15
Arg [1] : 0000000000000000000000009d39a5de30e57443bff2a8307a4256c8797a3497
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.