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:
PufMVTRateProvider
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 100 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.24;import {IPufEth} from "./IPufEth.sol";import {IStEth} from "./IStEth.sol";import {ICurveStableSwapNG} from "./ICurveStableSwapNG.sol";import {IRateProvider} from "./IRateProvider.sol";import {FixedPointMathLib} from "solady/utils/FixedPointMathLib.sol";contract PufMVTRateProvider is IRateProvider {error RateProvider__InvalidParam();uint256 private constant PRECISION = 1e18;address private constant PUFETH = 0xD9A442856C234a39a81a089C06451EBAa4306a72;address private constant STETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;address private constant WSTETH = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0;address private constant PUFETH_WSTETH_CURVE = 0xEEda34A377dD0ca676b9511EE1324974fA8d980D;address private constant WETH_PUFETH_CURVE = 0x39F5b252dE249790fAEd0C2F05aBead56D2088e1;function rate(address token_) external view returns (uint256) {if (token_ == PUFETH) {return IPufEth(PUFETH).previewRedeem(1e18);} else if (token_ == PUFETH_WSTETH_CURVE) {return _curveLpTokenClFeed(token_);} else if (token_ == WETH_PUFETH_CURVE) {
12345678// SPDX-License-Identifier: MITpragma solidity ^0.8.24;interface IPufEth {function previewRedeem(uint256 shares) external view returns (uint256);function totalAssets() external view returns (uint256);function totalSupply() external view returns (uint256);}
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.24;interface IStEth {function getPooledEthByShares(uint256 _shares) external view returns (uint256);}
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.24;interface ICurveStableSwapNG {function get_virtual_price() external view returns (uint256);}
123456// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IRateProvider {function rate(address token) external view returns (uint256);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.4;/// @notice Arithmetic library with operations for fixed-point numbers./// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/FixedPointMathLib.sol)/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol)library FixedPointMathLib {/*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*//* CUSTOM ERRORS *//*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*//// @dev The operation failed, as the output exceeds the maximum value of uint256.error ExpOverflow();/// @dev The operation failed, as the output exceeds the maximum value of uint256.error FactorialOverflow();/// @dev The operation failed, due to an overflow.error RPowOverflow();/// @dev The mantissa is too big to fit.error MantissaOverflow();/// @dev The operation failed, due to an multiplication overflow.error MulWadFailed();
1234567891011121314151617181920212223242526{"remappings": ["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solady/=lib/solady/src/"],"optimizer": {"enabled": true,"runs": 100},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs","appendCBOR": true},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata",
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"RateProvider__InvalidParam","type":"error"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080806040523461001657610484908161001b8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c630ba9d8ca14610024575f80fd5b3461005b57602036600319011261005b576004356001600160a01b038116810361005b57610053602091610095565b604051908152f35b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761008157604052565b634e487b7160e01b5f52604160045260245ffd5b73d9a442856c234a39a81a089c06451ebaa4306a72906001600160a01b03811682810361012f57505060206024916040519283809263266d6a8360e11b8252670de0b6b3a764000060048301525afa908115610124575f916100f5575090565b90506020813d60201161011c575b816101106020938361005f565b8101031261005b575190565b3d9150610103565b6040513d5f823e3d90fd5b90915073eeda34a377dd0ca676b9511ee1324974fa8d980d810361015a5750610157906101b6565b90565b7339f5b252de249790faed0c2f05abead56d2088e10361017d57610157906101b6565b6040516338a3c0cf60e01b8152600490fd5b818102929181159184041417156101a257565b634e487b7160e01b5f52601160045260245ffd5b73eeda34a377dd0ca676b9511ee1324974fa8d980d906001600160a01b031681810361034f575060409081518091630176f71760e71b825281600460209485935afa908115610345575f91610318575b508251630f451f7160e31b8152670de0b6b3a76400006004820181905293838260248173ae7ab96520de3a18e5e111b5eaab095312d7fe845afa91821561030e575f926102df575b50805163266d6a8360e11b81526004810186905293808560248173d9a442856c234a39a81a089c06451ebaa4306a725afa9182156102d657505f916102a6575b506102a2935081811090821802189061018f565b0490565b905083813d83116102cf575b6102bc818361005f565b8101031261005b576102a292515f61028e565b503d6102b2565b513d5f823e3d90fd5b9091508381813d8311610307575b6102f7818361005f565b8101031261005b5751905f61024e565b503d6102ed565b50513d5f823e3d90fd5b90508181813d831161033e575b61032f818361005f565b8101031261005b57515f610206565b503d610325565b83513d5f823e3d90fd5b7339f5b252de249790faed0c2f05abead56d2088e19150810361017d576040518091630176f71760e71b825281600460209485935afa908115610124575f91610421575b506040519063266d6a8360e11b8252670de0b6b3a764000092836004840152808360248173d9a442856c234a39a81a089c06451ebaa4306a725afa908115610124575f916103f1575b506102a292508381109084180283189061018f565b905082813d831161041a575b610407818361005f565b8101031261005b576102a291515f6103dc565b503d6103fd565b90508181813d8311610447575b610438818361005f565b8101031261005b57515f610393565b503d61042e56fea264697066735822122069164f5b389c43822b11165cc406e9e71100016067291d3917df247781ef8dee64736f6c63430008180033
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c630ba9d8ca14610024575f80fd5b3461005b57602036600319011261005b576004356001600160a01b038116810361005b57610053602091610095565b604051908152f35b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761008157604052565b634e487b7160e01b5f52604160045260245ffd5b73d9a442856c234a39a81a089c06451ebaa4306a72906001600160a01b03811682810361012f57505060206024916040519283809263266d6a8360e11b8252670de0b6b3a764000060048301525afa908115610124575f916100f5575090565b90506020813d60201161011c575b816101106020938361005f565b8101031261005b575190565b3d9150610103565b6040513d5f823e3d90fd5b90915073eeda34a377dd0ca676b9511ee1324974fa8d980d810361015a5750610157906101b6565b90565b7339f5b252de249790faed0c2f05abead56d2088e10361017d57610157906101b6565b6040516338a3c0cf60e01b8152600490fd5b818102929181159184041417156101a257565b634e487b7160e01b5f52601160045260245ffd5b73eeda34a377dd0ca676b9511ee1324974fa8d980d906001600160a01b031681810361034f575060409081518091630176f71760e71b825281600460209485935afa908115610345575f91610318575b508251630f451f7160e31b8152670de0b6b3a76400006004820181905293838260248173ae7ab96520de3a18e5e111b5eaab095312d7fe845afa91821561030e575f926102df575b50805163266d6a8360e11b81526004810186905293808560248173d9a442856c234a39a81a089c06451ebaa4306a725afa9182156102d657505f916102a6575b506102a2935081811090821802189061018f565b0490565b905083813d83116102cf575b6102bc818361005f565b8101031261005b576102a292515f61028e565b503d6102b2565b513d5f823e3d90fd5b9091508381813d8311610307575b6102f7818361005f565b8101031261005b5751905f61024e565b503d6102ed565b50513d5f823e3d90fd5b90508181813d831161033e575b61032f818361005f565b8101031261005b57515f610206565b503d610325565b83513d5f823e3d90fd5b7339f5b252de249790faed0c2f05abead56d2088e19150810361017d576040518091630176f71760e71b825281600460209485935afa908115610124575f91610421575b506040519063266d6a8360e11b8252670de0b6b3a764000092836004840152808360248173d9a442856c234a39a81a089c06451ebaa4306a725afa908115610124575f916103f1575b506102a292508381109084180283189061018f565b905082813d831161041a575b610407818361005f565b8101031261005b576102a291515f6103dc565b503d6103fd565b90508181813d8311610447575b610438818361005f565b8101031261005b57515f610393565b503d61042e56fea264697066735822122069164f5b389c43822b11165cc406e9e71100016067291d3917df247781ef8dee64736f6c63430008180033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.