Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
Utilities
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "./interfaces/IRewards.sol"; import "./interfaces/ITokenLocker.sol"; /* This is a utility library which is mainly used for off chain calculations */ contract Utilities{ address public immutable cvxprismaStaking; address public immutable prismaLocker; address public immutable voteproxy; constructor(address _voteproxy, address _prismaLocker, address _staking) { voteproxy = _voteproxy; prismaLocker = _prismaLocker; cvxprismaStaking = _staking; } function lockedPrisma() external view returns(uint256){ (uint256 lockedAmount,) = ITokenLocker(prismaLocker).getAccountBalances(voteproxy); return lockedAmount * ITokenLocker(prismaLocker).lockToTokenRatio(); } //get apr with given rates and prices function apr(uint256 _rate, uint256 _priceOfReward, uint256 _priceOfDeposit) external pure returns(uint256 _apr){ return _rate * 365 days * _priceOfReward / _priceOfDeposit; } //get reward rates for each token based on weighted reward group supply and wrapper's boosted cvxcrv rates //%return = rate * timeFrame * price of reward / price of LP / 1e18 function stakingRewardRates() external view returns (address[] memory tokens, uint256[] memory rates) { //get staked supply uint256 stakedSupply = IRewards(cvxprismaStaking).totalSupply(); uint256 rewardTokens = IRewards(cvxprismaStaking).rewardTokenLength(); tokens = new address[](rewardTokens); rates = new uint256[](rewardTokens); //loop through all reward contracts for (uint256 i = 0; i < rewardTokens; i++) { //get token tokens[i] = IRewards(cvxprismaStaking).rewardTokens(i); //get rate (uint256 periodFinish , uint256 rate, , ) = IRewards(cvxprismaStaking).rewardData(tokens[i]); if(block.timestamp > periodFinish){ rate = 0; } //rate per 1 staked lp if(stakedSupply > 0){ rate = rate * 1e18 / stakedSupply; } rates[i] = rate; } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface ITokenLocker { struct LockData { uint amount; uint weeksToUnlock; } function lock(address _account, uint256 _amount, uint256 _weeks) external returns (bool); function withdrawExpiredLocks(uint256 _weeks) external returns (bool); function withdrawWithPenalty(uint amountToWithdraw) external returns (uint); function getAccountBalances(address account) external view returns (uint256 locked, uint256 unlocked); function getAccountActiveLocks( address account, uint minWeeks ) external view returns (LockData[] memory lockData, uint frozenAmount); function getAccountWeightAt(address account, uint week) external view returns (uint256); function getTotalWeightAt(uint week) external view returns (uint256); function getWithdrawWithPenaltyAmounts(address account, uint amountToWithdraw) external view returns (uint amountWithdrawn, uint penaltyAmountPaid); function lockToTokenRatio() external view returns (uint256); function freeze() external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; interface IRewards{ struct EarnedData { address token; uint256 amount; } function initialize(uint256 _pid, bool _startActive) external; function addReward(address _rewardsToken, address _distributor) external; function approveRewardDistributor( address _rewardsToken, address _distributor, bool _approved ) external; function deposit(address _owner, uint256 _amount) external; function withdraw(address _owner, uint256 _amount) external; function getReward(address _forward) external; function notifyRewardAmount(address _rewardsToken, uint256 _reward) external; function balanceOf(address account) external view returns (uint256); function claimableRewards(address _account) external view returns(EarnedData[] memory userRewards); function rewardTokens(uint256 _rid) external view returns (address); function rewardTokenLength() external view returns(uint256); function rewardData(address _token) external view returns(uint256 periodFinish, uint256 rewardRate, uint256 lastUpdate, uint256 rewardPerTokenStored); function totalSupply() external view returns(uint256); function active() external view returns(bool); }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_voteproxy","type":"address"},{"internalType":"address","name":"_prismaLocker","type":"address"},{"internalType":"address","name":"_staking","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"uint256","name":"_priceOfReward","type":"uint256"},{"internalType":"uint256","name":"_priceOfDeposit","type":"uint256"}],"name":"apr","outputs":[{"internalType":"uint256","name":"_apr","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"cvxprismaStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedPrisma","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prismaLocker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardRates","outputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voteproxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b5060405161095f38038061095f83398101604081905261002f91610068565b6001600160a01b0392831660c05290821660a052166080526100ab565b80516001600160a01b038116811461006357600080fd5b919050565b60008060006060848603121561007d57600080fd5b6100868461004c565b92506100946020850161004c565b91506100a26040850161004c565b90509250925092565b60805160a05160c05161085661010960003960008181606c015261050701526000818160d10152818161053401526105a301526000818161010e0152818161016d015281816101f30152818161032001526103ca01526108566000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634bca41421461006757806355c3065a146100ab5780635862d907146100cc5780636f690cba146100f3578063b2b1615514610109578063b43156d514610130575b600080fd5b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610633565b610138565b6040519081526020016100a2565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100fb610166565b6040516100a292919061065f565b61008e7f000000000000000000000000000000000000000000000000000000000000000081565b6100be6104f0565b6000818361014a866301e133806106f9565b61015491906106f9565b61015e9190610716565b949350505050565b60608060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ed9190610738565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663857cb94a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190610738565b90508067ffffffffffffffff81111561028e5761028e610751565b6040519080825280602002602001820160405280156102b7578160200160208202803683370190505b5093508067ffffffffffffffff8111156102d3576102d3610751565b6040519080825280602002602001820160405280156102fc578160200160208202803683370190505b50925060005b818110156104e957604051637bb7bed160e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637bb7bed190602401602060405180830381865afa15801561036f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103939190610767565b8582815181106103a5576103a5610797565b60200260200101906001600160a01b031690816001600160a01b0316815250506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348e5d9f888858151811061040957610409610797565b60200260200101516040518263ffffffff1660e01b815260040161043c91906001600160a01b0391909116815260200190565b608060405180830381865afa158015610459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047d91906107ad565b5050915091508142111561048f575060005b84156104b557846104a882670de0b6b3a76400006106f9565b6104b29190610716565b90505b808684815181106104c8576104c8610797565b602002602001018181525050505080806104e1906107e3565b915050610302565b5050509091565b6040516367a5b10b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906367a5b10b906024016040805180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e91906107fc565b5090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c5438b1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610738565b61062d90826106f9565b91505090565b60008060006060848603121561064857600080fd5b505081359360208301359350604090920135919050565b604080825283519082018190526000906020906060840190828701845b828110156106a15781516001600160a01b03168452928401929084019060010161067c565b5050508381038285015284518082528583019183019060005b818110156106d6578351835292840192918401916001016106ba565b5090979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610710576107106106e3565b92915050565b60008261073357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561074a57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561077957600080fd5b81516001600160a01b038116811461079057600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b600080600080608085870312156107c357600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000600182016107f5576107f56106e3565b5060010190565b6000806040838503121561080f57600080fd5b50508051602090910151909290915056fea26469706673582212203dbf2c4eac9ea6cee3a24f228d88fc011fc1d14cb4d3b732f4e6e21cd31c2dcb64736f6c634300081300330000000000000000000000008ad7a9e2b3cd9214f36cb871336d8ab34ddfdd5b0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be108
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634bca41421461006757806355c3065a146100ab5780635862d907146100cc5780636f690cba146100f3578063b2b1615514610109578063b43156d514610130575b600080fd5b61008e7f0000000000000000000000008ad7a9e2b3cd9214f36cb871336d8ab34ddfdd5b81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be6100b9366004610633565b610138565b6040519081526020016100a2565b61008e7f0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d81565b6100fb610166565b6040516100a292919061065f565b61008e7f0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be10881565b6100be6104f0565b6000818361014a866301e133806106f9565b61015491906106f9565b61015e9190610716565b949350505050565b60608060007f0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be1086001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ed9190610738565b905060007f0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be1086001600160a01b031663857cb94a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561024f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102739190610738565b90508067ffffffffffffffff81111561028e5761028e610751565b6040519080825280602002602001820160405280156102b7578160200160208202803683370190505b5093508067ffffffffffffffff8111156102d3576102d3610751565b6040519080825280602002602001820160405280156102fc578160200160208202803683370190505b50925060005b818110156104e957604051637bb7bed160e01b8152600481018290527f0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be1086001600160a01b031690637bb7bed190602401602060405180830381865afa15801561036f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103939190610767565b8582815181106103a5576103a5610797565b60200260200101906001600160a01b031690816001600160a01b0316815250506000807f0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be1086001600160a01b03166348e5d9f888858151811061040957610409610797565b60200260200101516040518263ffffffff1660e01b815260040161043c91906001600160a01b0391909116815260200190565b608060405180830381865afa158015610459573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047d91906107ad565b5050915091508142111561048f575060005b84156104b557846104a882670de0b6b3a76400006106f9565b6104b29190610716565b90505b808684815181106104c8576104c8610797565b602002602001018181525050505080806104e1906107e3565b915050610302565b5050509091565b6040516367a5b10b60e01b81526001600160a01b037f0000000000000000000000008ad7a9e2b3cd9214f36cb871336d8ab34ddfdd5b8116600483015260009182917f0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d16906367a5b10b906024016040805180830381865afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e91906107fc565b5090507f0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d6001600160a01b031663c5438b1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190610738565b61062d90826106f9565b91505090565b60008060006060848603121561064857600080fd5b505081359360208301359350604090920135919050565b604080825283519082018190526000906020906060840190828701845b828110156106a15781516001600160a01b03168452928401929084019060010161067c565b5050508381038285015284518082528583019183019060005b818110156106d6578351835292840192918401916001016106ba565b5090979650505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610710576107106106e3565b92915050565b60008261073357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561074a57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561077957600080fd5b81516001600160a01b038116811461079057600080fd5b9392505050565b634e487b7160e01b600052603260045260246000fd5b600080600080608085870312156107c357600080fd5b505082516020840151604085015160609095015191969095509092509050565b6000600182016107f5576107f56106e3565b5060010190565b6000806040838503121561080f57600080fd5b50508051602090910151909290915056fea26469706673582212203dbf2c4eac9ea6cee3a24f228d88fc011fc1d14cb4d3b732f4e6e21cd31c2dcb64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008ad7a9e2b3cd9214f36cb871336d8ab34ddfdd5b0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be108
-----Decoded View---------------
Arg [0] : _voteproxy (address): 0x8ad7a9e2B3Cd9214f36Cb871336d8ab34DdFdD5b
Arg [1] : _prismaLocker (address): 0x3f78544364c3eCcDCe4d9C89a630AEa26122829d
Arg [2] : _staking (address): 0x0c73f1cFd5C9dFc150C8707Aa47Acbd14F0BE108
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008ad7a9e2b3cd9214f36cb871336d8ab34ddfdd5b
Arg [1] : 0000000000000000000000003f78544364c3eccdce4d9c89a630aea26122829d
Arg [2] : 0000000000000000000000000c73f1cfd5c9dfc150c8707aa47acbd14f0be108
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.