Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
IndexManager
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.28; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Context.sol"; import "./interfaces/IIndexManager.sol"; import "./interfaces/IWeightedIndexFactory.sol"; contract IndexManager is IIndexManager, Context, Ownable { IWeightedIndexFactory public podFactory; IIndexAndStatus[] public indexes; // index/pod => idx in indexes array mapping(address => uint256) _indexIdx; mapping(address => bool) public authorized; constructor(IWeightedIndexFactory _podFactory) Ownable(_msgSender()) { podFactory = _podFactory; } modifier onlyAuthorized() { require(_authorizedOrOwner(_msgSender()), "UA1"); _; } modifier onlyAuthorizedOrCreator(address _index) { require(_authorizedOwnerOrCreator(_msgSender(), _index), "UA2"); _; } function deployNewIndex( string memory indexName, string memory indexSymbol, bytes memory baseConfig, bytes memory immutables, address _owner ) external override returns (address _index) { (_index,,) = podFactory.deployPodAndLinkDependencies(indexName, indexSymbol, baseConfig, immutables); _addIndex(_index, _owner, false, false, false); } function indexLength() external view returns (uint256) { return indexes.length; } function allIndexes() external view override returns (IIndexAndStatus[] memory) { return indexes; } function setFactory(IWeightedIndexFactory _newFactory) external onlyOwner { podFactory = _newFactory; } function setAuthorized(address _auth, bool _isAuthed) external onlyOwner { require(authorized[_auth] != _isAuthed, "CHANGE"); authorized[_auth] = _isAuthed; } function addIndex(address _index, address _creator, bool _verified, bool _selfLending, bool _makePublic) external override onlyAuthorized { _addIndex(_index, _creator, _verified, _selfLending, _makePublic); } function _addIndex(address _index, address _user, bool _verified, bool _selfLending, bool _makePublic) internal { _indexIdx[_index] = indexes.length; indexes.push( IIndexAndStatus({ index: _index, creator: _user, verified: _verified, selfLending: _selfLending, makePublic: _makePublic }) ); emit AddIndex(_index, _verified); } function removeIndex(uint256 _idxInAry) external override onlyAuthorized { IIndexAndStatus memory _idx = indexes[_idxInAry]; delete _indexIdx[_idx.index]; indexes[_idxInAry] = indexes[indexes.length - 1]; _indexIdx[indexes[_idxInAry].index] = _idxInAry; indexes.pop(); emit RemoveIndex(_idx.index); } function verifyIndex(uint256 _idx, bool _verified) external override onlyAuthorized { require(indexes[_idx].verified != _verified, "CHANGE"); indexes[_idx].verified = _verified; emit SetVerified(indexes[_idx].index, _verified); } function updateMakePublic(address _index, bool _shouldMakePublic) external onlyAuthorizedOrCreator(_index) { uint256 _idx = _indexIdx[_index]; IIndexAndStatus storage _indexObj = indexes[_idx]; require(_indexObj.makePublic != _shouldMakePublic, "T"); _indexObj.makePublic = _shouldMakePublic; } function updateSelfLending(address _index, bool _isSelfLending) external onlyAuthorizedOrCreator(_index) { uint256 _idx = _indexIdx[_index]; IIndexAndStatus storage _indexObj = indexes[_idx]; require(_indexObj.selfLending != _isSelfLending, "T"); _indexObj.selfLending = _isSelfLending; } function _authorizedOrOwner(address _sender) internal view returns (bool) { return _sender == owner() || authorized[_sender]; } function _authorizedOwnerOrCreator(address _sender, address _index) internal view returns (bool) { uint256 _idx = _indexIdx[_index]; return _authorizedOrOwner(_sender) || indexes[_idx].creator == _sender; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.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. * * The initial owner is set to the address provided by the deployer. 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 Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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 Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; import "./IDecentralizedIndex.sol"; interface IIndexManager { struct IIndexAndStatus { address index; // aka pod address creator; bool verified; // whether it's a safe pod as confirmed by the protocol team bool selfLending; // if it's an LVF pod, whether it's self-lending or not bool makePublic; // whether it should show in the UI or not } event AddIndex(address indexed index, bool verified); event RemoveIndex(address indexed index); event SetVerified(address indexed index, bool verified); function allIndexes() external view returns (IIndexAndStatus[] memory); function addIndex(address index, address _creator, bool verified, bool selfLending, bool makePublic) external; function removeIndex(uint256 idx) external; function verifyIndex(uint256 idx, bool verified) external; function deployNewIndex( string memory indexName, string memory indexSymbol, bytes memory baseConfig, bytes memory immutables, address owner ) external returns (address _index); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; import "./IDecentralizedIndex.sol"; interface IWeightedIndexFactory { function deployPodAndLinkDependencies( string memory indexName, string memory indexSymbol, bytes memory baseConfig, bytes memory immutables ) external returns (address weightedIndex, address stakingPool, address tokenRewards); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./IDexAdapter.sol"; interface IDecentralizedIndex is IERC20 { enum IndexType { WEIGHTED, UNWEIGHTED } struct Config { address partner; uint256 debondCooldown; bool hasTransferTax; bool blacklistTKNpTKNPoolV2; } // all fees: 1 == 0.01%, 10 == 0.1%, 100 == 1% struct Fees { uint16 burn; uint16 bond; uint16 debond; uint16 buy; uint16 sell; uint16 partner; } struct IndexAssetInfo { address token; uint256 weighting; uint256 basePriceUSDX96; address c1; // arbitrary contract/address field we can use for an index uint256 q1; // arbitrary quantity/number field we can use for an index } /// @notice The ```Create``` event fires when a new decentralized index has been created /// @param newIdx The CA of the new index contract /// @param wallet The creator of the new index event Create(address indexed newIdx, address indexed wallet); /// @notice The ```Initialize``` event fires when the new pod has been initialized, /// @notice which is at creation on some and in another txn for others (gas limits) /// @param wallet The wallet that initialized /// @param v2Pool The new UniV2 derivative pool that was created at initialization event Initialize(address indexed wallet, address v2Pool); /// @notice The ```Bond``` event fires when someone wraps into the pod which mints new pod tokens /// @param wallet The wallet that wrapped /// @param token The token that was used as a ref to wrap into, representing an underlying tkn /// @param amountTokensBonded Amount of underlying tkns used to wrap/bond /// @param amountTokensMinted Amount of new pod tokens (pTKN) minted event Bond(address indexed wallet, address indexed token, uint256 amountTokensBonded, uint256 amountTokensMinted); /// @notice The ```Debond``` event fires when someone unwraps from a pod and redeems underlying tkn(s) /// @param wallet The wallet that unwrapped/debond /// @param amountDebonded Amount of pTKNs burned/unwrapped event Debond(address indexed wallet, uint256 amountDebonded); /// @notice The ```AddLiquidity``` event fires when new liquidity (LP) for a pod is added /// @param wallet The wallet that added LP /// @param amountTokens Amount of pTKNs used for LP /// @param amountDAI Amount of pairedLpAsset used for LP event AddLiquidity(address indexed wallet, uint256 amountTokens, uint256 amountDAI); /// @notice The ```RemoveLiquidity``` event fires when LP is removed for a pod /// @param wallet The wallet that removed LP /// @param amountLiquidity Amount of liquidity removed event RemoveLiquidity(address indexed wallet, uint256 amountLiquidity); event SetPartner(address indexed wallet, address newPartner); event SetPartnerFee(address indexed wallet, uint16 newFee); function BOND_FEE() external view returns (uint16); function DEBOND_FEE() external view returns (uint16); function DEX_HANDLER() external view returns (IDexAdapter); function FLASH_FEE_AMOUNT_DAI() external view returns (uint256); function PAIRED_LP_TOKEN() external view returns (address); function config() external view returns (Config calldata); function fees() external view returns (Fees calldata); function unlocked() external view returns (uint8); function indexType() external view returns (IndexType); function created() external view returns (uint256); function lpStakingPool() external view returns (address); function lpRewardsToken() external view returns (address); function partner() external view returns (address); function isAsset(address token) external view returns (bool); function getAllAssets() external view returns (IndexAssetInfo[] memory); function getInitialAmount(address sToken, uint256 sAmount, address tToken) external view returns (uint256); function processPreSwapFeesAndSwap() external; function totalAssets() external view returns (uint256 totalManagedAssets); function totalAssets(address asset) external view returns (uint256 totalManagedAssets); function convertToShares(uint256 assets) external view returns (uint256 shares); function convertToAssets(uint256 shares) external view returns (uint256 assets); function setup() external; function bond(address token, uint256 amount, uint256 amountMintMin) external; function debond(uint256 amount, address[] memory token, uint8[] memory percentage) external; function addLiquidityV2(uint256 idxTokens, uint256 daiTokens, uint256 slippage, uint256 deadline) external returns (uint256); function removeLiquidityV2(uint256 lpTokens, uint256 minTokens, uint256 minDAI, uint256 deadline) external; function flash(address recipient, address token, uint256 amount, bytes calldata data) external; function flashMint(address recipient, uint256 amount, bytes calldata data) external; function setLpStakingPool(address lpStakingPool) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.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 pragma solidity ^0.8.28; interface IDexAdapter { function ASYNC_INITIALIZE() external view returns (bool); function V2_ROUTER() external view returns (address); function V3_ROUTER() external view returns (address); function WETH() external view returns (address); function getV3Pool(address _token0, address _token1, int24 _tickSpacing) external view returns (address _pool); function getV3Pool(address _token0, address _token1, uint24 _poolFee) external view returns (address _pool); function getV2Pool(address _token0, address _token1) external view returns (address _pool); function createV2Pool(address _token0, address _token1) external returns (address _pool); function getReserves(address _pool) external view returns (uint112, uint112); function swapV2Single( address _tokenIn, address _tokenOut, uint256 _amountIn, uint256 _amountOutMin, address _recipient ) external returns (uint256 _amountOut); function swapV2SingleExactOut( address _tokenIn, address _tokenOut, uint256 _amountInMax, uint256 _amountOut, address _recipient ) external returns (uint256 _amountInUsed); function swapV3Single( address _tokenIn, address _tokenOut, uint24 _fee, uint256 _amountIn, uint256 _amountOutMin, address _recipient ) external returns (uint256 _amountOut); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external; function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external; }
{ "remappings": [ "@chainlink/=node_modules/@chainlink/", "@fraxlend/=test/invariant/modules/fraxlend/", "fuzzlib/=lib/fuzzlib/src/", "swap-router/=test/invariant/modules/v3-periphery/swapRouter/", "v3-core/=test/invariant/modules/v3-core/", "v3-periphery/=test/invariant/modules/v3-periphery/", "v2-core/=test/invariant/modules/uniswap-v2/v2-core/contracts/", "v2-periphery/=test/invariant/modules/uniswap-v2/v2-periphery/contracts/", "uniswap-v2/=test/invariant/modules/uniswap-v2/", "solidity-bytes-utils/contracts/=test/invariant/modules/fraxlend/libraries/", "@rari-capital/solmate/=node_modules/solmate/", "@arbitrum/=node_modules/@arbitrum/", "@ensdomains/=node_modules/@ensdomains/", "@eth-optimism/=node_modules/@eth-optimism/", "@ethereum-waffle/=node_modules/@ethereum-waffle/", "@mean-finance/=node_modules/@mean-finance/", "@offchainlabs/=node_modules/@offchainlabs/", "@openzeppelin/=node_modules/@openzeppelin/", "@scroll-tech/=node_modules/@scroll-tech/", "@uniswap/=node_modules/@uniswap/", "@zksync/=node_modules/@zksync/", "base64-sol/=node_modules/base64-sol/", "ds-test/=lib/fuzzlib/lib/forge-std/lib/ds-test/src/", "erc721a/=node_modules/erc721a/", "eth-gas-reporter/=node_modules/eth-gas-reporter/", "forge-std/=lib/forge-std/src/", "hardhat/=node_modules/hardhat/", "solidity-code-metrics/=node_modules/solidity-code-metrics/", "solmate/=node_modules/solmate/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IWeightedIndexFactory","name":"_podFactory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"index","type":"address"},{"indexed":false,"internalType":"bool","name":"verified","type":"bool"}],"name":"AddIndex","type":"event"},{"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":"index","type":"address"}],"name":"RemoveIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"index","type":"address"},{"indexed":false,"internalType":"bool","name":"verified","type":"bool"}],"name":"SetVerified","type":"event"},{"inputs":[{"internalType":"address","name":"_index","type":"address"},{"internalType":"address","name":"_creator","type":"address"},{"internalType":"bool","name":"_verified","type":"bool"},{"internalType":"bool","name":"_selfLending","type":"bool"},{"internalType":"bool","name":"_makePublic","type":"bool"}],"name":"addIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allIndexes","outputs":[{"components":[{"internalType":"address","name":"index","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"bool","name":"verified","type":"bool"},{"internalType":"bool","name":"selfLending","type":"bool"},{"internalType":"bool","name":"makePublic","type":"bool"}],"internalType":"struct IIndexManager.IIndexAndStatus[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"indexName","type":"string"},{"internalType":"string","name":"indexSymbol","type":"string"},{"internalType":"bytes","name":"baseConfig","type":"bytes"},{"internalType":"bytes","name":"immutables","type":"bytes"},{"internalType":"address","name":"_owner","type":"address"}],"name":"deployNewIndex","outputs":[{"internalType":"address","name":"_index","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"indexLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexes","outputs":[{"internalType":"address","name":"index","type":"address"},{"internalType":"address","name":"creator","type":"address"},{"internalType":"bool","name":"verified","type":"bool"},{"internalType":"bool","name":"selfLending","type":"bool"},{"internalType":"bool","name":"makePublic","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"podFactory","outputs":[{"internalType":"contract IWeightedIndexFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idxInAry","type":"uint256"}],"name":"removeIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"},{"internalType":"bool","name":"_isAuthed","type":"bool"}],"name":"setAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IWeightedIndexFactory","name":"_newFactory","type":"address"}],"name":"setFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_index","type":"address"},{"internalType":"bool","name":"_shouldMakePublic","type":"bool"}],"name":"updateMakePublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_index","type":"address"},{"internalType":"bool","name":"_isSelfLending","type":"bool"}],"name":"updateSelfLending","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"},{"internalType":"bool","name":"_verified","type":"bool"}],"name":"verifyIndex","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161134738038061134783398101604081905261002f916100d4565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e81610084565b50600180546001600160a01b0319166001600160a01b0392909216919091179055610104565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b611234806101136000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806392f8eb9411610097578063c0d43e9211610066578063c0d43e921461025c578063c8bb46ab1461026f578063f2fde38b14610280578063f53d9ec11461029357600080fd5b806392f8eb94146101b557806398d98fe714610203578063b918161114610216578063be286f061461024957600080fd5b8063701b924d116100d3578063701b924d1461015e578063711bf9b214610189578063715018a61461019c5780638da5cb5b146101a457600080fd5b80635bb47808146101055780636171e40d1461011a5780636496e2a91461013857806369f030941461014b575b600080fd5b610118610113366004610d91565b6102a6565b005b6101226102d0565b60405161012f9190610db5565b60405180910390f35b610118610146366004610e4e565b61037f565b610118610159366004610e4e565b61046d565b600154610171906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b610118610197366004610e4e565b610554565b6101186105e0565b6000546001600160a01b0316610171565b6101c86101c3366004610e83565b6105f4565b604080516001600160a01b0396871681529590941660208601529115159284019290925290151560608301521515608082015260a00161012f565b610171610211366004610f48565b61064f565b610239610224366004610d91565b60046020526000908152604090205460ff1681565b604051901515815260200161012f565b61011861025736600461101d565b6106e6565b61011861026a366004611086565b61071f565b60025460405190815260200161012f565b61011861028e366004610d91565b610855565b6101186102a1366004610e83565b610893565b6102ae610b06565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805480602002602001604051908101604052809291908181526020016000905b828210156103765760008481526020908190206040805160a0810182526002860290920180546001600160a01b0390811684526001918201549081168486015260ff600160a01b82048116151593850193909352600160a81b8104831615156060850152600160b01b90049091161515608083015290835290920191016102f4565b50505050905090565b8161038b335b82610b33565b6103c25760405162461bcd60e51b81526020600482015260036024820152622aa09960e91b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526003602052604081205460028054919291839081106103f2576103f26110a9565b906000526020600020906002020190508315158160010160169054906101000a900460ff1615150361044a5760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016103b9565b6001018054931515600160b01b0260ff60b01b1990941693909317909255505050565b8161047733610385565b6104a95760405162461bcd60e51b81526020600482015260036024820152622aa09960e91b60448201526064016103b9565b6001600160a01b03831660009081526003602052604081205460028054919291839081106104d9576104d96110a9565b906000526020600020906002020190508315158160010160159054906101000a900460ff161515036105315760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016103b9565b6001018054931515600160a81b0260ff60a81b1990941693909317909255505050565b61055c610b06565b6001600160a01b03821660009081526004602052604090205481151560ff9091161515036105b55760405162461bcd60e51b81526020600482015260066024820152654348414e474560d01b60448201526064016103b9565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6105e8610b06565b6105f26000610ba1565b565b6002818154811061060457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692509081169060ff600160a01b8204811691600160a81b8104821691600160b01b9091041685565b600154604051638874dd9560e01b81526000916001600160a01b031690638874dd9590610686908990899089908990600401611105565b6060604051808303816000875af11580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c9919061115d565b509091506106dd9050818360008080610bf1565b95945050505050565b6106ef33610d45565b61070b5760405162461bcd60e51b81526004016103b9906111aa565b6107188585858585610bf1565b5050505050565b61072833610d45565b6107445760405162461bcd60e51b81526004016103b9906111aa565b8015156002838154811061075a5761075a6110a9565b906000526020600020906002020160010160149054906101000a900460ff161515036107b15760405162461bcd60e51b81526020600482015260066024820152654348414e474560d01b60448201526064016103b9565b80600283815481106107c5576107c56110a9565b906000526020600020906002020160010160146101000a81548160ff02191690831515021790555060028281548110610800576108006110a9565b60009182526020918290206002909102015460405183151581526001600160a01b03909116917f10588b087899f367a886cecce4b60fe07afd4e46f9820985ce9e593b86f746bc910160405180910390a25050565b61085d610b06565b6001600160a01b03811661088757604051631e4fbdf760e01b8152600060048201526024016103b9565b61089081610ba1565b50565b61089c33610d45565b6108b85760405162461bcd60e51b81526004016103b9906111aa565b6000600282815481106108cd576108cd6110a9565b600091825260208083206040805160a081018252600294850290920180546001600160a01b039081168085526001928301549182168587015260ff600160a01b83048116151586860152600160a81b8304811615156060870152600160b01b90920490911615156080850152865260039093528420939093558154929350909161095791906111c7565b81548110610967576109676110a9565b906000526020600020906002020160028381548110610988576109886110a9565b6000918252602082208354600292830290910180546001600160a01b039283166001600160a01b031991821617825560019586018054969092018054969093169086168117835581546001600160a81b031990961617600160a01b9586900460ff908116151590960217808355815460ff60a81b198216600160a81b91829004881615159091029081178455915461ffff60a81b1990911660ff60b01b1990921691909117600160b01b9182900490951615150293909317909255815484926003929184908110610a5b57610a5b6110a9565b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902091909155805480610a9757610a976111e8565b60008281526020812060026000199093019283020180546001600160a01b031916815560010180546001600160b81b0319169055915581516040516001600160a01b0391909116917f2766b6cc2c2aa2812d03b4416da1f58ea9d70289993b2c8205d6a6927b4cfe5b91a25050565b6000546001600160a01b031633146105f25760405163118cdaa760e01b81523360048201526024016103b9565b6001600160a01b038116600090815260036020526040812054610b5584610d45565b80610b975750836001600160a01b031660028281548110610b7857610b786110a9565b60009182526020909120600160029092020101546001600160a01b0316145b9150505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600280546001600160a01b038781166000818152600360209081526040808320869055805160a0810182528481528b86168184019081528b15158284018181528c1515606085019081528c15156080860190815260018c018d55978c9052935199909a027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180549a8a166001600160a01b0319909b169a909a1790995590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90980180549951925195511515600160b01b0260ff60b01b19961515600160a81b029690961661ffff60a81b19931515600160a01b026001600160a81b0319909b169990981698909817989098171694909417919091179093559051928352917fd6c7c45c9b719d31439f7621e4f3d0864f3ec71d544b159e02df8e54f7f86440910160405180910390a25050505050565b600080546001600160a01b0383811691161480610b9b5750506001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b038116811461089057600080fd5b600060208284031215610da357600080fd5b8135610dae81610d7c565b9392505050565b602080825282518282018190526000918401906040840190835b81811015610e2e57835180516001600160a01b039081168552602080830151909116818601526040808301511515908601526060808301511515908601526080918201511515918501919091529093019260a090920191600101610dcf565b509095945050505050565b80358015158114610e4957600080fd5b919050565b60008060408385031215610e6157600080fd5b8235610e6c81610d7c565b9150610e7a60208401610e39565b90509250929050565b600060208284031215610e9557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ec357600080fd5b81356020830160008067ffffffffffffffff841115610ee457610ee4610e9c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610f1357610f13610e9c565b604052838152905080828401871015610f2b57600080fd5b838360208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610f6057600080fd5b853567ffffffffffffffff811115610f7757600080fd5b610f8388828901610eb2565b955050602086013567ffffffffffffffff811115610fa057600080fd5b610fac88828901610eb2565b945050604086013567ffffffffffffffff811115610fc957600080fd5b610fd588828901610eb2565b935050606086013567ffffffffffffffff811115610ff257600080fd5b610ffe88828901610eb2565b925050608086013561100f81610d7c565b809150509295509295909350565b600080600080600060a0868803121561103557600080fd5b853561104081610d7c565b9450602086013561105081610d7c565b935061105e60408701610e39565b925061106c60608701610e39565b915061107a60808701610e39565b90509295509295909350565b6000806040838503121561109957600080fd5b82359150610e7a60208401610e39565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156110e5576020818501810151868301820152016110c9565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600061111860808301876110bf565b828103602084015261112a81876110bf565b9050828103604084015261113e81866110bf565b9050828103606084015261115281856110bf565b979650505050505050565b60008060006060848603121561117257600080fd5b835161117d81610d7c565b602085015190935061118e81610d7c565b604085015190925061119f81610d7c565b809150509250925092565b60208082526003908201526255413160e81b604082015260600190565b81810381811115610b9b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212203581ea71c93865aa37d3a2ca48c3ed1738435a71a1b0525902046b56fd755cde64736f6c634300081c00330000000000000000000000001a3f5e320b86293017b6e36b75eb9e8bb048b5cd
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c806392f8eb9411610097578063c0d43e9211610066578063c0d43e921461025c578063c8bb46ab1461026f578063f2fde38b14610280578063f53d9ec11461029357600080fd5b806392f8eb94146101b557806398d98fe714610203578063b918161114610216578063be286f061461024957600080fd5b8063701b924d116100d3578063701b924d1461015e578063711bf9b214610189578063715018a61461019c5780638da5cb5b146101a457600080fd5b80635bb47808146101055780636171e40d1461011a5780636496e2a91461013857806369f030941461014b575b600080fd5b610118610113366004610d91565b6102a6565b005b6101226102d0565b60405161012f9190610db5565b60405180910390f35b610118610146366004610e4e565b61037f565b610118610159366004610e4e565b61046d565b600154610171906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b610118610197366004610e4e565b610554565b6101186105e0565b6000546001600160a01b0316610171565b6101c86101c3366004610e83565b6105f4565b604080516001600160a01b0396871681529590941660208601529115159284019290925290151560608301521515608082015260a00161012f565b610171610211366004610f48565b61064f565b610239610224366004610d91565b60046020526000908152604090205460ff1681565b604051901515815260200161012f565b61011861025736600461101d565b6106e6565b61011861026a366004611086565b61071f565b60025460405190815260200161012f565b61011861028e366004610d91565b610855565b6101186102a1366004610e83565b610893565b6102ae610b06565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60606002805480602002602001604051908101604052809291908181526020016000905b828210156103765760008481526020908190206040805160a0810182526002860290920180546001600160a01b0390811684526001918201549081168486015260ff600160a01b82048116151593850193909352600160a81b8104831615156060850152600160b01b90049091161515608083015290835290920191016102f4565b50505050905090565b8161038b335b82610b33565b6103c25760405162461bcd60e51b81526020600482015260036024820152622aa09960e91b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526003602052604081205460028054919291839081106103f2576103f26110a9565b906000526020600020906002020190508315158160010160169054906101000a900460ff1615150361044a5760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016103b9565b6001018054931515600160b01b0260ff60b01b1990941693909317909255505050565b8161047733610385565b6104a95760405162461bcd60e51b81526020600482015260036024820152622aa09960e91b60448201526064016103b9565b6001600160a01b03831660009081526003602052604081205460028054919291839081106104d9576104d96110a9565b906000526020600020906002020190508315158160010160159054906101000a900460ff161515036105315760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016103b9565b6001018054931515600160a81b0260ff60a81b1990941693909317909255505050565b61055c610b06565b6001600160a01b03821660009081526004602052604090205481151560ff9091161515036105b55760405162461bcd60e51b81526020600482015260066024820152654348414e474560d01b60448201526064016103b9565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6105e8610b06565b6105f26000610ba1565b565b6002818154811061060457600080fd5b6000918252602090912060029091020180546001909101546001600160a01b0391821692509081169060ff600160a01b8204811691600160a81b8104821691600160b01b9091041685565b600154604051638874dd9560e01b81526000916001600160a01b031690638874dd9590610686908990899089908990600401611105565b6060604051808303816000875af11580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c9919061115d565b509091506106dd9050818360008080610bf1565b95945050505050565b6106ef33610d45565b61070b5760405162461bcd60e51b81526004016103b9906111aa565b6107188585858585610bf1565b5050505050565b61072833610d45565b6107445760405162461bcd60e51b81526004016103b9906111aa565b8015156002838154811061075a5761075a6110a9565b906000526020600020906002020160010160149054906101000a900460ff161515036107b15760405162461bcd60e51b81526020600482015260066024820152654348414e474560d01b60448201526064016103b9565b80600283815481106107c5576107c56110a9565b906000526020600020906002020160010160146101000a81548160ff02191690831515021790555060028281548110610800576108006110a9565b60009182526020918290206002909102015460405183151581526001600160a01b03909116917f10588b087899f367a886cecce4b60fe07afd4e46f9820985ce9e593b86f746bc910160405180910390a25050565b61085d610b06565b6001600160a01b03811661088757604051631e4fbdf760e01b8152600060048201526024016103b9565b61089081610ba1565b50565b61089c33610d45565b6108b85760405162461bcd60e51b81526004016103b9906111aa565b6000600282815481106108cd576108cd6110a9565b600091825260208083206040805160a081018252600294850290920180546001600160a01b039081168085526001928301549182168587015260ff600160a01b83048116151586860152600160a81b8304811615156060870152600160b01b90920490911615156080850152865260039093528420939093558154929350909161095791906111c7565b81548110610967576109676110a9565b906000526020600020906002020160028381548110610988576109886110a9565b6000918252602082208354600292830290910180546001600160a01b039283166001600160a01b031991821617825560019586018054969092018054969093169086168117835581546001600160a81b031990961617600160a01b9586900460ff908116151590960217808355815460ff60a81b198216600160a81b91829004881615159091029081178455915461ffff60a81b1990911660ff60b01b1990921691909117600160b01b9182900490951615150293909317909255815484926003929184908110610a5b57610a5b6110a9565b60009182526020808320600292830201546001600160a01b031684528301939093526040909101902091909155805480610a9757610a976111e8565b60008281526020812060026000199093019283020180546001600160a01b031916815560010180546001600160b81b0319169055915581516040516001600160a01b0391909116917f2766b6cc2c2aa2812d03b4416da1f58ea9d70289993b2c8205d6a6927b4cfe5b91a25050565b6000546001600160a01b031633146105f25760405163118cdaa760e01b81523360048201526024016103b9565b6001600160a01b038116600090815260036020526040812054610b5584610d45565b80610b975750836001600160a01b031660028281548110610b7857610b786110a9565b60009182526020909120600160029092020101546001600160a01b0316145b9150505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600280546001600160a01b038781166000818152600360209081526040808320869055805160a0810182528481528b86168184019081528b15158284018181528c1515606085019081528c15156080860190815260018c018d55978c9052935199909a027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace810180549a8a166001600160a01b0319909b169a909a1790995590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf90980180549951925195511515600160b01b0260ff60b01b19961515600160a81b029690961661ffff60a81b19931515600160a01b026001600160a81b0319909b169990981698909817989098171694909417919091179093559051928352917fd6c7c45c9b719d31439f7621e4f3d0864f3ec71d544b159e02df8e54f7f86440910160405180910390a25050505050565b600080546001600160a01b0383811691161480610b9b5750506001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b038116811461089057600080fd5b600060208284031215610da357600080fd5b8135610dae81610d7c565b9392505050565b602080825282518282018190526000918401906040840190835b81811015610e2e57835180516001600160a01b039081168552602080830151909116818601526040808301511515908601526060808301511515908601526080918201511515918501919091529093019260a090920191600101610dcf565b509095945050505050565b80358015158114610e4957600080fd5b919050565b60008060408385031215610e6157600080fd5b8235610e6c81610d7c565b9150610e7a60208401610e39565b90509250929050565b600060208284031215610e9557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610ec357600080fd5b81356020830160008067ffffffffffffffff841115610ee457610ee4610e9c565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610f1357610f13610e9c565b604052838152905080828401871015610f2b57600080fd5b838360208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610f6057600080fd5b853567ffffffffffffffff811115610f7757600080fd5b610f8388828901610eb2565b955050602086013567ffffffffffffffff811115610fa057600080fd5b610fac88828901610eb2565b945050604086013567ffffffffffffffff811115610fc957600080fd5b610fd588828901610eb2565b935050606086013567ffffffffffffffff811115610ff257600080fd5b610ffe88828901610eb2565b925050608086013561100f81610d7c565b809150509295509295909350565b600080600080600060a0868803121561103557600080fd5b853561104081610d7c565b9450602086013561105081610d7c565b935061105e60408701610e39565b925061106c60608701610e39565b915061107a60808701610e39565b90509295509295909350565b6000806040838503121561109957600080fd5b82359150610e7a60208401610e39565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156110e5576020818501810151868301820152016110c9565b506000602082860101526020601f19601f83011685010191505092915050565b60808152600061111860808301876110bf565b828103602084015261112a81876110bf565b9050828103604084015261113e81866110bf565b9050828103606084015261115281856110bf565b979650505050505050565b60008060006060848603121561117257600080fd5b835161117d81610d7c565b602085015190935061118e81610d7c565b604085015190925061119f81610d7c565b809150509250925092565b60208082526003908201526255413160e81b604082015260600190565b81810381811115610b9b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212203581ea71c93865aa37d3a2ca48c3ed1738435a71a1b0525902046b56fd755cde64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001a3f5e320b86293017b6e36b75eb9e8bb048b5cd
-----Decoded View---------------
Arg [0] : _podFactory (address): 0x1a3F5e320b86293017B6E36b75EB9E8bB048B5cd
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a3f5e320b86293017b6e36b75eb9e8bb048b5cd
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.