Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
STETHShim
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.19; import "../../Errors/Errors.sol"; /** * @title STETHShim * @dev The contract hard codes the decimals to 18 decimals and returns the conversion rate of 1 stETH to ETH underlying the token in the Lido protocol * @notice This contract is a shim that implements the Chainlink AggregatorV3Interface and returns pricing as 1:1 for stETH:ETH */ contract STETHShim { constructor() {} function decimals() external pure returns (uint8) { return 18; } function description() external pure returns (string memory) { return "stETH Chainlink Shim"; } function version() external pure returns (uint256) { return 1; } /// @dev Historical data not available function getRoundData(uint80) external pure returns (uint80, int256, uint256, uint256, uint80) { revert NotImplemented(); } function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ) { return _getStETHData(); } /** * @notice This function gets the price of 1 stETH in ETH as 1 with 18 decimal precision~ * @dev This function does not implement the full Chainlink AggregatorV3Interface * @return roundId 0 - never returns valid round ID * @return answer The conversion rate of 1 stETH to ETH. * @return startedAt 0 - never returns valid timestamp * @return updatedAt The current timestamp. * @return answeredInRound 0 - never returns valid round ID */ function _getStETHData() internal view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ) { return (0, int256(1e18), 0, block.timestamp, 0); } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.19; /// @dev Error for 0x0 address inputs error InvalidZeroInput(); /// @dev Error for already added items to a list error AlreadyAdded(); /// @dev Error for not found items in a list error NotFound(); /// @dev Error for hitting max TVL error MaxTVLReached(); /// @dev Error for caller not having permissions error NotRestakeManagerAdmin(); /// @dev Error for call not coming from deposit queue contract error NotDepositQueue(); /// @dev Error for contract being paused error ContractPaused(); /// @dev Error for exceeding max basis points (100%) error OverMaxBasisPoints(); /// @dev Error for invalid token decimals for collateral tokens (must be 18) error InvalidTokenDecimals(uint8 expected, uint8 actual); /// @dev Error when withdraw is already completed error WithdrawAlreadyCompleted(); /// @dev Error when a different address tries to complete withdraw error NotOriginalWithdrawCaller(address expectedCaller); /// @dev Error when caller does not have OD admin role error NotOperatorDelegatorAdmin(); /// @dev Error when caller does not have Oracle Admin role error NotOracleAdmin(); /// @dev Error when caller is not RestakeManager contract error NotRestakeManager(); /// @dev Errror when caller does not have ETH Restake Admin role error NotNativeEthRestakeAdmin(); /// @dev Error when delegation address was already set - cannot be set again error DelegateAddressAlreadySet(); /// @dev Error when caller does not have ERC20 Rewards Admin role error NotERC20RewardsAdmin(); /// @dev Error when sending ETH fails error TransferFailed(); /// @dev Error when caller does not have ETH Minter Burner Admin role error NotEzETHMinterBurner(); /// @dev Error when caller does not have Token Admin role error NotTokenAdmin(); /// @dev Error when price oracle is not configured error OracleNotFound(); /// @dev Error when price oracle data is stale error OraclePriceExpired(); /// @dev Error when array lengths do not match error MismatchedArrayLengths(); /// @dev Error when caller does not have Deposit Withdraw Pauser role error NotDepositWithdrawPauser(); /// @dev Error when an individual token TVL is over the max error MaxTokenTVLReached(); /// @dev Error when Oracle price is invalid error InvalidOraclePrice(); /// @dev Error when calling an invalid function error NotImplemented(); /// @dev Error when calculating token amounts is invalid error InvalidTokenAmount(); /// @dev Error when timestamp is invalid - likely in the past error InvalidTimestamp(uint256 timestamp); /// @dev Error when trade does not meet minimum output amount error InsufficientOutputAmount(); /// @dev Error when the token received over the bridge is not the one expected error InvalidTokenReceived(); /// @dev Error when the origin address is not whitelisted error InvalidOrigin(); /// @dev Error when the sender is not expected error InvalidSender(address expectedSender, address actualSender); /// @dev error when function returns 0 amount error InvalidZeroOutput(); /// @dev error when xRenzoBridge does not have enough balance to pay for fee error NotEnoughBalance(uint256 currentBalance, uint256 calculatedFees); /// @dev error when source chain is not expected error InvalidSourceChain(uint64 expectedCCIPChainSelector, uint64 actualCCIPChainSelector); /// @dev Error when an unauthorized address tries to call the bridge function on the L2 error UnauthorizedBridgeSweeper(); /// @dev Error when caller does not have BRIDGE_ADMIN role error NotBridgeAdmin(); /// @dev Error when caller does not have PRICE_FEED_SENDER role error NotPriceFeedSender(); /// @dev Error for connext price Feed unauthorised call error UnAuthorisedCall(); /// @dev Error for no price feed configured on L2 error PriceFeedNotAvailable(); /// @dev Error for invalid bridge fee share configuration error InvalidBridgeFeeShare(uint256 bridgeFee); /// @dev Error for invalid sweep batch size error InvalidSweepBatchSize(uint256 batchSize); /// @dev Error when caller does not have Withdraw Queue admin role error NotWithdrawQueueAdmin(); /// @dev Error when caller try to withdraw more than Buffer error NotEnoughWithdrawBuffer(); /// @dev Error when caller try to claim withdraw before cooldown period error EarlyClaim(); /// @dev Error when caller try to withdraw for unsupported asset error UnsupportedWithdrawAsset(); /// @dev Error when caller try to claim invalidWithdrawIndex error InvalidWithdrawIndex(); /// @dev Error when TVL was expected to be 0 error InvalidTVL(); /// @dev Error when incorrect BeaconChainStrategy is set for LST in completeQueuedWithdrawal error IncorrectStrategy(); /// @dev Error when adding new OperatorDelegator which is not delegated error OperatoDelegatorNotDelegated(); /// @dev Error when emergency tracking already tracked withdrawal error WithdrawalAlreadyTracked(); /// @dev Error when emergency tracking already completed withdrawal error WithdrawalAlreadyCompleted(); /// @dev Error when caller does not have Emergency Withdraw Tracking Admin role error NotEmergencyWithdrawTrackingAdmin(); /// @dev Error when strategy does not have specified underlying error InvalidStrategy(); /// @dev Error when strategy already set and hold non zero token balance error NonZeroUnderlyingStrategyExist(); /// @dev Error when caller tried to claim queued withdrawal when not filled error QueuedWithdrawalNotFilled(); /// @dev Error when caller does not have EigenLayerRewardsAdmin role error NotEigenLayerRewardsAdmin(); /// @dev Error when rewardsDestination is not configured while trying to claim error RewardsDestinationNotConfigured(); /// @dev Error when WETHUnwrapper is not configured while trying to claim WETH restaking rewards error WETHUnwrapperNotConfigured(); /// @dev Error when currentCheckpoint is not accounted by OperatorDelegator error CheckpointAlreadyActive(); /// @dev Error when specified checkpoint is already recorded error CheckpointAlreadyRecorded(); /// @dev Error when caller does not have Emergency Checkpoint Tracking admin role error NotEmergencyCheckpointTrackingAdmin(); /// @dev Error when last completed checkpoint on EigenPod is not recorded in OperatorDelegator error CheckpointNotRecorded(); /// @dev Error when non pauser tries to change pause state error NotPauser(); /// @dev Error when user tried to withdraw asset more than available in protocol collateral error NotEnoughCollateralValue(); /// @dev Error when admin tries to disable asset withdraw queue which is not enabled error WithdrawQueueNotEnabled(); /// @dev Error when admin tries to enable erc20 withdraw queue for IS_NATIVE address error IsNativeAddressNotAllowed(); /// @dev Error when admin tried to complete queued withdrawal with receiveAsShares error OnlyReceiveAsTokenAllowed();
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotImplemented","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":"pure","type":"function"},{"inputs":[{"internalType":"uint80","name":"","type":"uint80"}],"name":"getRoundData","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":"pure","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506101ea806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063313ce5671461005c57806354fd4d50146100705780637284e4161461007f5780639a6fc8f5146100b5578063feaf968c146100ff575b600080fd5b604051601281526020015b60405180910390f35b60405160018152602001610067565b6040805180820182526014815273737445544820436861696e6c696e6b205368696d60601b602082015290516100679190610133565b6100c86100c3366004610181565b610112565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610067565b6000670de0b6b3a76400008142816100c8565b600080600080600060405163d623472560e01b815260040160405180910390fd5b600060208083528351808285015260005b8181101561016057858101830151858201604001528201610144565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561019357600080fd5b813569ffffffffffffffffffff811681146101ad57600080fd5b939250505056fea26469706673582212204df1427c53fc62e70d1895b2582710cbc56b00a729b18de4aaedd2d4ce4acdfe64736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063313ce5671461005c57806354fd4d50146100705780637284e4161461007f5780639a6fc8f5146100b5578063feaf968c146100ff575b600080fd5b604051601281526020015b60405180910390f35b60405160018152602001610067565b6040805180820182526014815273737445544820436861696e6c696e6b205368696d60601b602082015290516100679190610133565b6100c86100c3366004610181565b610112565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610067565b6000670de0b6b3a76400008142816100c8565b600080600080600060405163d623472560e01b815260040160405180910390fd5b600060208083528351808285015260005b8181101561016057858101830151858201604001528201610144565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561019357600080fd5b813569ffffffffffffffffffff811681146101ad57600080fd5b939250505056fea26469706673582212204df1427c53fc62e70d1895b2582710cbc56b00a729b18de4aaedd2d4ce4acdfe64736f6c63430008130033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.