Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CollateralVaultRegistry
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
import {IMetaCore} from "src/interfaces/core/IMetaCore.sol";
/**
* @title CollateralVaultRegistry
* @author Spinnaker Labs
* @notice Registry to help track both CollateralVaults that can mint DEBT_TOKEN, as well as those who can't and are just auto-compounding
* @dev Excludes Boyco CollateralVaults
*/
contract CollateralVaultRegistry {
struct Vault {
address vault;
/// @dev Block number when the vault was deployed
uint blockNumber;
// Which instance the vault is at:
// - 0 -> Only auto-compounding (not collateral)
// - n -> Collateral vault for protocol instance n
uint8 protocolInstance;
}
IMetaCore public immutable metaCore;
Vault[] public collateralVaults;
mapping(address => bool) public isCollateralVault;
mapping(address => uint) private vaultIndex;
mapping(address => bool) public isOwner;
error OnlyOwner(address caller);
error NotCollateralVault(address vault);
error DuplicateVault(address vault);
event NewCollateralVault(address indexed vault, uint blockNumber, uint8 protocolInstance);
event VaultModified(address indexed vault, uint blockNumber, uint8 protocolInstance);
event NewOwner(address);
event RemovedOwner(address);
modifier onlyOwner() {
if (msg.sender != metaCore.owner() && !isOwner[msg.sender])
revert OnlyOwner(msg.sender);
_;
}
constructor(address _metaCore, address _initialOwner) {
metaCore = IMetaCore(_metaCore);
isOwner[_initialOwner] = true;
}
function setCollateralVaults(Vault[] calldata _collVaults) external onlyOwner {
for (uint i; i < _collVaults.length; i++) {
Vault memory _collVault = _collVaults[i];
if (IERC4626(_collVault.vault).asset() == address(0))
revert NotCollateralVault(_collVault.vault);
if (isCollateralVault[_collVault.vault])
revert DuplicateVault(_collVault.vault);
vaultIndex[_collVault.vault] = collateralVaults.length;
collateralVaults.push(_collVault);
isCollateralVault[_collVault.vault] = true;
emit NewCollateralVault(_collVault.vault, _collVault.blockNumber, _collVault.protocolInstance);
}
}
function modifyCollateralVault(Vault calldata _collVault) external onlyOwner {
address vault = _collVault.vault;
if (!isCollateralVault[vault])
revert NotCollateralVault(vault);
uint index = vaultIndex[vault];
collateralVaults[index].blockNumber = _collVault.blockNumber;
collateralVaults[index].protocolInstance = _collVault.protocolInstance;
emit VaultModified(vault, _collVault.blockNumber, _collVault.protocolInstance);
}
function removeCollateralVault(address _collVault) external onlyOwner {
if (!isCollateralVault[_collVault])
revert NotCollateralVault(_collVault);
uint index = vaultIndex[_collVault];
uint lastIndex = collateralVaults.length - 1;
if (index != lastIndex) {
Vault memory lastVault = collateralVaults[lastIndex];
collateralVaults[index] = lastVault;
vaultIndex[lastVault.vault] = index;
}
collateralVaults.pop();
delete isCollateralVault[_collVault];
delete vaultIndex[_collVault];
}
function whitelistOwner(address _owner, bool whitelisted) external {
if (msg.sender != metaCore.owner()) revert OnlyOwner(msg.sender);
isOwner[_owner] = whitelisted;
if (whitelisted) {
emit NewOwner(_owner);
} else {
emit RemovedOwner(_owner);
}
}
function getCollateralVaults() external view returns (Vault[] memory) {
return collateralVaults;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (interfaces/IERC4626.sol)
pragma solidity ^0.8.0;
import "../token/ERC20/IERC20.sol";
import "../token/ERC20/extensions/IERC20Metadata.sol";
/**
* @dev Interface of the ERC4626 "Tokenized Vault Standard", as defined in
* https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].
*
* _Available since v4.7._
*/
interface IERC4626 is IERC20, IERC20Metadata {
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);
event Withdraw(
address indexed sender,
address indexed receiver,
address indexed owner,
uint256 assets,
uint256 shares
);
/**
* @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.
*
* - MUST be an ERC-20 token contract.
* - MUST NOT revert.
*/
function asset() external view returns (address assetTokenAddress);
/**
* @dev Returns the total amount of the underlying asset that is “managed” by Vault.
*
* - SHOULD include any compounding that occurs from yield.
* - MUST be inclusive of any fees that are charged against assets in the Vault.
* - MUST NOT revert.
*/
function totalAssets() external view returns (uint256 totalManagedAssets);
/**
* @dev Returns the amount of shares that the Vault would exchange for the amount of assets provided, in an ideal
* scenario where all the conditions are met.
*
* - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
* - MUST NOT show any variations depending on the caller.
* - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
* - MUST NOT revert.
*
* NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
* “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
* from.
*/
function convertToShares(uint256 assets) external view returns (uint256 shares);
/**
* @dev Returns the amount of assets that the Vault would exchange for the amount of shares provided, in an ideal
* scenario where all the conditions are met.
*
* - MUST NOT be inclusive of any fees that are charged against assets in the Vault.
* - MUST NOT show any variations depending on the caller.
* - MUST NOT reflect slippage or other on-chain conditions, when performing the actual exchange.
* - MUST NOT revert.
*
* NOTE: This calculation MAY NOT reflect the “per-user” price-per-share, and instead should reflect the
* “average-user’s” price-per-share, meaning what the average user should expect to see when exchanging to and
* from.
*/
function convertToAssets(uint256 shares) external view returns (uint256 assets);
/**
* @dev Returns the maximum amount of the underlying asset that can be deposited into the Vault for the receiver,
* through a deposit call.
*
* - MUST return a limited value if receiver is subject to some deposit limit.
* - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of assets that may be deposited.
* - MUST NOT revert.
*/
function maxDeposit(address receiver) external view returns (uint256 maxAssets);
/**
* @dev Allows an on-chain or off-chain user to simulate the effects of their deposit at the current block, given
* current on-chain conditions.
*
* - MUST return as close to and no more than the exact amount of Vault shares that would be minted in a deposit
* call in the same transaction. I.e. deposit should return the same or more shares as previewDeposit if called
* in the same transaction.
* - MUST NOT account for deposit limits like those returned from maxDeposit and should always act as though the
* deposit would be accepted, regardless if the user has enough tokens approved, etc.
* - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
* - MUST NOT revert.
*
* NOTE: any unfavorable discrepancy between convertToShares and previewDeposit SHOULD be considered slippage in
* share price or some other type of condition, meaning the depositor will lose assets by depositing.
*/
function previewDeposit(uint256 assets) external view returns (uint256 shares);
/**
* @dev Mints shares Vault shares to receiver by depositing exactly amount of underlying tokens.
*
* - MUST emit the Deposit event.
* - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
* deposit execution, and are accounted for during deposit.
* - MUST revert if all of assets cannot be deposited (due to deposit limit being reached, slippage, the user not
* approving enough underlying tokens to the Vault contract, etc).
*
* NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
*/
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
/**
* @dev Returns the maximum amount of the Vault shares that can be minted for the receiver, through a mint call.
* - MUST return a limited value if receiver is subject to some mint limit.
* - MUST return 2 ** 256 - 1 if there is no limit on the maximum amount of shares that may be minted.
* - MUST NOT revert.
*/
function maxMint(address receiver) external view returns (uint256 maxShares);
/**
* @dev Allows an on-chain or off-chain user to simulate the effects of their mint at the current block, given
* current on-chain conditions.
*
* - MUST return as close to and no fewer than the exact amount of assets that would be deposited in a mint call
* in the same transaction. I.e. mint should return the same or fewer assets as previewMint if called in the
* same transaction.
* - MUST NOT account for mint limits like those returned from maxMint and should always act as though the mint
* would be accepted, regardless if the user has enough tokens approved, etc.
* - MUST be inclusive of deposit fees. Integrators should be aware of the existence of deposit fees.
* - MUST NOT revert.
*
* NOTE: any unfavorable discrepancy between convertToAssets and previewMint SHOULD be considered slippage in
* share price or some other type of condition, meaning the depositor will lose assets by minting.
*/
function previewMint(uint256 shares) external view returns (uint256 assets);
/**
* @dev Mints exactly shares Vault shares to receiver by depositing amount of underlying tokens.
*
* - MUST emit the Deposit event.
* - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the mint
* execution, and are accounted for during mint.
* - MUST revert if all of shares cannot be minted (due to deposit limit being reached, slippage, the user not
* approving enough underlying tokens to the Vault contract, etc).
*
* NOTE: most implementations will require pre-approval of the Vault with the Vault’s underlying asset token.
*/
function mint(uint256 shares, address receiver) external returns (uint256 assets);
/**
* @dev Returns the maximum amount of the underlying asset that can be withdrawn from the owner balance in the
* Vault, through a withdraw call.
*
* - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
* - MUST NOT revert.
*/
function maxWithdraw(address owner) external view returns (uint256 maxAssets);
/**
* @dev Allows an on-chain or off-chain user to simulate the effects of their withdrawal at the current block,
* given current on-chain conditions.
*
* - MUST return as close to and no fewer than the exact amount of Vault shares that would be burned in a withdraw
* call in the same transaction. I.e. withdraw should return the same or fewer shares as previewWithdraw if
* called
* in the same transaction.
* - MUST NOT account for withdrawal limits like those returned from maxWithdraw and should always act as though
* the withdrawal would be accepted, regardless if the user has enough shares, etc.
* - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
* - MUST NOT revert.
*
* NOTE: any unfavorable discrepancy between convertToShares and previewWithdraw SHOULD be considered slippage in
* share price or some other type of condition, meaning the depositor will lose assets by depositing.
*/
function previewWithdraw(uint256 assets) external view returns (uint256 shares);
/**
* @dev Burns shares from owner and sends exactly assets of underlying tokens to receiver.
*
* - MUST emit the Withdraw event.
* - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
* withdraw execution, and are accounted for during withdraw.
* - MUST revert if all of assets cannot be withdrawn (due to withdrawal limit being reached, slippage, the owner
* not having enough shares, etc).
*
* Note that some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
* Those methods should be performed separately.
*/
function withdraw(
uint256 assets,
address receiver,
address owner
) external returns (uint256 shares);
/**
* @dev Returns the maximum amount of Vault shares that can be redeemed from the owner balance in the Vault,
* through a redeem call.
*
* - MUST return a limited value if owner is subject to some withdrawal limit or timelock.
* - MUST return balanceOf(owner) if owner is not subject to any withdrawal limit or timelock.
* - MUST NOT revert.
*/
function maxRedeem(address owner) external view returns (uint256 maxShares);
/**
* @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption at the current block,
* given current on-chain conditions.
*
* - MUST return as close to and no more than the exact amount of assets that would be withdrawn in a redeem call
* in the same transaction. I.e. redeem should return the same or more assets as previewRedeem if called in the
* same transaction.
* - MUST NOT account for redemption limits like those returned from maxRedeem and should always act as though the
* redemption would be accepted, regardless if the user has enough shares, etc.
* - MUST be inclusive of withdrawal fees. Integrators should be aware of the existence of withdrawal fees.
* - MUST NOT revert.
*
* NOTE: any unfavorable discrepancy between convertToAssets and previewRedeem SHOULD be considered slippage in
* share price or some other type of condition, meaning the depositor will lose assets by redeeming.
*/
function previewRedeem(uint256 shares) external view returns (uint256 assets);
/**
* @dev Burns exactly shares from owner and sends assets of underlying tokens to receiver.
*
* - MUST emit the Withdraw event.
* - MAY support an additional flow in which the underlying tokens are owned by the Vault contract before the
* redeem execution, and are accounted for during redeem.
* - MUST revert if all of shares cannot be redeemed (due to withdrawal limit being reached, slippage, the owner
* not having enough shares, etc).
*
* NOTE: some implementations will require pre-requesting to the Vault before a withdrawal may be performed.
* Those methods should be performed separately.
*/
function redeem(
uint256 shares,
address receiver,
address owner
) external returns (uint256 assets);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
interface IMetaCore {
// ---------------------------------
// Structures
// ---------------------------------
struct FeeInfo {
bool existsForDebtToken;
uint16 debtTokenFee;
}
struct RebalancerFeeInfo {
bool exists;
uint16 entryFee;
uint16 exitFee;
}
// ---------------------------------
// Public constants
// ---------------------------------
function OWNERSHIP_TRANSFER_DELAY() external view returns (uint256);
function DEFAULT_FLASH_LOAN_FEE() external view returns (uint16);
// ---------------------------------
// Public state variables
// ---------------------------------
function debtToken() external view returns (address);
function lspEntryFee() external view returns (uint16);
function lspExitFee() external view returns (uint16);
function interestProtocolShare() external view returns (uint16);
/// @dev Default interest receiver for all PositionManagers, unless overriden in the respective PM
function defaultInterestReceiver() external view returns (address);
function feeReceiver() external view returns (address);
function priceFeed() external view returns (address);
function owner() external view returns (address);
function pendingOwner() external view returns (address);
function ownershipTransferDeadline() external view returns (uint256);
function guardian() external view returns (address);
function paused() external view returns (bool);
function lspBootstrapPeriod() external view returns (uint64);
// ---------------------------------
// External functions
// ---------------------------------
function setFeeReceiver(address _feeReceiver) external;
function setPriceFeed(address _priceFeed) external;
function setGuardian(address _guardian) external;
/**
* @notice Global pause/unpause
* Pausing halts new deposits/borrowing across the protocol
*/
function setPaused(bool _paused) external;
/**
* @notice Extend or change the LSP bootstrap period,
* after which certain protocol mechanics change
*/
function setLspBootstrapPeriod(uint64 _bootstrapPeriod) external;
/**
* @notice Set a custom flash-loan fee for a given periphery contract
* @param _periphery Target contract that will get this custom fee
* @param _debtTokenFee Fee in basis points (bp)
* @param _existsForDebtToken Whether this custom fee is used when the caller = `debtToken`
*/
function setPeripheryFlashLoanFee(address _periphery, uint16 _debtTokenFee, bool _existsForDebtToken) external;
/**
* @notice Begin the ownership transfer process
* @param newOwner The address proposed to be the new owner
*/
function commitTransferOwnership(address newOwner) external;
/**
* @notice Finish the ownership transfer, after the mandatory delay
*/
function acceptTransferOwnership() external;
/**
* @notice Revoke a pending ownership transfer
*/
function revokeTransferOwnership() external;
/**
* @notice Look up a custom flash-loan fee for a specific periphery contract
* @param peripheryContract The contract that might have a custom fee
* @return The flash-loan fee in basis points
*/
function getPeripheryFlashLoanFee(address peripheryContract) external view returns (uint16);
/**
* @notice Set / override entry & exit fees for a special rebalancer contract
*/
function setRebalancerFee(address _rebalancer, uint16 _entryFee, uint16 _exitFee) external;
/**
* @notice Set the LSP entry fee globally
* @param _fee Fee in basis points
*/
function setEntryFee(uint16 _fee) external;
/**
* @notice Set the LSP exit fee globally
* @param _fee Fee in basis points
*/
function setExitFee(uint16 _fee) external;
/**
* @notice Set the interest protocol share globally to all PositionManagers
* @param _interestProtocolShare Share in basis points
*/
function setInterestProtocolShare(uint16 _interestProtocolShare) external;
/**
* @notice Look up the LSP entry fee for a rebalancer
* @param rebalancer Possibly has a special fee
* @return The entry fee in basis points
*/
function getLspEntryFee(address rebalancer) external view returns (uint16);
/**
* @notice Look up the LSP exit fee for a rebalancer
* @param rebalancer Possibly has a special fee
* @return The exit fee in basis points
*/
function getLspExitFee(address rebalancer) external view returns (uint16);
// ---------------------------------
// Events
// ---------------------------------
event NewOwnerCommitted(address indexed owner, address indexed pendingOwner, uint256 deadline);
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner);
event NewOwnerRevoked(address indexed owner, address indexed revokedOwner);
event FeeReceiverSet(address indexed feeReceiver);
event PriceFeedSet(address indexed priceFeed);
event GuardianSet(address indexed guardian);
event PeripheryFlashLoanFee(address indexed periphery, uint16 debtTokenFee);
event LSPBootstrapPeriodSet(uint64 bootstrapPeriod);
event RebalancerFees(address indexed rebalancer, uint16 entryFee, uint16 exitFee);
event EntryFeeSet(uint16 fee);
event ExitFeeSet(uint16 fee);
event InterestProtocolShareSet(uint16 interestProtocolShare);
event DefaultInterestReceiverSet(address indexed defaultInterestReceiver);
event Paused();
event Unpaused();
}// 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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}{
"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/",
"v3-core/=lib/v3-core/contracts/",
"v3-periphery/=lib/v3-periphery/contracts/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"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":[{"internalType":"address","name":"_metaCore","type":"address"},{"internalType":"address","name":"_initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"name":"DuplicateVault","type":"error"},{"inputs":[{"internalType":"address","name":"vault","type":"address"}],"name":"NotCollateralVault","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"OnlyOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"name":"NewCollateralVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"RemovedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"name":"VaultModified","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"collateralVaults","outputs":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCollateralVaults","outputs":[{"components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"internalType":"struct CollateralVaultRegistry.Vault[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isCollateralVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metaCore","outputs":[{"internalType":"contract IMetaCore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"internalType":"struct CollateralVaultRegistry.Vault","name":"_collVault","type":"tuple"}],"name":"modifyCollateralVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collVault","type":"address"}],"name":"removeCollateralVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"vault","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint8","name":"protocolInstance","type":"uint8"}],"internalType":"struct CollateralVaultRegistry.Vault[]","name":"_collVaults","type":"tuple[]"}],"name":"setCollateralVaults","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"whitelistOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561000f575f80fd5b50604051611aa6380380611aa68339818101604052810190610031919061011f565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505061015d565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ee826100c5565b9050919050565b6100fe816100e4565b8114610108575f80fd5b50565b5f81519050610119816100f5565b92915050565b5f8060408385031215610135576101346100c1565b5b5f6101428582860161010b565b92505060206101538582860161010b565b9150509250929050565b6080516119156101915f395f81816102c70152818161076b01528181610c3701528181610e050152610e2901526119155ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80632f54bf6e116100645780632f54bf6e1461011b578063386d7e931461014b578063474566c61461016757806380d8d8e314610185578063e9ebd189146101a157610091565b8063079086d0146100955780631dbf6466146100c55780632c1304fd146100e35780632f29959a146100ff575b5f80fd5b6100af60048036038101906100aa9190611205565b6101d3565b6040516100bc919061124a565b60405180910390f35b6100cd6101f0565b6040516100da919061138d565b60405180910390f35b6100fd60048036038101906100f8919061140e565b6102c5565b005b61011960048036038101906101149190611205565b610769565b005b61013560048036038101906101309190611205565b610c18565b604051610142919061124a565b60405180910390f35b61016560048036038101906101609190611483565b610c35565b005b61016f610e03565b60405161017c919061151c565b60405180910390f35b61019f600480360381019061019a9190611557565b610e27565b005b6101bb60048036038101906101b691906115ac565b61113b565b6040516101ca93929190611604565b60405180910390f35b6001602052805f5260405f205f915054906101000a900460ff1681565b60605f805480602002602001604051908101604052809291908181526020015f905b828210156102bc578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610212565b50505050905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610352919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156103d4575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561041657336040517f0a86c02a00000000000000000000000000000000000000000000000000000000815260040161040d9190611678565b60405180910390fd5b5f5b82829050811015610764575f83838381811061043757610436611691565b5b90506060020180360381019061044d91906117d5565b90505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d6919061164d565b73ffffffffffffffffffffffffffffffffffffffff160361053157805f01516040517f9e4ec4ac0000000000000000000000000000000000000000000000000000000081526004016105289190611678565b60405180910390fd5b60015f825f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156105c357805f01516040517fde1b8d3f0000000000000000000000000000000000000000000000000000000081526004016105ba9190611678565b60405180910390fd5b5f8054905060025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f81908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555050506001805f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f015173ffffffffffffffffffffffffffffffffffffffff167f0f0e941d7099ae5fedc0341b2f1e5377151f6c3c247e4416f1579e78da5bd9668260200151836040015160405161074e929190611800565b60405180910390a2508080600101915050610418565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f6919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610878575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108ba57336040517f0a86c02a0000000000000000000000000000000000000000000000000000000081526004016108b19190611678565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661094557806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161093c9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f805490506109989190611854565b9050808214610b20575f8082815481106109b5576109b4611691565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff16815250509050805f8481548110610a5c57610a5b611691565b5b905f5260205f2090600302015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff1602179055509050508260025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f805480610b3157610b30611887565b5b600190038181905f5260205f2090600302015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f6101000a81549060ff02191690555050905560015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3157336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610d289190611678565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015610dc7577f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc82604051610dba9190611678565b60405180910390a1610dff565b7ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610df69190611678565b60405180910390a15b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb4919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610f36575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f7857336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610f6f9190611678565b60405180910390fd5b5f815f016020810190610f8b9190611205565b905060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661101857806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161100f9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082602001355f828154811061107157611070611691565b5b905f5260205f2090600302016001018190555082604001602081019061109791906118b4565b5f82815481106110aa576110a9611691565b5b905f5260205f2090600302016002015f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f4e2368fe3778c6f838962df49d8f54d5ee4ba43e7229322cdb2e1ef77289f6b6846020013585604001602081019061112091906118b4565b60405161112e929190611800565b60405180910390a2505050565b5f8181548110611149575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff16905083565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111d4826111ab565b9050919050565b6111e4816111ca565b81146111ee575f80fd5b50565b5f813590506111ff816111db565b92915050565b5f6020828403121561121a576112196111a3565b5b5f611227848285016111f1565b91505092915050565b5f8115159050919050565b61124481611230565b82525050565b5f60208201905061125d5f83018461123b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611295816111ca565b82525050565b5f819050919050565b6112ad8161129b565b82525050565b5f60ff82169050919050565b6112c8816112b3565b82525050565b606082015f8201516112e25f85018261128c565b5060208201516112f560208501826112a4565b50604082015161130860408501826112bf565b50505050565b5f61131983836112ce565b60608301905092915050565b5f602082019050919050565b5f61133b82611263565b611345818561126d565b93506113508361127d565b805f5b83811015611380578151611367888261130e565b975061137283611325565b925050600181019050611353565b5085935050505092915050565b5f6020820190508181035f8301526113a58184611331565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113ce576113cd6113ad565b5b8235905067ffffffffffffffff8111156113eb576113ea6113b1565b5b602083019150836060820283011115611407576114066113b5565b5b9250929050565b5f8060208385031215611424576114236111a3565b5b5f83013567ffffffffffffffff811115611441576114406111a7565b5b61144d858286016113b9565b92509250509250929050565b61146281611230565b811461146c575f80fd5b50565b5f8135905061147d81611459565b92915050565b5f8060408385031215611499576114986111a3565b5b5f6114a6858286016111f1565b92505060206114b78582860161146f565b9150509250929050565b5f819050919050565b5f6114e46114df6114da846111ab565b6114c1565b6111ab565b9050919050565b5f6114f5826114ca565b9050919050565b5f611506826114eb565b9050919050565b611516816114fc565b82525050565b5f60208201905061152f5f83018461150d565b92915050565b5f80fd5b5f6060828403121561154e5761154d611535565b5b81905092915050565b5f6060828403121561156c5761156b6111a3565b5b5f61157984828501611539565b91505092915050565b61158b8161129b565b8114611595575f80fd5b50565b5f813590506115a681611582565b92915050565b5f602082840312156115c1576115c06111a3565b5b5f6115ce84828501611598565b91505092915050565b6115e0816111ca565b82525050565b6115ef8161129b565b82525050565b6115fe816112b3565b82525050565b5f6060820190506116175f8301866115d7565b61162460208301856115e6565b61163160408301846115f5565b949350505050565b5f81519050611647816111db565b92915050565b5f60208284031215611662576116616111a3565b5b5f61166f84828501611639565b91505092915050565b5f60208201905061168b5f8301846115d7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611708826116c2565b810181811067ffffffffffffffff82111715611727576117266116d2565b5b80604052505050565b5f61173961119a565b905061174582826116ff565b919050565b611753816112b3565b811461175d575f80fd5b50565b5f8135905061176e8161174a565b92915050565b5f60608284031215611789576117886116be565b5b6117936060611730565b90505f6117a2848285016111f1565b5f8301525060206117b584828501611598565b60208301525060406117c984828501611760565b60408301525092915050565b5f606082840312156117ea576117e96111a3565b5b5f6117f784828501611774565b91505092915050565b5f6040820190506118135f8301856115e6565b61182060208301846115f5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61185e8261129b565b91506118698361129b565b925082820390508181111561188157611880611827565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f602082840312156118c9576118c86111a3565b5b5f6118d684828501611760565b9150509291505056fea26469706673582212202b228266112355ba906956eecdd8e71c437ef61ed6b9e5d68f676f8eeb506d2264736f6c634300081a00330000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce80000000000000000000000004509f7ffa3f0be2739d26d3afb2f659ed91410d2
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610091575f3560e01c80632f54bf6e116100645780632f54bf6e1461011b578063386d7e931461014b578063474566c61461016757806380d8d8e314610185578063e9ebd189146101a157610091565b8063079086d0146100955780631dbf6466146100c55780632c1304fd146100e35780632f29959a146100ff575b5f80fd5b6100af60048036038101906100aa9190611205565b6101d3565b6040516100bc919061124a565b60405180910390f35b6100cd6101f0565b6040516100da919061138d565b60405180910390f35b6100fd60048036038101906100f8919061140e565b6102c5565b005b61011960048036038101906101149190611205565b610769565b005b61013560048036038101906101309190611205565b610c18565b604051610142919061124a565b60405180910390f35b61016560048036038101906101609190611483565b610c35565b005b61016f610e03565b60405161017c919061151c565b60405180910390f35b61019f600480360381019061019a9190611557565b610e27565b005b6101bb60048036038101906101b691906115ac565b61113b565b6040516101ca93929190611604565b60405180910390f35b6001602052805f5260405f205f915054906101000a900460ff1681565b60605f805480602002602001604051908101604052809291908181526020015f905b828210156102bc578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610212565b50505050905090565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610352919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156103d4575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561041657336040517f0a86c02a00000000000000000000000000000000000000000000000000000000815260040161040d9190611678565b60405180910390fd5b5f5b82829050811015610764575f83838381811061043757610436611691565b5b90506060020180360381019061044d91906117d5565b90505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d6919061164d565b73ffffffffffffffffffffffffffffffffffffffff160361053157805f01516040517f9e4ec4ac0000000000000000000000000000000000000000000000000000000081526004016105289190611678565b60405180910390fd5b60015f825f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156105c357805f01516040517fde1b8d3f0000000000000000000000000000000000000000000000000000000081526004016105ba9190611678565b60405180910390fd5b5f8054905060025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f81908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555050506001805f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f015173ffffffffffffffffffffffffffffffffffffffff167f0f0e941d7099ae5fedc0341b2f1e5377151f6c3c247e4416f1579e78da5bd9668260200151836040015160405161074e929190611800565b60405180910390a2508080600101915050610418565b505050565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f6919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610878575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108ba57336040517f0a86c02a0000000000000000000000000000000000000000000000000000000081526004016108b19190611678565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661094557806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161093c9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f805490506109989190611854565b9050808214610b20575f8082815481106109b5576109b4611691565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff16815250509050805f8481548110610a5c57610a5b611691565b5b905f5260205f2090600302015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff1602179055509050508260025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f805480610b3157610b30611887565b5b600190038181905f5260205f2090600302015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f6101000a81549060ff02191690555050905560015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3157336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610d289190611678565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015610dc7577f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc82604051610dba9190611678565b60405180910390a1610dff565b7ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610df69190611678565b60405180910390a15b5050565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce881565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb4919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610f36575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f7857336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610f6f9190611678565b60405180910390fd5b5f815f016020810190610f8b9190611205565b905060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661101857806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161100f9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082602001355f828154811061107157611070611691565b5b905f5260205f2090600302016001018190555082604001602081019061109791906118b4565b5f82815481106110aa576110a9611691565b5b905f5260205f2090600302016002015f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f4e2368fe3778c6f838962df49d8f54d5ee4ba43e7229322cdb2e1ef77289f6b6846020013585604001602081019061112091906118b4565b60405161112e929190611800565b60405180910390a2505050565b5f8181548110611149575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff16905083565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111d4826111ab565b9050919050565b6111e4816111ca565b81146111ee575f80fd5b50565b5f813590506111ff816111db565b92915050565b5f6020828403121561121a576112196111a3565b5b5f611227848285016111f1565b91505092915050565b5f8115159050919050565b61124481611230565b82525050565b5f60208201905061125d5f83018461123b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611295816111ca565b82525050565b5f819050919050565b6112ad8161129b565b82525050565b5f60ff82169050919050565b6112c8816112b3565b82525050565b606082015f8201516112e25f85018261128c565b5060208201516112f560208501826112a4565b50604082015161130860408501826112bf565b50505050565b5f61131983836112ce565b60608301905092915050565b5f602082019050919050565b5f61133b82611263565b611345818561126d565b93506113508361127d565b805f5b83811015611380578151611367888261130e565b975061137283611325565b925050600181019050611353565b5085935050505092915050565b5f6020820190508181035f8301526113a58184611331565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113ce576113cd6113ad565b5b8235905067ffffffffffffffff8111156113eb576113ea6113b1565b5b602083019150836060820283011115611407576114066113b5565b5b9250929050565b5f8060208385031215611424576114236111a3565b5b5f83013567ffffffffffffffff811115611441576114406111a7565b5b61144d858286016113b9565b92509250509250929050565b61146281611230565b811461146c575f80fd5b50565b5f8135905061147d81611459565b92915050565b5f8060408385031215611499576114986111a3565b5b5f6114a6858286016111f1565b92505060206114b78582860161146f565b9150509250929050565b5f819050919050565b5f6114e46114df6114da846111ab565b6114c1565b6111ab565b9050919050565b5f6114f5826114ca565b9050919050565b5f611506826114eb565b9050919050565b611516816114fc565b82525050565b5f60208201905061152f5f83018461150d565b92915050565b5f80fd5b5f6060828403121561154e5761154d611535565b5b81905092915050565b5f6060828403121561156c5761156b6111a3565b5b5f61157984828501611539565b91505092915050565b61158b8161129b565b8114611595575f80fd5b50565b5f813590506115a681611582565b92915050565b5f602082840312156115c1576115c06111a3565b5b5f6115ce84828501611598565b91505092915050565b6115e0816111ca565b82525050565b6115ef8161129b565b82525050565b6115fe816112b3565b82525050565b5f6060820190506116175f8301866115d7565b61162460208301856115e6565b61163160408301846115f5565b949350505050565b5f81519050611647816111db565b92915050565b5f60208284031215611662576116616111a3565b5b5f61166f84828501611639565b91505092915050565b5f60208201905061168b5f8301846115d7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611708826116c2565b810181811067ffffffffffffffff82111715611727576117266116d2565b5b80604052505050565b5f61173961119a565b905061174582826116ff565b919050565b611753816112b3565b811461175d575f80fd5b50565b5f8135905061176e8161174a565b92915050565b5f60608284031215611789576117886116be565b5b6117936060611730565b90505f6117a2848285016111f1565b5f8301525060206117b584828501611598565b60208301525060406117c984828501611760565b60408301525092915050565b5f606082840312156117ea576117e96111a3565b5b5f6117f784828501611774565b91505092915050565b5f6040820190506118135f8301856115e6565b61182060208301846115f5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61185e8261129b565b91506118698361129b565b925082820390508181111561188157611880611827565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f602082840312156118c9576118c86111a3565b5b5f6118d684828501611760565b9150509291505056fea26469706673582212202b228266112355ba906956eecdd8e71c437ef61ed6b9e5d68f676f8eeb506d2264736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce80000000000000000000000004509f7ffa3f0be2739d26d3afb2f659ed91410d2
-----Decoded View---------------
Arg [0] : _metaCore (address): 0x8700AF942BE2A6E5566306D0eE7Bcc5a3A6E0ce8
Arg [1] : _initialOwner (address): 0x4509F7ffa3f0be2739d26D3AFb2f659ed91410d2
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce8
Arg [1] : 0000000000000000000000004509f7ffa3f0be2739d26d3afb2f659ed91410d2
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.