Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
0x60806040 | 15121800 | 976 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
InterestRatesManager
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;import "./interfaces/IInterestRatesManager.sol";import "./libraries/CompoundMath.sol";import "./MorphoStorage.sol";/// @title InterestRatesManager./// @author Morpho Labs./// @custom:contact security@morpho.xyz/// @notice Smart contract handling the computation of indexes used for peer-to-peer interactions./// @dev This contract inherits from MorphoStorage so that Morpho can delegate calls to this contract.contract InterestRatesManager is IInterestRatesManager, MorphoStorage {using CompoundMath for uint256;/// STRUCTS ///struct Params {uint256 lastP2PSupplyIndex; // The peer-to-peer supply index at last update.uint256 lastP2PBorrowIndex; // The peer-to-peer borrow index at last update.uint256 poolSupplyIndex; // The current pool supply index.uint256 poolBorrowIndex; // The current pool borrow index.uint256 lastPoolSupplyIndex; // The pool supply index at last update.uint256 lastPoolBorrowIndex; // The pool borrow index at last update.
123456// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;interface IInterestRatesManager {function updateP2PIndexes(address _marketAddress) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;/// @title CompoundMath./// @author Morpho Labs./// @custom:contact security@morpho.xyz/// @dev Library emulating in solidity 8+ the behavior of Compound's mulScalarTruncate and divScalarByExpTruncate functions.library CompoundMath {/// ERRORS ////// @notice Reverts when the number exceeds 224 bits.error NumberExceeds224Bits();/// @notice Reverts when the number exceeds 32 bits.error NumberExceeds32Bits();/// INTERNAL ///function mul(uint256 x, uint256 y) internal pure returns (uint256) {return (x * y) / 1e18;}function div(uint256 x, uint256 y) internal pure returns (uint256) {return ((1e18 * x * 1e18) / y) / 1e18;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;import "./interfaces/compound/ICompound.sol";import "./interfaces/IPositionsManager.sol";import "./interfaces/IIncentivesVault.sol";import "./interfaces/IRewardsManager.sol";import "./interfaces/IInterestRatesManager.sol";import "../common/libraries/DoubleLinkedList.sol";import "./libraries/Types.sol";import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";/// @title MorphoStorage./// @author Morpho Labs./// @custom:contact security@morpho.xyz/// @notice All storage variables used in Morpho contracts.abstract contract MorphoStorage is OwnableUpgradeable, ReentrancyGuardUpgradeable {/// GLOBAL STORAGE ///uint8 public constant CTOKEN_DECIMALS = 8; // The number of decimals for cToken.uint16 public constant MAX_BASIS_POINTS = 10_000; // 100% in basis points.uint256 public constant WAD = 1e18;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;interface ICEth {function accrueInterest() external returns (uint256);function borrowRate() external returns (uint256);function borrowIndex() external returns (uint256);function borrowBalanceStored(address) external returns (uint256);function mint() external payable;function exchangeRateCurrent() external returns (uint256);function exchangeRateStored() external view returns (uint256);function supplyRatePerBlock() external returns (uint256);function redeem(uint256) external returns (uint256);function redeemUnderlying(uint256) external returns (uint256);function approve(address spender, uint256 amount) external returns (bool);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;interface IPositionsManager {function supplyLogic(address _poolTokenAddress,address _supplier,address _onBehalf,uint256 _amount,uint256 _maxGasForMatching) external;function borrowLogic(address _poolTokenAddress,uint256 _amount,uint256 _maxGasForMatching) external;function withdrawLogic(address _poolTokenAddress,uint256 _amount,address _supplier,address _receiver,uint256 _maxGasForMatching) external;
123456789101112131415161718// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;import "./IOracle.sol";interface IIncentivesVault {function setOracle(IOracle _newOracle) external;function setMorphoDao(address _newMorphoDao) external;function setBonus(uint256 _newBonus) external;function setPauseStatus(bool _newStatus) external;function transferTokensToDao(address _token, uint256 _amount) external;function tradeCompForMorphoTokens(address _to, uint256 _amount) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;import "./compound/ICompound.sol";interface IRewardsManager {function initialize(address _morpho) external;function claimRewards(address[] calldata, address) external returns (uint256);function userUnclaimedCompRewards(address) external view returns (uint256);function compSupplierIndex(address, address) external view returns (uint256);function compBorrowerIndex(address, address) external view returns (uint256);function getLocalCompSupplyState(address _cTokenAddress)externalviewreturns (IComptroller.CompMarketState memory);function getLocalCompBorrowState(address _cTokenAddress)externalviewreturns (IComptroller.CompMarketState memory);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;/// @title Double Linked List./// @author Morpho Labs./// @custom:contact security@morpho.xyz/// @notice Modified double linked list with capped sorting insertion.library DoubleLinkedList {/// STRUCTS ///struct Account {address prev;address next;uint256 value;}struct List {mapping(address => Account) accounts;address head;address tail;}/// ERRORS ////// @notice Thrown when the account is already inserted in the double linked list.error AccountAlreadyInserted();
12345678910111213141516171819202122232425// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;/// @title Types./// @author Morpho Labs./// @custom:contact security@morpho.xyz/// @dev Common types and structs used in Moprho contracts.library Types {/// ENUMS ///enum PositionType {SUPPLIERS_IN_P2P,SUPPLIERS_ON_POOL,BORROWERS_IN_P2P,BORROWERS_ON_POOL}/// STRUCTS ///struct SupplyBalance {uint256 inP2P; // In supplier's peer-to-peer unit, a unit that grows in underlying value, to keep track of the interests earned by suppliersin peer-to-peer. Multiply by the peer-to-peer supply index to get the underlying amount.uint256 onPool; // In cToken. Multiply by the pool supply index to get the underlying amount.}struct BorrowBalance {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)pragma solidity ^0.8.0;import "../proxy/utils/Initializable.sol";/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuardUpgradeable is Initializable {// Booleans are more expensive than uint256 or any type that takes up a full// word because each write operation emits an extra SLOAD to first read the// slot's contents, replace the bits taken up by the boolean, and then write
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)pragma solidity ^0.8.0;import "../utils/ContextUpgradeable.sol";import "../proxy/utils/Initializable.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/**
123456// SPDX-License-Identifier: GNU AGPLv3pragma solidity ^0.8.0;interface IOracle {function consult(uint256 _amountIn) external returns (uint256);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (proxy/utils/Initializable.sol)pragma solidity ^0.8.0;import "../../utils/AddressUpgradeable.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as* possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.** CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure* that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.** [CAUTION]* ====* Avoid leaving a contract uninitialized.** An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation* contract, which may impact the proxy. To initialize the implementation contract, you can either invoke the* initializer manually, or you can include a constructor to automatically mark it as initialized when it is deployed:
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)pragma solidity ^0.8.0;import "../proxy/utils/Initializable.sol";/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract ContextUpgradeable is Initializable {function __Context_init() internal onlyInitializing {}function __Context_init_unchained() internal onlyInitializing {}function _msgSender() internal view virtual returns (address) {return msg.sender;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library AddressUpgradeable {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
1234567891011121314151617181920212223242526{"remappings": ["@aave/core-v3/=lib/aave-v3-core/","@aave/periphery-v3/=lib/aave-v3-periphery/","@contracts/=contracts/","@ensdomains/=node_modules/@ensdomains/","@morpho/data-structures/=lib/data-structures/","@openzeppelin/=node_modules/@openzeppelin/","@rari-capital/=node_modules/@rari-capital/","@rari-capital/solmate/=lib/solmate/","@uniswap/=node_modules/@uniswap/","aave-v3-core/=lib/aave-v3-core/","aave-v3-periphery/=lib/aave-v3-periphery/contracts/","base64-sol/=node_modules/base64-sol/","ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/","solmate/=lib/solmate/src/","contracts/=contracts/","test/=test/"],"optimizer": {"enabled": true,"runs": 200},
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_poolTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_p2pSupplyIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_p2pBorrowIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_poolSupplyIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_poolBorrowIndex","type":"uint256"}],"name":"P2PIndexesUpdated","type":"event"},{"inputs":[],"name":"CTOKEN_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_BASIS_POINTS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WAD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"borrowBalanceInOf","outputs":[{"internalType":"uint256","name":"inP2P","type":"uint256"},{"internalType":"uint256","name":"onPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cEth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"comptroller","outputs":[{"internalType":"contract IComptroller","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultMaxGasForMatching","outputs":[{"internalType":"uint64","name":"supply","type":"uint64"},{"internalType":"uint64","name":"borrow","type":"uint64"},{"internalType":"uint64","name":"withdraw","type":"uint64"},{"internalType":"uint64","name":"repay","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deltas","outputs":[{"internalType":"uint256","name":"p2pSupplyDelta","type":"uint256"},{"internalType":"uint256","name":"p2pBorrowDelta","type":"uint256"},{"internalType":"uint256","name":"p2pSupplyAmount","type":"uint256"},{"internalType":"uint256","name":"p2pBorrowAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dustThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"enteredMarkets","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incentivesVault","outputs":[{"internalType":"contract IIncentivesVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"interestRatesManager","outputs":[{"internalType":"contract IInterestRatesManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isClaimRewardsPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBorrowBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastPoolIndexes","outputs":[{"internalType":"uint32","name":"lastUpdateBlockNumber","type":"uint32"},{"internalType":"uint112","name":"lastSupplyPoolIndex","type":"uint112"},{"internalType":"uint112","name":"lastBorrowPoolIndex","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketParameters","outputs":[{"internalType":"uint16","name":"reserveFactor","type":"uint16"},{"internalType":"uint16","name":"p2pIndexCursor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketStatus","outputs":[{"internalType":"bool","name":"isCreated","type":"bool"},{"internalType":"bool","name":"isPaused","type":"bool"},{"internalType":"bool","name":"isPartiallyPaused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"marketsCreated","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSortedUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"p2pBorrowIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"p2pDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"p2pSupplyIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"positionsManager","outputs":[{"internalType":"contract IPositionsManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsManager","outputs":[{"internalType":"contract IRewardsManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"supplyBalanceInOf","outputs":[{"internalType":"uint256","name":"inP2P","type":"uint256"},{"internalType":"uint256","name":"onPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_poolTokenAddress","type":"address"}],"name":"updateP2PIndexes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"userMembership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wEth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600054610100900460ff1661002c5760005460ff1615610034565b6100346100d5565b61009b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff161580156100bd576000805461ffff19166101011790555b80156100cf576000805461ff00191690555b506100ff565b60006100ea306100f060201b610ad81760201c565b15905090565b6001600160a01b03163b151590565b610fb38061010e6000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063ac0b4b121161010f578063df6d9212116100a2578063e8462e8f11610071578063e8462e8f146105e7578063f2f4ca16146105f0578063f2fde38b1461065c578063f4ea93d81461066f57600080fd5b8063df6d921214610586578063e34b514514610599578063e501ed04146105ac578063e61c6d6f146105de57600080fd5b8063cb830d03116100de578063cb830d03146104a2578063d59c9eb6146104af578063db0577fd14610504578063defe20531461057357600080fd5b8063ac0b4b1214610449578063af8b1c6f1461045c578063b24be6871461046f578063b59ec4781461048257600080fd5b80637f3ad0561161018757806396bd512c1161015657806396bd512c1461037e5780639df5a1f2146103c7578063a086fc22146103e1578063a44026a31461043657600080fd5b80637f3ad056146102f3578063854f7ebb146103065780638da5cb5b14610326578063947574ac1461033757600080fd5b80635fe3b567116101c35780635fe3b5671461029b5780636a146024146102ae578063715018a6146102bd578063720ceb02146102c557600080fd5b806320c342d9146101f55780632ebf4be01461022d5780633528e4ce1461025b57806352f0f81414610270575b600080fd5b610218610203366004610e4d565b60a36020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61024d61023b366004610e4d565b60a56020526000908152604090205481565b604051908152602001610224565b61026e610269366004610e4d565b61068b565b005b60aa54610283906001600160a01b031681565b6040516001600160a01b039091168152602001610224565b60ae54610283906001600160a01b031681565b61024d670de0b6b3a764000081565b61026e610940565b6102186102d3366004610e68565b60a060209081526000928352604080842090915290825290205460ff1681565b60ad54610283906001600160a01b031681565b61024d610314366004610e4d565b60a46020526000908152604090205481565b6033546001600160a01b0316610283565b610369610345366004610e68565b609f6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610224565b6103ac61038c366004610e4d565b60a76020526000908152604090205461ffff808216916201000090041682565b6040805161ffff938416815292909116602083015201610224565b6103cf600881565b60405160ff9091168152602001610224565b6104166103ef366004610e4d565b60a96020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610224565b60b054610283906001600160a01b031681565b610283610457366004610e9b565b6109ab565b60af54610283906001600160a01b031681565b60ab54610283906001600160a01b031681565b61024d610490366004610e4d565b60b26020526000908152604090205481565b60b3546102189060ff1681565b6104e56104bd366004610e4d565b60a86020526000908152604090205460ff808216916101008104821691620100009091041683565b6040805193151584529115156020840152151590820152606001610224565b610547610512366004610e4d565b60a66020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610224565b60ac54610283906001600160a01b031681565b60b154610283906001600160a01b031681565b6102836105a7366004610eb4565b6109d5565b6103696105ba366004610e68565b609e6020908152600092835260408084209091529082529020805460019091015482565b61024d60975481565b61024d60985481565b6099546106289067ffffffffffffffff80821691680100000000000000008104821691600160801b8204811691600160c01b90041684565b6040805167ffffffffffffffff95861681529385166020850152918416918301919091529091166060820152608001610224565b61026e61066a366004610e4d565b610a0d565b61067861271081565b60405161ffff9091168152602001610224565b6001600160a01b038116600090815260a660205260409020805463ffffffff1643111561093c576001600160a01b038216600081815260a760209081526040808320815163bd6d894d60e01b815291518795919493919263bd6d894d926004808301939192829003018187875af115801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190610ede565b90506000836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107949190610ede565b60408051610120810182526001600160a01b038916600081815260a4602090815284822054845282825260a58152848220548185015283850188905260608085018790528b546001600160701b0364010000000082048116608080890191909152600160901b9092041660a08701528a5461ffff80821660c0890152620100009091041660e087015293835260a98252858320865194850187528054855260018101549285019290925260028201549584019590955260030154938201939093526101008201529192508061086883610ae7565b6001600160a01b038b16600081815260a46020908152604080832086905560a58252918290208490558c546001600160701b038a8116600160901b0271ffffffffffffffffffffffffffffffffffff918d166401000000000271ffffffffffffffffffffffffffffffffffff1990931663ffffffff4316179290921716178d55815185815290810184905290810189905260608101889052929450909250907fe9f571cc89dec9d3545848be792adb166a35fd4ac7f853471f9b5a16db51b9e89060800160405180910390a2505050505050505b5050565b6033546001600160a01b0316331461099f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6109a96000610d71565b565b60a281815481106109bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b60a160205281600052604060002081815481106109f157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6033546001600160a01b03163314610a675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b6001600160a01b038116610acc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610ad581610d71565b50565b6001600160a01b03163b151590565b6000806000610b0784608001518560400151610dc390919063ffffffff16565b90506000610b268560a001518660600151610dc390919063ffffffff16565b9050600080828411610be857600061271061ffff16848960e00151610b4b9190610f0d565b60e08a01518790610b5e90612710610f2c565b610b689190610f0d565b610b729190610f43565b610b7c9190610f5b565b9050612710610b8b8683610f2c565b8960c00151610b9a9190610f0d565b610ba49190610f5b565b610bae9082610f2c565b9250612710610bbd8286610f2c565b8960c00151610bcc9190610f0d565b610bd69190610f5b565b610be09082610f43565b915050610bee565b50819050805b610100870151604001511580610c08575061010087015151155b15610c20578651610c199083610e06565b9550610cb2565b6000610c71610c63610c488a600001518b610100015160400151610e0690919063ffffffff16565b60808b01516101008c015151610c5d91610e06565b90610dc3565b670de0b6b3a7640000610e1b565b9050610cae610c808287610e06565b610c9c85610c9685670de0b6b3a7640000610f2c565b90610e06565b610ca69190610f43565b895190610e06565b9650505b610100870151606001511580610ccf575061010087015160200151155b15610cea576020870151610ce39082610e06565b9450610d68565b6000610d2a610c63610d128a602001518b610100015160600151610e0690919063ffffffff16565b60a08b01516101008c015160200151610c5d91610e06565b9050610d64610d398286610e06565b610d4f84610c9685670de0b6b3a7640000610f2c565b610d599190610f43565b60208a015190610e06565b9550505b50505050915091565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000082610dd98583610f0d565b610deb90670de0b6b3a7640000610f0d565b610df59190610f5b565b610dff9190610f5b565b9392505050565b6000670de0b6b3a7640000610df58385610f0d565b6000818310610e2a5781610dff565b5090919050565b80356001600160a01b0381168114610e4857600080fd5b919050565b600060208284031215610e5f57600080fd5b610dff82610e31565b60008060408385031215610e7b57600080fd5b610e8483610e31565b9150610e9260208401610e31565b90509250929050565b600060208284031215610ead57600080fd5b5035919050565b60008060408385031215610ec757600080fd5b610ed083610e31565b946020939093013593505050565b600060208284031215610ef057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610f2757610f27610ef7565b500290565b600082821015610f3e57610f3e610ef7565b500390565b60008219821115610f5657610f56610ef7565b500190565b600082610f7857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e72a5cd4c298ddbbd35f56e1f18f0cc6c00ece1a62e04fe7744b54bb2b0f410a64736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063ac0b4b121161010f578063df6d9212116100a2578063e8462e8f11610071578063e8462e8f146105e7578063f2f4ca16146105f0578063f2fde38b1461065c578063f4ea93d81461066f57600080fd5b8063df6d921214610586578063e34b514514610599578063e501ed04146105ac578063e61c6d6f146105de57600080fd5b8063cb830d03116100de578063cb830d03146104a2578063d59c9eb6146104af578063db0577fd14610504578063defe20531461057357600080fd5b8063ac0b4b1214610449578063af8b1c6f1461045c578063b24be6871461046f578063b59ec4781461048257600080fd5b80637f3ad0561161018757806396bd512c1161015657806396bd512c1461037e5780639df5a1f2146103c7578063a086fc22146103e1578063a44026a31461043657600080fd5b80637f3ad056146102f3578063854f7ebb146103065780638da5cb5b14610326578063947574ac1461033757600080fd5b80635fe3b567116101c35780635fe3b5671461029b5780636a146024146102ae578063715018a6146102bd578063720ceb02146102c557600080fd5b806320c342d9146101f55780632ebf4be01461022d5780633528e4ce1461025b57806352f0f81414610270575b600080fd5b610218610203366004610e4d565b60a36020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61024d61023b366004610e4d565b60a56020526000908152604090205481565b604051908152602001610224565b61026e610269366004610e4d565b61068b565b005b60aa54610283906001600160a01b031681565b6040516001600160a01b039091168152602001610224565b60ae54610283906001600160a01b031681565b61024d670de0b6b3a764000081565b61026e610940565b6102186102d3366004610e68565b60a060209081526000928352604080842090915290825290205460ff1681565b60ad54610283906001600160a01b031681565b61024d610314366004610e4d565b60a46020526000908152604090205481565b6033546001600160a01b0316610283565b610369610345366004610e68565b609f6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610224565b6103ac61038c366004610e4d565b60a76020526000908152604090205461ffff808216916201000090041682565b6040805161ffff938416815292909116602083015201610224565b6103cf600881565b60405160ff9091168152602001610224565b6104166103ef366004610e4d565b60a96020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610224565b60b054610283906001600160a01b031681565b610283610457366004610e9b565b6109ab565b60af54610283906001600160a01b031681565b60ab54610283906001600160a01b031681565b61024d610490366004610e4d565b60b26020526000908152604090205481565b60b3546102189060ff1681565b6104e56104bd366004610e4d565b60a86020526000908152604090205460ff808216916101008104821691620100009091041683565b6040805193151584529115156020840152151590820152606001610224565b610547610512366004610e4d565b60a66020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610224565b60ac54610283906001600160a01b031681565b60b154610283906001600160a01b031681565b6102836105a7366004610eb4565b6109d5565b6103696105ba366004610e68565b609e6020908152600092835260408084209091529082529020805460019091015482565b61024d60975481565b61024d60985481565b6099546106289067ffffffffffffffff80821691680100000000000000008104821691600160801b8204811691600160c01b90041684565b6040805167ffffffffffffffff95861681529385166020850152918416918301919091529091166060820152608001610224565b61026e61066a366004610e4d565b610a0d565b61067861271081565b60405161ffff9091168152602001610224565b6001600160a01b038116600090815260a660205260409020805463ffffffff1643111561093c576001600160a01b038216600081815260a760209081526040808320815163bd6d894d60e01b815291518795919493919263bd6d894d926004808301939192829003018187875af115801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e9190610ede565b90506000836001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107949190610ede565b60408051610120810182526001600160a01b038916600081815260a4602090815284822054845282825260a58152848220548185015283850188905260608085018790528b546001600160701b0364010000000082048116608080890191909152600160901b9092041660a08701528a5461ffff80821660c0890152620100009091041660e087015293835260a98252858320865194850187528054855260018101549285019290925260028201549584019590955260030154938201939093526101008201529192508061086883610ae7565b6001600160a01b038b16600081815260a46020908152604080832086905560a58252918290208490558c546001600160701b038a8116600160901b0271ffffffffffffffffffffffffffffffffffff918d166401000000000271ffffffffffffffffffffffffffffffffffff1990931663ffffffff4316179290921716178d55815185815290810184905290810189905260608101889052929450909250907fe9f571cc89dec9d3545848be792adb166a35fd4ac7f853471f9b5a16db51b9e89060800160405180910390a2505050505050505b5050565b6033546001600160a01b0316331461099f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6109a96000610d71565b565b60a281815481106109bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b60a160205281600052604060002081815481106109f157600080fd5b6000918252602090912001546001600160a01b03169150829050565b6033546001600160a01b03163314610a675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b6001600160a01b038116610acc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610ad581610d71565b50565b6001600160a01b03163b151590565b6000806000610b0784608001518560400151610dc390919063ffffffff16565b90506000610b268560a001518660600151610dc390919063ffffffff16565b9050600080828411610be857600061271061ffff16848960e00151610b4b9190610f0d565b60e08a01518790610b5e90612710610f2c565b610b689190610f0d565b610b729190610f43565b610b7c9190610f5b565b9050612710610b8b8683610f2c565b8960c00151610b9a9190610f0d565b610ba49190610f5b565b610bae9082610f2c565b9250612710610bbd8286610f2c565b8960c00151610bcc9190610f0d565b610bd69190610f5b565b610be09082610f43565b915050610bee565b50819050805b610100870151604001511580610c08575061010087015151155b15610c20578651610c199083610e06565b9550610cb2565b6000610c71610c63610c488a600001518b610100015160400151610e0690919063ffffffff16565b60808b01516101008c015151610c5d91610e06565b90610dc3565b670de0b6b3a7640000610e1b565b9050610cae610c808287610e06565b610c9c85610c9685670de0b6b3a7640000610f2c565b90610e06565b610ca69190610f43565b895190610e06565b9650505b610100870151606001511580610ccf575061010087015160200151155b15610cea576020870151610ce39082610e06565b9450610d68565b6000610d2a610c63610d128a602001518b610100015160600151610e0690919063ffffffff16565b60a08b01516101008c015160200151610c5d91610e06565b9050610d64610d398286610e06565b610d4f84610c9685670de0b6b3a7640000610f2c565b610d599190610f43565b60208a015190610e06565b9550505b50505050915091565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000670de0b6b3a764000082610dd98583610f0d565b610deb90670de0b6b3a7640000610f0d565b610df59190610f5b565b610dff9190610f5b565b9392505050565b6000670de0b6b3a7640000610df58385610f0d565b6000818310610e2a5781610dff565b5090919050565b80356001600160a01b0381168114610e4857600080fd5b919050565b600060208284031215610e5f57600080fd5b610dff82610e31565b60008060408385031215610e7b57600080fd5b610e8483610e31565b9150610e9260208401610e31565b90509250929050565b600060208284031215610ead57600080fd5b5035919050565b60008060408385031215610ec757600080fd5b610ed083610e31565b946020939093013593505050565b600060208284031215610ef057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610f2757610f27610ef7565b500290565b600082821015610f3e57610f3e610ef7565b500390565b60008219821115610f5657610f56610ef7565b500190565b600082610f7857634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220e72a5cd4c298ddbbd35f56e1f18f0cc6c00ece1a62e04fe7744b54bb2b0f410a64736f6c634300080f0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.