Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MultiPositionGetter
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 1 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import "../../interfaces/core/IPositionManager.sol";
import "../../interfaces/core/ISortedPositions.sol";
import "../../interfaces/core/IFactory.sol";
contract MultiPositionGetter {
struct CombinedPositionData {
address owner;
uint256 debt;
uint256 coll;
uint256 stake;
uint256 snapshotCollateral;
uint256 snapshotDebt;
}
constructor() {}
function getMultipleSortedPositions(
IPositionManager positionManager,
int _startIdx,
uint256 _count
) external view returns (CombinedPositionData[] memory _positions) {
ISortedPositions sortedPositions = ISortedPositions(positionManager.sortedPositions());
uint256 startIdx;
bool descend;
if (_startIdx >= 0) {
startIdx = uint256(_startIdx);
descend = true;
} else {
startIdx = uint256(-(_startIdx + 1));
descend = false;
}
uint256 sortedPositionsSize = sortedPositions.getSize();
if (startIdx >= sortedPositionsSize) {
_positions = new CombinedPositionData[](0);
} else {
uint256 maxCount = sortedPositionsSize - startIdx;
if (_count > maxCount) {
_count = maxCount;
}
if (descend) {
_positions = _getMultipleSortedPositionsFromHead(positionManager, sortedPositions, startIdx, _count);
} else {
_positions = _getMultipleSortedPositionsFromTail(positionManager, sortedPositions, startIdx, _count);
}
}
}
function _getMultipleSortedPositionsFromHead(
IPositionManager positionManager,
ISortedPositions sortedPositions,
uint256 _startIdx,
uint256 _count
) internal view returns (CombinedPositionData[] memory _positions) {
address currentPositionowner = sortedPositions.getFirst();
for (uint256 idx = 0; idx < _startIdx; ++idx) {
currentPositionowner = sortedPositions.getNext(currentPositionowner);
}
_positions = new CombinedPositionData[](_count);
for (uint256 idx = 0; idx < _count; ++idx) {
_positions[idx].owner = currentPositionowner;
(
_positions[idx].debt,
_positions[idx].coll,
_positions[idx].stake,
/* status */
/* arrayIndex */
/* interestIndex */
,
,
) = positionManager.Positions(currentPositionowner);
(_positions[idx].snapshotCollateral, _positions[idx].snapshotDebt) = positionManager.rewardSnapshots(
currentPositionowner
);
currentPositionowner = sortedPositions.getNext(currentPositionowner);
}
}
function _getMultipleSortedPositionsFromTail(
IPositionManager positionManager,
ISortedPositions sortedPositions,
uint256 _startIdx,
uint256 _count
) internal view returns (CombinedPositionData[] memory _positions) {
address currentPositionowner = sortedPositions.getLast();
for (uint256 idx = 0; idx < _startIdx; ++idx) {
currentPositionowner = sortedPositions.getPrev(currentPositionowner);
}
_positions = new CombinedPositionData[](_count);
for (uint256 idx = 0; idx < _count; ++idx) {
_positions[idx].owner = currentPositionowner;
(
_positions[idx].debt,
_positions[idx].coll,
_positions[idx].stake,
/* status */
/* arrayIndex */
/* interestIndex */
,
,
) = positionManager.Positions(currentPositionowner);
(_positions[idx].snapshotCollateral, _positions[idx].snapshotDebt) = positionManager.rewardSnapshots(
currentPositionowner
);
currentPositionowner = sortedPositions.getPrev(currentPositionowner);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC3156FlashBorrower} from "@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IFactory} from "./IFactory.sol";
interface IPositionManager {
event BaseRateUpdated(uint256 _baseRate);
event CollateralSent(address _to, uint256 _amount);
event LTermsUpdated(uint256 _L_collateral, uint256 _L_debt);
event LastFeeOpTimeUpdated(uint256 _lastFeeOpTime);
event Redemption(
address indexed _redeemer,
uint256 _attemptedDebtAmount,
uint256 _actualDebtAmount,
uint256 _collateralSent,
uint256 _collateralFee
);
event SystemSnapshotsUpdated(uint256 _totalStakesSnapshot, uint256 _totalCollateralSnapshot);
event TotalStakesUpdated(uint256 _newTotalStakes);
event PositionIndexUpdated(address _borrower, uint256 _newIndex);
event PositionSnapshotsUpdated(uint256 _L_collateral, uint256 _L_debt);
event PositionUpdated(address indexed _borrower, uint256 _debt, uint256 _coll, uint256 _stake, uint8 _operation);
function addCollateralSurplus(address borrower, uint256 collSurplus) external;
function applyPendingRewards(address _borrower) external returns (uint256 coll, uint256 debt);
function claimCollateral(address borrower, address _receiver) external;
function closePosition(address _borrower, address _receiver, uint256 collAmount, uint256 debtAmount) external;
function closePositionByLiquidation(address _borrower) external;
function setCollVaultRouter(address _collVaultRouter) external;
function collectInterests() external;
function decayBaseRateAndGetBorrowingFee(uint256 _debt) external returns (uint256);
function decreaseDebtAndSendCollateral(address account, uint256 debt, uint256 coll) external;
function fetchPrice() external view returns (uint256);
function finalizeLiquidation(
address _liquidator,
uint256 _debt,
uint256 _coll,
uint256 _collSurplus,
uint256 _debtGasComp,
uint256 _collGasComp
) external;
function getEntireSystemBalances() external view returns (uint256, uint256, uint256);
function movePendingPositionRewardsToActiveBalances(uint256 _debt, uint256 _collateral) external;
function openPosition(
address _borrower,
uint256 _collateralAmount,
uint256 _compositeDebt,
uint256 NICR,
address _upperHint,
address _lowerHint
) external returns (uint256 stake, uint256 arrayIndex);
function redeemCollateral(
uint256 _debtAmount,
address _firstRedemptionHint,
address _upperPartialRedemptionHint,
address _lowerPartialRedemptionHint,
uint256 _partialRedemptionHintNICR,
uint256 _maxIterations,
uint256 _maxFeePercentage
) external;
function setAddresses(address _priceFeedAddress, address _sortedPositionsAddress, address _collateralToken) external;
function setParameters(
IFactory.DeploymentParams calldata _params
) external;
function setPaused(bool _paused) external;
function setPriceFeed(address _priceFeedAddress) external;
function startSunset() external;
function updateBalances() external;
function updatePositionFromAdjustment(
bool _isDebtIncrease,
uint256 _debtChange,
uint256 _netDebtChange,
bool _isCollIncrease,
uint256 _collChange,
address _upperHint,
address _lowerHint,
address _borrower,
address _receiver
) external returns (uint256, uint256, uint256);
function DEBT_GAS_COMPENSATION() external view returns (uint256);
function DECIMAL_PRECISION() external view returns (uint256);
function L_collateral() external view returns (uint256);
function L_debt() external view returns (uint256);
function MCR() external view returns (uint256);
function PERCENT_DIVISOR() external view returns (uint256);
function CORE() external view returns (address);
function SUNSETTING_INTEREST_RATE() external view returns (uint256);
function Positions(
address
)
external
view
returns (
uint256 debt,
uint256 coll,
uint256 stake,
uint8 status,
uint128 arrayIndex,
uint256 activeInterestIndex
);
function activeInterestIndex() external view returns (uint256);
function baseRate() external view returns (uint256);
function borrowerOperations() external view returns (address);
function borrowingFeeFloor() external view returns (uint256);
function collateralToken() external view returns (address);
function debtToken() external view returns (address);
function collVaultRouter() external view returns (address);
function defaultedCollateral() external view returns (uint256);
function defaultedDebt() external view returns (uint256);
function getBorrowingFee(uint256 _debt) external view returns (uint256);
function getBorrowingFeeWithDecay(uint256 _debt) external view returns (uint256);
function getBorrowingRate() external view returns (uint256);
function getBorrowingRateWithDecay() external view returns (uint256);
function getCurrentICR(address _borrower, uint256 _price) external view returns (uint256);
function getEntireDebtAndColl(
address _borrower
) external view returns (uint256 debt, uint256 coll, uint256 pendingDebtReward, uint256 pendingCollateralReward);
function getEntireSystemColl() external view returns (uint256);
function getEntireSystemDebt() external view returns (uint256);
function getNominalICR(address _borrower) external view returns (uint256);
function getPendingCollAndDebtRewards(address _borrower) external view returns (uint256, uint256);
function getRedemptionFeeWithDecay(uint256 _collateralDrawn) external view returns (uint256);
function getRedemptionRate() external view returns (uint256);
function getRedemptionRateWithDecay() external view returns (uint256);
function getTotalActiveCollateral() external view returns (uint256);
function getTotalActiveDebt() external view returns (uint256);
function getPositionCollAndDebt(address _borrower) external view returns (uint256 coll, uint256 debt);
function getPositionFromPositionOwnersArray(uint256 _index) external view returns (address);
function getPositionOwnersCount() external view returns (uint256);
function getPositionStake(address _borrower) external view returns (uint256);
function getPositionStatus(address _borrower) external view returns (uint256);
function guardian() external view returns (address);
function hasPendingRewards(address _borrower) external view returns (bool);
function interestPayable() external view returns (uint256);
function interestRate() external view returns (uint256);
function lastActiveIndexUpdate() external view returns (uint256);
function lastCollateralError_Redistribution() external view returns (uint256);
function lastDebtError_Redistribution() external view returns (uint256);
function lastFeeOperationTime() external view returns (uint256);
function liquidationManager() external view returns (address);
function maxBorrowingFee() external view returns (uint256);
function maxRedemptionFee() external view returns (uint256);
function maxSystemDebt() external view returns (uint256);
function minuteDecayFactor() external view returns (uint256);
function owner() external view returns (address);
function paused() external view returns (bool);
function priceFeed() external view returns (address);
function redemptionFeeFloor() external view returns (uint256);
function rewardSnapshots(address) external view returns (uint256 collateral, uint256 debt);
function sortedPositions() external view returns (address);
function sunsetting() external view returns (bool);
function surplusBalances(address) external view returns (uint256);
function systemDeploymentTime() external view returns (uint256);
function totalCollateralSnapshot() external view returns (uint256);
function totalStakes() external view returns (uint256);
function totalStakesSnapshot() external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface ISortedPositions {
event NodeAdded(address _id, uint256 _NICR);
event NodeRemoved(address _id);
function insert(address _id, uint256 _NICR, address _prevId, address _nextId) external;
function reInsert(address _id, uint256 _newNICR, address _prevId, address _nextId) external;
function remove(address _id) external;
function setAddresses(address _positionManagerAddress) external;
function contains(address _id) external view returns (bool);
function data() external view returns (address head, address tail, uint256 size);
function findInsertPosition(
uint256 _NICR,
address _prevId,
address _nextId
) external view returns (address, address);
function getFirst() external view returns (address);
function getLast() external view returns (address);
function getNext(address _id) external view returns (address);
function getPrev(address _id) external view returns (address);
function getSize() external view returns (uint256);
function isEmpty() external view returns (bool);
function positionManager() external view returns (address);
function validInsertPosition(uint256 _NICR, address _prevId, address _nextId) external view returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
interface IFactory {
// commented values are suggested default parameters
struct DeploymentParams {
uint256 minuteDecayFactor; // 999037758833783000 (half life of 12 hours)
uint256 redemptionFeeFloor; // 1e18 / 1000 * 5 (0.5%)
uint256 maxRedemptionFee; // 1e18 (100%)
uint256 borrowingFeeFloor; // 1e18 / 1000 * 5 (0.5%)
uint256 maxBorrowingFee; // 1e18 / 100 * 5 (5%)
uint256 interestRateInBps; // 100 (1%)
uint256 maxDebt;
uint256 MCR; // 12 * 1e17 (120%)
address collVaultRouter; // set to address(0) if PositionManager coll is not CollateralVault
}
event NewDeployment(address collateral, address priceFeed, address positionManager, address sortedPositions);
function deployNewInstance(
address collateral,
address priceFeed,
address customPositionManagerImpl,
address customSortedPositionsImpl,
DeploymentParams calldata params,
uint64 unlockRatePerSecond,
bool forceThroughLspBalanceCheck
) external;
function setImplementations(address _positionManagerImpl, address _sortedPositionsImpl) external;
function CORE() external view returns (address);
function borrowerOperations() external view returns (address);
function debtToken() external view returns (address);
function guardian() external view returns (address);
function liquidationManager() external view returns (address);
function owner() external view returns (address);
function sortedPositionsImpl() external view returns (address);
function liquidStabilityPool() external view returns (address);
function positionManagerCount() external view returns (uint256);
function positionManagerImpl() external view returns (address);
function positionManagers(uint256) external view returns (address);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (interfaces/IERC3156FlashBorrower.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC3156 FlashBorrower, as defined in
* https://eips.ethereum.org/EIPS/eip-3156[ERC-3156].
*
* _Available since v4.1._
*/
interface IERC3156FlashBorrower {
/**
* @dev Receive a flash loan.
* @param initiator The initiator of the loan.
* @param token The loan currency.
* @param amount The amount of tokens lent.
* @param fee The additional amount of tokens to repay.
* @param data Arbitrary data structure, intended to contain user-defined parameters.
* @return The keccak256 hash of "IERC3156FlashBorrower.onFlashLoan"
*/
function onFlashLoan(
address initiator,
address token,
uint256 amount,
uint256 fee,
bytes calldata data
) external returns (bytes32);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
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 amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` 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 amount) 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 `amount` 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 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` 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 amount
) external returns (bool);
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin-upgradeable/contracts/=lib/openzeppelin-contracts-upgradeable/contracts/",
"solady/=lib/solady/src/",
"@solmate/=lib/solmate/src/",
"@chimera/=lib/chimera/src/",
"forge-std/=lib/forge-std/src/",
"@uniswap/v3-core/=lib/v3-core/",
"@uniswap/v3-periphery/=lib/v3-periphery/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"chimera/=lib/chimera/src/",
"ds-test/=lib/solmate/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"rewards/=lib/rewards/",
"solmate/=lib/solmate/src/",
"uniswap/=lib/uniswap/",
"v3-core/=lib/v3-core/contracts/",
"v3-periphery/=lib/v3-periphery/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 1
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IPositionManager","name":"positionManager","type":"address"},{"internalType":"int256","name":"_startIdx","type":"int256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"getMultipleSortedPositions","outputs":[{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"debt","type":"uint256"},{"internalType":"uint256","name":"coll","type":"uint256"},{"internalType":"uint256","name":"stake","type":"uint256"},{"internalType":"uint256","name":"snapshotCollateral","type":"uint256"},{"internalType":"uint256","name":"snapshotDebt","type":"uint256"}],"internalType":"struct MultiPositionGetter.CombinedPositionData[]","name":"_positions","type":"tuple[]"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6080604052348015600e575f80fd5b50610b468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806333f543891461002d575b5f80fd5b61004061003b3660046108e7565b610056565b60405161004d9190610919565b60405180910390f35b60605f846001600160a01b031663c045e47d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610095573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b9919061099b565b90505f805f86126100cf575084905060016100e9565b6100da8660016109d1565b6100e3906109f8565b91505f90505b5f836001600160a01b031663de8fa4316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610126573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014a9190610a12565b905080831061018b57604080515f8082526020820190925290610183565b610170610897565b8152602001906001900390816101685790505b5094506101ce565b5f6101968483610a3d565b9050808711156101a4578096505b82156101bd576101b68986868a6101d9565b95506101cc565b6101c98986868a61053d565b95505b505b505050509392505050565b60605f846001600160a01b0316631e2231436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023c919061099b565b90505f5b848110156102bd5760405163765e015960e01b81526001600160a01b0387169063765e015990610274908590600401610a56565b602060405180830381865afa15801561028f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b3919061099b565b9150600101610240565b50826001600160401b038111156102d6576102d6610a29565b60405190808252806020026020018201604052801561030f57816020015b6102fc610897565b8152602001906001900390816102f45790505b5091505f5b83811015610533578183828151811061032f5761032f610a6a565b60209081029190910101516001600160a01b03918216905260405163bf88dd7160e01b81529088169063bf88dd719061036c908590600401610a56565b60c060405180830381865afa158015610387573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ab9190610a7e565b50508651879150859081106103c2576103c2610a6a565b60200260200101516020018685815181106103df576103df610a6a565b60200260200101516040018786815181106103fc576103fc610a6a565b60209081029190910101516060019290925291905252604051630b39e3cd60e11b81526001600160a01b03881690631673c79a9061043e908590600401610a56565b6040805180830381865afa158015610458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047c9190610aee565b84838151811061048e5761048e610a6a565b60200260200101516080018584815181106104ab576104ab610a6a565b602090810291909101015160a001919091525260405163765e015960e01b81526001600160a01b0387169063765e0159906104ea908590600401610a56565b602060405180830381865afa158015610505573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610529919061099b565b9150600101610314565b5050949350505050565b60605f846001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a0919061099b565b90505f5b8481101561062157604051632dc9c0eb60e21b81526001600160a01b0387169063b72703ac906105d8908590600401610a56565b602060405180830381865afa1580156105f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061099b565b91506001016105a4565b50826001600160401b0381111561063a5761063a610a29565b60405190808252806020026020018201604052801561067357816020015b610660610897565b8152602001906001900390816106585790505b5091505f5b83811015610533578183828151811061069357610693610a6a565b60209081029190910101516001600160a01b03918216905260405163bf88dd7160e01b81529088169063bf88dd71906106d0908590600401610a56565b60c060405180830381865afa1580156106eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070f9190610a7e565b505086518791508590811061072657610726610a6a565b602002602001015160200186858151811061074357610743610a6a565b602002602001015160400187868151811061076057610760610a6a565b60209081029190910101516060019290925291905252604051630b39e3cd60e11b81526001600160a01b03881690631673c79a906107a2908590600401610a56565b6040805180830381865afa1580156107bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e09190610aee565b8483815181106107f2576107f2610a6a565b602002602001015160800185848151811061080f5761080f610a6a565b602090810291909101015160a0019190915252604051632dc9c0eb60e21b81526001600160a01b0387169063b72703ac9061084e908590600401610a56565b602060405180830381865afa158015610869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088d919061099b565b9150600101610678565b6040518060c001604052805f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6001600160a01b03811681146108e4575f80fd5b50565b5f805f606084860312156108f9575f80fd5b8335610904816108d0565b95602085013595506040909401359392505050565b602080825282518282018190525f918401906040840190835b8181101561099057835180516001600160a01b031684526020808201518186015260408083015190860152606080830151908601526080808301519086015260a091820151918501919091529093019260c090920191600101610932565b509095945050505050565b5f602082840312156109ab575f80fd5b81516109b6816108d0565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156109f0576109f06109bd565b505092915050565b5f600160ff1b8201610a0c57610a0c6109bd565b505f0390565b5f60208284031215610a22575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b81810381811115610a5057610a506109bd565b92915050565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52603260045260245ffd5b5f805f805f8060c08789031215610a93575f80fd5b86516020880151604089015160608a0151929850909650945060ff81168114610aba575f80fd5b60808801519093506001600160801b0381168114610ad6575f80fd5b60a09790970151959894975092959194919391925050565b5f8060408385031215610aff575f80fd5b50508051602090910151909290915056fea26469706673582212200e436205fcc75fc5972775e3ded3bb4032de443a73516c1954a45e68efb7a81d64736f6c634300081a0033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c806333f543891461002d575b5f80fd5b61004061003b3660046108e7565b610056565b60405161004d9190610919565b60405180910390f35b60605f846001600160a01b031663c045e47d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610095573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b9919061099b565b90505f805f86126100cf575084905060016100e9565b6100da8660016109d1565b6100e3906109f8565b91505f90505b5f836001600160a01b031663de8fa4316040518163ffffffff1660e01b8152600401602060405180830381865afa158015610126573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014a9190610a12565b905080831061018b57604080515f8082526020820190925290610183565b610170610897565b8152602001906001900390816101685790505b5094506101ce565b5f6101968483610a3d565b9050808711156101a4578096505b82156101bd576101b68986868a6101d9565b95506101cc565b6101c98986868a61053d565b95505b505b505050509392505050565b60605f846001600160a01b0316631e2231436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610218573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023c919061099b565b90505f5b848110156102bd5760405163765e015960e01b81526001600160a01b0387169063765e015990610274908590600401610a56565b602060405180830381865afa15801561028f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b3919061099b565b9150600101610240565b50826001600160401b038111156102d6576102d6610a29565b60405190808252806020026020018201604052801561030f57816020015b6102fc610897565b8152602001906001900390816102f45790505b5091505f5b83811015610533578183828151811061032f5761032f610a6a565b60209081029190910101516001600160a01b03918216905260405163bf88dd7160e01b81529088169063bf88dd719061036c908590600401610a56565b60c060405180830381865afa158015610387573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ab9190610a7e565b50508651879150859081106103c2576103c2610a6a565b60200260200101516020018685815181106103df576103df610a6a565b60200260200101516040018786815181106103fc576103fc610a6a565b60209081029190910101516060019290925291905252604051630b39e3cd60e11b81526001600160a01b03881690631673c79a9061043e908590600401610a56565b6040805180830381865afa158015610458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047c9190610aee565b84838151811061048e5761048e610a6a565b60200260200101516080018584815181106104ab576104ab610a6a565b602090810291909101015160a001919091525260405163765e015960e01b81526001600160a01b0387169063765e0159906104ea908590600401610a56565b602060405180830381865afa158015610505573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610529919061099b565b9150600101610314565b5050949350505050565b60605f846001600160a01b0316634d6228316040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105a0919061099b565b90505f5b8481101561062157604051632dc9c0eb60e21b81526001600160a01b0387169063b72703ac906105d8908590600401610a56565b602060405180830381865afa1580156105f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610617919061099b565b91506001016105a4565b50826001600160401b0381111561063a5761063a610a29565b60405190808252806020026020018201604052801561067357816020015b610660610897565b8152602001906001900390816106585790505b5091505f5b83811015610533578183828151811061069357610693610a6a565b60209081029190910101516001600160a01b03918216905260405163bf88dd7160e01b81529088169063bf88dd71906106d0908590600401610a56565b60c060405180830381865afa1580156106eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070f9190610a7e565b505086518791508590811061072657610726610a6a565b602002602001015160200186858151811061074357610743610a6a565b602002602001015160400187868151811061076057610760610a6a565b60209081029190910101516060019290925291905252604051630b39e3cd60e11b81526001600160a01b03881690631673c79a906107a2908590600401610a56565b6040805180830381865afa1580156107bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e09190610aee565b8483815181106107f2576107f2610a6a565b602002602001015160800185848151811061080f5761080f610a6a565b602090810291909101015160a0019190915252604051632dc9c0eb60e21b81526001600160a01b0387169063b72703ac9061084e908590600401610a56565b602060405180830381865afa158015610869573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088d919061099b565b9150600101610678565b6040518060c001604052805f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6001600160a01b03811681146108e4575f80fd5b50565b5f805f606084860312156108f9575f80fd5b8335610904816108d0565b95602085013595506040909401359392505050565b602080825282518282018190525f918401906040840190835b8181101561099057835180516001600160a01b031684526020808201518186015260408083015190860152606080830151908601526080808301519086015260a091820151918501919091529093019260c090920191600101610932565b509095945050505050565b5f602082840312156109ab575f80fd5b81516109b6816108d0565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156109f0576109f06109bd565b505092915050565b5f600160ff1b8201610a0c57610a0c6109bd565b505f0390565b5f60208284031215610a22575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b81810381811115610a5057610a506109bd565b92915050565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52603260045260245ffd5b5f805f805f8060c08789031215610a93575f80fd5b86516020880151604089015160608a0151929850909650945060ff81168114610aba575f80fd5b60808801519093506001600160801b0381168114610ad6575f80fd5b60a09790970151959894975092959194919391925050565b5f8060408385031215610aff575f80fd5b50508051602090910151909290915056fea26469706673582212200e436205fcc75fc5972775e3ded3bb4032de443a73516c1954a45e68efb7a81d64736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 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.