Overview
BERA Balance
BERA Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Modify Collatera... | 3788512 | 6 days ago | IN | 0 BERA | 0.00000029 | ||||
Modify Collatera... | 3788491 | 6 days ago | IN | 0 BERA | 0.00000046 | ||||
Set Collateral V... | 3783533 | 6 days ago | IN | 0 BERA | 0.00000053 | ||||
Set Collateral V... | 3731875 | 8 days ago | IN | 0 BERA | 0.00000001 | ||||
Set Collateral V... | 3555568 | 12 days ago | IN | 0 BERA | 0.00000016 | ||||
Set Collateral V... | 3523429 | 12 days ago | IN | 0 BERA | 0 | ||||
Remove Collatera... | 3520063 | 13 days ago | IN | 0 BERA | 0 | ||||
Remove Collatera... | 3519687 | 13 days ago | IN | 0 BERA | 0.00000006 | ||||
Set Collateral V... | 3518012 | 13 days ago | IN | 0 BERA | 0 | ||||
Set Collateral V... | 3470571 | 14 days ago | IN | 0 BERA | 0.00000004 | ||||
Set Collateral V... | 3210151 | 20 days ago | IN | 0 BERA | 0.00002974 |
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 {IMetaBeraborrowCore} from "src/interfaces/core/IMetaBeraborrowCore.sol"; /** * @title CollateralVaultRegistry * @author Beraborrow Team * @notice Registry to help track both CollateralVaults that can mint NECT, 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; } IMetaBeraborrowCore public immutable metaBeraborrowCore; 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 != metaBeraborrowCore.owner() && !isOwner[msg.sender]) revert OnlyOwner(msg.sender); _; } constructor(address _metaBeraborrowCore, address _initialOwner) { metaBeraborrowCore = IMetaBeraborrowCore(_metaBeraborrowCore); 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 != metaBeraborrowCore.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 IMetaBeraborrowCore { // --------------------------------- // Structures // --------------------------------- struct FeeInfo { bool existsForNect; uint16 nectFee; } 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 nect() external view returns (address); function lspEntryFee() external view returns (uint16); function lspExitFee() external view returns (uint16); 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 manager() external view returns (address); 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; function setManager(address _manager) 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 _nectFee Fee in basis points (bp) * @param _existsForNect Whether this custom fee is used when the caller = `nect` */ function setPeripheryFlashLoanFee(address _periphery, uint16 _nectFee, bool _existsForNect) 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 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 ManagerSet(address indexed manager); event PeripheryFlashLoanFee(address indexed periphery, uint16 nectFee); event LSPBootstrapPeriodSet(uint64 bootstrapPeriod); event RebalancerFees(address indexed rebalancer, uint16 entryFee, uint16 exitFee); event EntryFeeSet(uint16 fee); event ExitFeeSet(uint16 fee); 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/", "@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/", "infrared/=lib/infrared/", "merkle/=lib/merkle/", "murky/=lib/murky/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "rewards/=lib/rewards/", "solmate/=lib/solmate/src/" ], "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, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_metaBeraborrowCore","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":"metaBeraborrowCore","outputs":[{"internalType":"contract IMetaBeraborrowCore","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
60a060405234801561000f575f80fd5b50604051611aa6380380611aa68339818101604052810190610031919061011f565b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505061015d565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ee826100c5565b9050919050565b6100fe816100e4565b8114610108575f80fd5b50565b5f81519050610119816100f5565b92915050565b5f8060408385031215610135576101346100c1565b5b5f6101428582860161010b565b92505060206101538582860161010b565b9150509250929050565b6080516119156101915f395f81816102c70152818161076b01528181610c3701528181610e05015261111901526119155ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80632f54bf6e116100645780632f54bf6e1461011b578063386d7e931461014b57806380d8d8e314610167578063af068f4f14610183578063e9ebd189146101a157610091565b8063079086d0146100955780631dbf6466146100c55780632c1304fd146100e35780632f29959a146100ff575b5f80fd5b6100af60048036038101906100aa9190611205565b6101d3565b6040516100bc919061124a565b60405180910390f35b6100cd6101f0565b6040516100da919061138d565b60405180910390f35b6100fd60048036038101906100f8919061140e565b6102c5565b005b61011960048036038101906101149190611205565b610769565b005b61013560048036038101906101309190611205565b610c18565b604051610142919061124a565b60405180910390f35b61016560048036038101906101609190611483565b610c35565b005b610181600480360381019061017c91906114e3565b610e03565b005b61018b611117565b6040516101989190611569565b60405180910390f35b6101bb60048036038101906101b691906115ac565b61113b565b6040516101ca93929190611604565b60405180910390f35b6001602052805f5260405f205f915054906101000a900460ff1681565b60605f805480602002602001604051908101604052809291908181526020015f905b828210156102bc578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610212565b50505050905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610352919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156103d4575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561041657336040517f0a86c02a00000000000000000000000000000000000000000000000000000000815260040161040d9190611678565b60405180910390fd5b5f5b82829050811015610764575f83838381811061043757610436611691565b5b90506060020180360381019061044d91906117d5565b90505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d6919061164d565b73ffffffffffffffffffffffffffffffffffffffff160361053157805f01516040517f9e4ec4ac0000000000000000000000000000000000000000000000000000000081526004016105289190611678565b60405180910390fd5b60015f825f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156105c357805f01516040517fde1b8d3f0000000000000000000000000000000000000000000000000000000081526004016105ba9190611678565b60405180910390fd5b5f8054905060025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f81908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555050506001805f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f015173ffffffffffffffffffffffffffffffffffffffff167f0f0e941d7099ae5fedc0341b2f1e5377151f6c3c247e4416f1579e78da5bd9668260200151836040015160405161074e929190611800565b60405180910390a2508080600101915050610418565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f6919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610878575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108ba57336040517f0a86c02a0000000000000000000000000000000000000000000000000000000081526004016108b19190611678565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661094557806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161093c9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f805490506109989190611854565b9050808214610b20575f8082815481106109b5576109b4611691565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff16815250509050805f8481548110610a5c57610a5b611691565b5b905f5260205f2090600302015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff1602179055509050508260025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f805480610b3157610b30611887565b5b600190038181905f5260205f2090600302015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f6101000a81549060ff02191690555050905560015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3157336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610d289190611678565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015610dc7577f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc82604051610dba9190611678565b60405180910390a1610dff565b7ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610df69190611678565b60405180910390a15b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e90919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610f12575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f5457336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610f4b9190611678565b60405180910390fd5b5f815f016020810190610f679190611205565b905060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ff457806040517f9e4ec4ac000000000000000000000000000000000000000000000000000000008152600401610feb9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082602001355f828154811061104d5761104c611691565b5b905f5260205f2090600302016001018190555082604001602081019061107391906118b4565b5f828154811061108657611085611691565b5b905f5260205f2090600302016002015f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f4e2368fe3778c6f838962df49d8f54d5ee4ba43e7229322cdb2e1ef77289f6b684602001358560400160208101906110fc91906118b4565b60405161110a929190611800565b60405180910390a2505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8181548110611149575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff16905083565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111d4826111ab565b9050919050565b6111e4816111ca565b81146111ee575f80fd5b50565b5f813590506111ff816111db565b92915050565b5f6020828403121561121a576112196111a3565b5b5f611227848285016111f1565b91505092915050565b5f8115159050919050565b61124481611230565b82525050565b5f60208201905061125d5f83018461123b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611295816111ca565b82525050565b5f819050919050565b6112ad8161129b565b82525050565b5f60ff82169050919050565b6112c8816112b3565b82525050565b606082015f8201516112e25f85018261128c565b5060208201516112f560208501826112a4565b50604082015161130860408501826112bf565b50505050565b5f61131983836112ce565b60608301905092915050565b5f602082019050919050565b5f61133b82611263565b611345818561126d565b93506113508361127d565b805f5b83811015611380578151611367888261130e565b975061137283611325565b925050600181019050611353565b5085935050505092915050565b5f6020820190508181035f8301526113a58184611331565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113ce576113cd6113ad565b5b8235905067ffffffffffffffff8111156113eb576113ea6113b1565b5b602083019150836060820283011115611407576114066113b5565b5b9250929050565b5f8060208385031215611424576114236111a3565b5b5f83013567ffffffffffffffff811115611441576114406111a7565b5b61144d858286016113b9565b92509250509250929050565b61146281611230565b811461146c575f80fd5b50565b5f8135905061147d81611459565b92915050565b5f8060408385031215611499576114986111a3565b5b5f6114a6858286016111f1565b92505060206114b78582860161146f565b9150509250929050565b5f80fd5b5f606082840312156114da576114d96114c1565b5b81905092915050565b5f606082840312156114f8576114f76111a3565b5b5f611505848285016114c5565b91505092915050565b5f819050919050565b5f61153161152c611527846111ab565b61150e565b6111ab565b9050919050565b5f61154282611517565b9050919050565b5f61155382611538565b9050919050565b61156381611549565b82525050565b5f60208201905061157c5f83018461155a565b92915050565b61158b8161129b565b8114611595575f80fd5b50565b5f813590506115a681611582565b92915050565b5f602082840312156115c1576115c06111a3565b5b5f6115ce84828501611598565b91505092915050565b6115e0816111ca565b82525050565b6115ef8161129b565b82525050565b6115fe816112b3565b82525050565b5f6060820190506116175f8301866115d7565b61162460208301856115e6565b61163160408301846115f5565b949350505050565b5f81519050611647816111db565b92915050565b5f60208284031215611662576116616111a3565b5b5f61166f84828501611639565b91505092915050565b5f60208201905061168b5f8301846115d7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611708826116c2565b810181811067ffffffffffffffff82111715611727576117266116d2565b5b80604052505050565b5f61173961119a565b905061174582826116ff565b919050565b611753816112b3565b811461175d575f80fd5b50565b5f8135905061176e8161174a565b92915050565b5f60608284031215611789576117886116be565b5b6117936060611730565b90505f6117a2848285016111f1565b5f8301525060206117b584828501611598565b60208301525060406117c984828501611760565b60408301525092915050565b5f606082840312156117ea576117e96111a3565b5b5f6117f784828501611774565b91505092915050565b5f6040820190506118135f8301856115e6565b61182060208301846115f5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61185e8261129b565b91506118698361129b565b925082820390508181111561188157611880611827565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f602082840312156118c9576118c86111a3565b5b5f6118d684828501611760565b9150509291505056fea264697066735822122059356b01afdb7fb7bb5eff4bb5d75edb887c575db6495236da06d6efeb7a5b3f64736f6c634300081a003300000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc7000000000000000000000000c4a104d658d99e5c61767555b1ae6119114ccaaa
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610091575f3560e01c80632f54bf6e116100645780632f54bf6e1461011b578063386d7e931461014b57806380d8d8e314610167578063af068f4f14610183578063e9ebd189146101a157610091565b8063079086d0146100955780631dbf6466146100c55780632c1304fd146100e35780632f29959a146100ff575b5f80fd5b6100af60048036038101906100aa9190611205565b6101d3565b6040516100bc919061124a565b60405180910390f35b6100cd6101f0565b6040516100da919061138d565b60405180910390f35b6100fd60048036038101906100f8919061140e565b6102c5565b005b61011960048036038101906101149190611205565b610769565b005b61013560048036038101906101309190611205565b610c18565b604051610142919061124a565b60405180910390f35b61016560048036038101906101609190611483565b610c35565b005b610181600480360381019061017c91906114e3565b610e03565b005b61018b611117565b6040516101989190611569565b60405180910390f35b6101bb60048036038101906101b691906115ac565b61113b565b6040516101ca93929190611604565b60405180910390f35b6001602052805f5260405f205f915054906101000a900460ff1681565b60605f805480602002602001604051908101604052809291908181526020015f905b828210156102bc578382905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff168152505081526020019060010190610212565b50505050905090565b7f00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610352919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156103d4575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561041657336040517f0a86c02a00000000000000000000000000000000000000000000000000000000815260040161040d9190611678565b60405180910390fd5b5f5b82829050811015610764575f83838381811061043757610436611691565b5b90506060020180360381019061044d91906117d5565b90505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d6919061164d565b73ffffffffffffffffffffffffffffffffffffffff160361053157805f01516040517f9e4ec4ac0000000000000000000000000000000000000000000000000000000081526004016105289190611678565b60405180910390fd5b60015f825f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156105c357805f01516040517fde1b8d3f0000000000000000000000000000000000000000000000000000000081526004016105ba9190611678565b60405180910390fd5b5f8054905060025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f81908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555050506001805f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f015173ffffffffffffffffffffffffffffffffffffffff167f0f0e941d7099ae5fedc0341b2f1e5377151f6c3c247e4416f1579e78da5bd9668260200151836040015160405161074e929190611800565b60405180910390a2508080600101915050610418565b505050565b7f00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f6919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610878575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108ba57336040517f0a86c02a0000000000000000000000000000000000000000000000000000000081526004016108b19190611678565b60405180910390fd5b60015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661094557806040517f9e4ec4ac00000000000000000000000000000000000000000000000000000000815260040161093c9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f805490506109989190611854565b9050808214610b20575f8082815481106109b5576109b4611691565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff16815250509050805f8481548110610a5c57610a5b611691565b5b905f5260205f2090600302015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff1602179055509050508260025f835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f805480610b3157610b30611887565b5b600190038181905f5260205f2090600302015f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f9055600282015f6101000a81549060ff02191690555050905560015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff021916905560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b7f00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc2919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3157336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610d289190611678565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015610dc7577f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc82604051610dba9190611678565b60405180910390a1610dff565b7ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf82604051610df69190611678565b60405180910390a15b5050565b7f00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e90919061164d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610f12575060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610f5457336040517f0a86c02a000000000000000000000000000000000000000000000000000000008152600401610f4b9190611678565b60405180910390fd5b5f815f016020810190610f679190611205565b905060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ff457806040517f9e4ec4ac000000000000000000000000000000000000000000000000000000008152600401610feb9190611678565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082602001355f828154811061104d5761104c611691565b5b905f5260205f2090600302016001018190555082604001602081019061107391906118b4565b5f828154811061108657611085611691565b5b905f5260205f2090600302016002015f6101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f4e2368fe3778c6f838962df49d8f54d5ee4ba43e7229322cdb2e1ef77289f6b684602001358560400160208101906110fc91906118b4565b60405161110a929190611800565b60405180910390a2505050565b7f00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc781565b5f8181548110611149575f80fd5b905f5260205f2090600302015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002015f9054906101000a900460ff16905083565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111d4826111ab565b9050919050565b6111e4816111ca565b81146111ee575f80fd5b50565b5f813590506111ff816111db565b92915050565b5f6020828403121561121a576112196111a3565b5b5f611227848285016111f1565b91505092915050565b5f8115159050919050565b61124481611230565b82525050565b5f60208201905061125d5f83018461123b565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611295816111ca565b82525050565b5f819050919050565b6112ad8161129b565b82525050565b5f60ff82169050919050565b6112c8816112b3565b82525050565b606082015f8201516112e25f85018261128c565b5060208201516112f560208501826112a4565b50604082015161130860408501826112bf565b50505050565b5f61131983836112ce565b60608301905092915050565b5f602082019050919050565b5f61133b82611263565b611345818561126d565b93506113508361127d565b805f5b83811015611380578151611367888261130e565b975061137283611325565b925050600181019050611353565b5085935050505092915050565b5f6020820190508181035f8301526113a58184611331565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126113ce576113cd6113ad565b5b8235905067ffffffffffffffff8111156113eb576113ea6113b1565b5b602083019150836060820283011115611407576114066113b5565b5b9250929050565b5f8060208385031215611424576114236111a3565b5b5f83013567ffffffffffffffff811115611441576114406111a7565b5b61144d858286016113b9565b92509250509250929050565b61146281611230565b811461146c575f80fd5b50565b5f8135905061147d81611459565b92915050565b5f8060408385031215611499576114986111a3565b5b5f6114a6858286016111f1565b92505060206114b78582860161146f565b9150509250929050565b5f80fd5b5f606082840312156114da576114d96114c1565b5b81905092915050565b5f606082840312156114f8576114f76111a3565b5b5f611505848285016114c5565b91505092915050565b5f819050919050565b5f61153161152c611527846111ab565b61150e565b6111ab565b9050919050565b5f61154282611517565b9050919050565b5f61155382611538565b9050919050565b61156381611549565b82525050565b5f60208201905061157c5f83018461155a565b92915050565b61158b8161129b565b8114611595575f80fd5b50565b5f813590506115a681611582565b92915050565b5f602082840312156115c1576115c06111a3565b5b5f6115ce84828501611598565b91505092915050565b6115e0816111ca565b82525050565b6115ef8161129b565b82525050565b6115fe816112b3565b82525050565b5f6060820190506116175f8301866115d7565b61162460208301856115e6565b61163160408301846115f5565b949350505050565b5f81519050611647816111db565b92915050565b5f60208284031215611662576116616111a3565b5b5f61166f84828501611639565b91505092915050565b5f60208201905061168b5f8301846115d7565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611708826116c2565b810181811067ffffffffffffffff82111715611727576117266116d2565b5b80604052505050565b5f61173961119a565b905061174582826116ff565b919050565b611753816112b3565b811461175d575f80fd5b50565b5f8135905061176e8161174a565b92915050565b5f60608284031215611789576117886116be565b5b6117936060611730565b90505f6117a2848285016111f1565b5f8301525060206117b584828501611598565b60208301525060406117c984828501611760565b60408301525092915050565b5f606082840312156117ea576117e96111a3565b5b5f6117f784828501611774565b91505092915050565b5f6040820190506118135f8301856115e6565b61182060208301846115f5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61185e8261129b565b91506118698361129b565b925082820390508181111561188157611880611827565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f602082840312156118c9576118c86111a3565b5b5f6118d684828501611760565b9150509291505056fea264697066735822122059356b01afdb7fb7bb5eff4bb5d75edb887c575db6495236da06d6efeb7a5b3f64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc7000000000000000000000000c4a104d658d99e5c61767555b1ae6119114ccaaa
-----Decoded View---------------
Arg [0] : _metaBeraborrowCore (address): 0x27393e8a6f8f2e32B870903279999C820E984DC7
Arg [1] : _initialOwner (address): 0xc4A104d658d99e5C61767555b1AE6119114ccaaA
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000027393e8a6f8f2e32b870903279999c820e984dc7
Arg [1] : 000000000000000000000000c4a104d658d99e5c61767555b1ae6119114ccaaa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.