Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MetaCore
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 1 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {IMetaCore} from "src/interfaces/core/IMetaCore.sol";
/**
@title Meta Core
@notice Single source of truth for system-wide values and contract ownership.
Other ownable contracts inherit their ownership from this contract
using `PropOwnable`, relayed by Core.
@dev Named Meta, since will control multiple protocol instances
*/
contract MetaCore is IMetaCore {
// We enforce a three day delay between committing and applying
// an ownership change, as a sanity check on a proposed new owner
// and to give users time to react in case the act is malicious.
uint256 public constant OWNERSHIP_TRANSFER_DELAY = 3 days;
uint16 public constant DEFAULT_FLASH_LOAN_FEE = 5; // 0.05%
uint16 constant BP = 1e4;
// During bootstrap period sDebtToken redemptions are not allowed
uint64 public lspBootstrapPeriod;
address public priceFeed;
address public debtToken;
// System-wide pause. When true, disables position adjustments across all collaterals.
bool public paused;
address public owner;
address public pendingOwner;
uint256 public ownershipTransferDeadline;
address public guardian;
address public feeReceiver;
uint16 public lspEntryFee;
uint16 public lspExitFee;
uint16 public interestProtocolShare;
address public defaultInterestReceiver;
// Beacon-looked by DEBT_TOKEN to determine fee reduction given to periphery contract for flash loans/mints
mapping(address peripheryContract => FeeInfo fee) internal peripheryFlashLoanFee;
mapping(address => RebalancerFeeInfo fee) internal rebalancerFee;
constructor(address _owner, address _guardian, address _priceFeed, address _debtToken, address _feeReceiver, uint16 _lspEntryFee, uint16 _lspExitFee, uint64 _lspBootstrapPeriod, address _defaultInterestReceiver) {
if (_owner == address(0) || _guardian == address(0) || _priceFeed == address(0) || _debtToken == address(0) || _feeReceiver == address(0)) {
revert("MetaCore: 0 address");
}
owner = _owner;
guardian = _guardian;
priceFeed = _priceFeed;
debtToken = _debtToken;
feeReceiver = _feeReceiver;
lspEntryFee = _lspEntryFee;
lspExitFee = _lspExitFee;
lspBootstrapPeriod = _lspBootstrapPeriod;
interestProtocolShare = 1500; // 15% default
defaultInterestReceiver = _defaultInterestReceiver;
emit GuardianSet(_guardian);
emit PriceFeedSet(_priceFeed);
emit FeeReceiverSet(_feeReceiver);
emit EntryFeeSet(_lspEntryFee);
emit ExitFeeSet(_lspExitFee);
emit LSPBootstrapPeriodSet(_lspBootstrapPeriod);
}
modifier onlyOwner() {
require(msg.sender == owner, "Only owner");
_;
}
/**
* @notice Sets the global pause state of the protocol
* Pausing is used to mitigate risks in exceptional circumstances
* Functionalities affected by pausing are:
* - New borrowing is not possible
* - New collateral deposits are not possible
* - New stability pool deposits are not possible
* @param _paused If true the protocol is paused
*/
function setPaused(bool _paused) external {
require((_paused && msg.sender == guardian) || msg.sender == owner, "Unauthorized");
paused = _paused;
if (_paused) {
emit Paused();
} else {
emit Unpaused();
}
}
/**
* @notice Set the receiver of all fees across the protocol
* @param _feeReceiver Address of the fee's recipient
*/
function setFeeReceiver(address _feeReceiver) external onlyOwner {
feeReceiver = _feeReceiver;
emit FeeReceiverSet(_feeReceiver);
}
/**
* @notice Set the price feed used in the protocol
* @param _priceFeed Price feed address
*/
function setPriceFeed(address _priceFeed) external onlyOwner {
priceFeed = _priceFeed;
emit PriceFeedSet(_priceFeed);
}
/**
* @notice Set the guardian address
The guardian can execute some emergency actions
* @param _guardian Guardian address
*/
function setGuardian(address _guardian) external onlyOwner {
guardian = _guardian;
emit GuardianSet(_guardian);
}
/// @notice Bootstrap period is added to current timestamp
function setLspBootstrapPeriod(uint64 _bootstrapPeriod) external onlyOwner {
lspBootstrapPeriod = uint64(block.timestamp) + _bootstrapPeriod;
emit LSPBootstrapPeriodSet(_bootstrapPeriod);
}
function setRebalancerFee(address _rebalancer, uint16 _entryFee, uint16 _exitFee) external onlyOwner {
require(_entryFee <= BP && _exitFee <= BP, "Fee too high");
rebalancerFee[_rebalancer] = RebalancerFeeInfo({exists: true, entryFee: _entryFee, exitFee: _exitFee});
emit RebalancerFees(_rebalancer, _entryFee, _exitFee);
}
function setEntryFee(uint16 _fee) external onlyOwner {
require(_fee <= BP, "Fee too high");
lspEntryFee = _fee;
emit EntryFeeSet(_fee);
}
function setExitFee(uint16 _fee) external onlyOwner {
require(_fee <= BP, "Fee too high");
lspExitFee = _fee;
emit ExitFeeSet(_fee);
}
function setInterestProtocolShare(uint16 _interestProtocolShare) external onlyOwner {
require(_interestProtocolShare <= BP, "Share too high");
interestProtocolShare = _interestProtocolShare;
emit InterestProtocolShareSet(_interestProtocolShare);
}
function setDefaultInterestReceiver(address _defaultInterestReceiver) external onlyOwner {
require(_defaultInterestReceiver != address(0), "Zero address");
defaultInterestReceiver = _defaultInterestReceiver;
emit DefaultInterestReceiverSet(_defaultInterestReceiver);
}
function setPeripheryFlashLoanFee(address _periphery, uint16 _debtTokenFee, bool _existsForDebtToken) external onlyOwner {
require(_debtTokenFee <= BP, "Fee too high");
peripheryFlashLoanFee[_periphery] = FeeInfo({
existsForDebtToken: _existsForDebtToken,
debtTokenFee: _debtTokenFee
});
emit PeripheryFlashLoanFee(_periphery, _debtTokenFee);
}
function commitTransferOwnership(address newOwner) external onlyOwner {
pendingOwner = newOwner;
ownershipTransferDeadline = block.timestamp + OWNERSHIP_TRANSFER_DELAY;
emit NewOwnerCommitted(msg.sender, newOwner, block.timestamp + OWNERSHIP_TRANSFER_DELAY);
}
function acceptTransferOwnership() external {
require(msg.sender == pendingOwner, "Only new owner");
require(block.timestamp >= ownershipTransferDeadline, "Deadline not passed");
emit NewOwnerAccepted(owner, msg.sender);
owner = pendingOwner;
pendingOwner = address(0);
ownershipTransferDeadline = 0;
}
function revokeTransferOwnership() external onlyOwner {
emit NewOwnerRevoked(msg.sender, pendingOwner);
pendingOwner = address(0);
ownershipTransferDeadline = 0;
}
function getPeripheryFlashLoanFee(address periphery) external view returns (uint16) {
FeeInfo memory info = peripheryFlashLoanFee[periphery];
if (msg.sender == debtToken) {
if (info.existsForDebtToken) {
return info.debtTokenFee;
}
}
return DEFAULT_FLASH_LOAN_FEE;
}
function getLspEntryFee(address rebalancer) external view returns (uint16) {
if (rebalancerFee[rebalancer].exists) {
return rebalancerFee[rebalancer].entryFee;
} else {
return lspEntryFee;
}
}
function getLspExitFee(address rebalancer) external view returns (uint16) {
if (rebalancerFee[rebalancer].exists) {
return rebalancerFee[rebalancer].exitFee;
} else {
return lspExitFee;
}
}
}// 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();
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin-upgradeable/contracts/=lib/openzeppelin-contracts-upgradeable/contracts/",
"solady/=lib/solady/src/",
"@solmate/=lib/solmate/src/",
"@chimera/=lib/chimera/src/",
"forge-std/=lib/forge-std/src/",
"@uniswap/v3-core/=lib/v3-core/",
"@uniswap/v3-periphery/=lib/v3-periphery/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"chimera/=lib/chimera/src/",
"ds-test/=lib/solmate/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"rewards/=lib/rewards/",
"solmate/=lib/solmate/src/",
"uniswap/=lib/uniswap/",
"v3-core/=lib/v3-core/contracts/",
"v3-periphery/=lib/v3-periphery/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 1
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_debtToken","type":"address"},{"internalType":"address","name":"_feeReceiver","type":"address"},{"internalType":"uint16","name":"_lspEntryFee","type":"uint16"},{"internalType":"uint16","name":"_lspExitFee","type":"uint16"},{"internalType":"uint64","name":"_lspBootstrapPeriod","type":"uint64"},{"internalType":"address","name":"_defaultInterestReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"defaultInterestReceiver","type":"address"}],"name":"DefaultInterestReceiverSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"fee","type":"uint16"}],"name":"EntryFeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"fee","type":"uint16"}],"name":"ExitFeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"interestProtocolShare","type":"uint16"}],"name":"InterestProtocolShareSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"bootstrapPeriod","type":"uint64"}],"name":"LSPBootstrapPeriodSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"NewOwnerAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"NewOwnerCommitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"revokedOwner","type":"address"}],"name":"NewOwnerRevoked","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"periphery","type":"address"},{"indexed":false,"internalType":"uint16","name":"debtTokenFee","type":"uint16"}],"name":"PeripheryFlashLoanFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"}],"name":"PriceFeedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rebalancer","type":"address"},{"indexed":false,"internalType":"uint16","name":"entryFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"exitFee","type":"uint16"}],"name":"RebalancerFees","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEFAULT_FLASH_LOAN_FEE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OWNERSHIP_TRANSFER_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"commitTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"debtToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultInterestReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rebalancer","type":"address"}],"name":"getLspEntryFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rebalancer","type":"address"}],"name":"getLspExitFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"periphery","type":"address"}],"name":"getPeripheryFlashLoanFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"interestProtocolShare","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lspBootstrapPeriod","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lspEntryFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lspExitFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipTransferDeadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revokeTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_defaultInterestReceiver","type":"address"}],"name":"setDefaultInterestReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"setEntryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_fee","type":"uint16"}],"name":"setExitFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_guardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_interestProtocolShare","type":"uint16"}],"name":"setInterestProtocolShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"_bootstrapPeriod","type":"uint64"}],"name":"setLspBootstrapPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_periphery","type":"address"},{"internalType":"uint16","name":"_debtTokenFee","type":"uint16"},{"internalType":"bool","name":"_existsForDebtToken","type":"bool"}],"name":"setPeripheryFlashLoanFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"setPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rebalancer","type":"address"},{"internalType":"uint16","name":"_entryFee","type":"uint16"},{"internalType":"uint16","name":"_exitFee","type":"uint16"}],"name":"setRebalancerFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b5060405161149938038061149983398101604081905261002e91610319565b6001600160a01b038916158061004b57506001600160a01b038816155b8061005d57506001600160a01b038716155b8061006f57506001600160a01b038616155b8061008157506001600160a01b038516155b156100d25760405162461bcd60e51b815260206004820152601360248201527f4d657461436f72653a2030206164647265737300000000000000000000000000604482015260640160405180910390fd5b600280546001600160a01b03199081166001600160a01b038c8116919091179092556005805482168b84169081179091555f80546001805485168c8716179055600680546001600160e01b0319909216680100000000000000008e8816026001600160401b031916176001600160401b0389161783558a86166001600160b01b031990921691909117600160a01b61ffff8b8116919091029190911763ffffffff60b01b1916600160b01b918a169190910261ffff60c01b19161761017760c21b179055600780549093169385169390931790915560405190917fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e91a26040516001600160a01b038816907f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd905f90a26040516001600160a01b038616907fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d905f90a260405161ffff851681527f7c89a32178359844630b51111ebedda6f72e783c647ca3f35ed04a4733ed1ccc9060200160405180910390a160405161ffff841681527fecc8064941690044bb65ba7231fedda584279242d2b661b28363305a2642ad019060200160405180910390a16040516001600160401b03831681527f4ad74b3bfd3237da2040000e3e384a25c259b4ebc856e2f19a4c14ed020cb8169060200160405180910390a15050505050505050506103c9565b80516001600160a01b0381168114610303575f80fd5b919050565b805161ffff81168114610303575f80fd5b5f805f805f805f805f6101208a8c031215610332575f80fd5b61033b8a6102ed565b985061034960208b016102ed565b975061035760408b016102ed565b965061036560608b016102ed565b955061037360808b016102ed565b945061038160a08b01610308565b935061038f60c08b01610308565b60e08b01519093506001600160401b03811681146103ab575f80fd5b91506103ba6101008b016102ed565b90509295985092959850929598565b6110c3806103d65f395ff3fe608060405234801561000f575f80fd5b506004361061017e575f3560e01c806315112f111461018257806316c38b3c1461019e578063181be0e2146101b357806320bde782146101c657806341ba27eb146101db578063452a9320146101fa57806355c5fc3b14610225578063591ac140146102385780635c975abb1461024b5780636034d9f51461026f5780636cd550cd146102825780636d52dffd1461028a57806371f8424f1461029f578063724e78da146102b2578063741bef1a146102c55780637433ae7a146102de5780637b371107146102e85780638a0dac4a146102f05780638da5cb5b146103035780639c81ffcd146103165780639f00b8f914610329578063a65549921461033e578063b3f0067414610351578063cd83becd14610364578063d304a83e14610379578063dc30b6101461038c578063e1cebf0b1461039f578063e30c3978146103b2578063e6da51a4146103c5578063efdcd974146103d8578063f75b0404146103eb578063f8d89898146103fe575b5f80fd5b61018b60045481565b6040519081526020015b60405180910390f35b6101b16101ac366004610ebe565b610411565b005b6101b16101c1366004610f05565b6104f5565b6101ce600581565b6040516101959190610f45565b5f546101ed906001600160401b031681565b6040516101959190610f54565b60055461020d906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b6101b1610233366004610f68565b610612565b6101ce610246366004610f81565b6106b7565b60015461025f90600160a01b900460ff1681565b6040519015158152602001610195565b6101ce61027d366004610f81565b610715565b6101b161076c565b6006546101ce90600160c01b900461ffff1681565b60075461020d906001600160a01b031681565b6101b16102c0366004610f81565b6107e5565b5f5461020d90600160401b90046001600160a01b031681565b61018b6203f48081565b6101b1610862565b6101b16102fe366004610f81565b610957565b60025461020d906001600160a01b031681565b6101b1610324366004610f9a565b6109ca565b6006546101ce90600160b01b900461ffff1681565b6101b161034c366004610fd1565b610aa6565b60065461020d906001600160a01b031681565b6006546101ce90600160a01b900461ffff1681565b6101b1610387366004610f68565b610b29565b6101b161039a366004610f81565b610be4565b6101b16103ad366004610f81565b610c9c565b60035461020d906001600160a01b031681565b6101ce6103d3366004610f81565b610d3e565b6101b16103e6366004610f81565b610da2565b6101b16103f9366004610f68565b610e15565b60015461020d906001600160a01b031681565b80801561042857506005546001600160a01b031633145b8061043d57506002546001600160a01b031633145b61047d5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064015b60405180910390fd5b6001805482158015600160a01b0260ff60a01b19909216919091179091556104ca576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752905f90a150565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933905f90a150565b6002546001600160a01b0316331461051f5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff83161180159061053b575061271061ffff821611155b6105575760405162461bcd60e51b81526004016104749061101b565b604080516060810182526001815261ffff84811660208084018281528684168587018181526001600160a01b038b165f818152600986528990209751885494519251881663010000000264ffff00000019939098166101000262ffff00199115159190911662ffffff1990951694909417939093171694909417909455845191825281019190915290917f1e67314935d25345ac58eec0e687d562f25b8c60ccfc5410873772e4188ab5c091015b60405180910390a2505050565b6002546001600160a01b0316331461063c5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff821611156106625760405162461bcd60e51b81526004016104749061101b565b6006805461ffff60a01b1916600160a01b61ffff8416021790556040517f7c89a32178359844630b51111ebedda6f72e783c647ca3f35ed04a4733ed1ccc906106ac908390610f45565b60405180910390a150565b6001600160a01b0381165f9081526009602052604081205460ff16156106fd57506001600160a01b03165f908152600960205260409020546301000000900461ffff1690565b5050600654600160b01b900461ffff1690565b919050565b6001600160a01b0381165f9081526009602052604081205460ff161561075957506001600160a01b03165f90815260096020526040902054610100900461ffff1690565b5050600654600160a01b900461ffff1690565b6002546001600160a01b031633146107965760405162461bcd60e51b815260040161047490610ff7565b6003546040516001600160a01b039091169033907fd6176b30539d20b54c946c7ca9dca5950b2f1090fc2bfc55cc77a4025a8a78ae905f90a3600380546001600160a01b03191690555f600455565b6002546001600160a01b0316331461080f5760405162461bcd60e51b815260040161047490610ff7565b5f8054600160401b600160e01b031916600160401b6001600160a01b03841690810291909117825560405190917f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd91a250565b6003546001600160a01b031633146108ad5760405162461bcd60e51b815260206004820152600e60248201526d27b7363c903732bb9037bbb732b960911b6044820152606401610474565b6004544210156108f55760405162461bcd60e51b8152602060048201526013602482015272111958591b1a5b99481b9bdd081c185cdcd959606a1b6044820152606401610474565b60025460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554905f90a360038054600280546001600160a01b03199081166001600160a01b038416179091551690555f600455565b6002546001600160a01b031633146109815760405162461bcd60e51b815260040161047490610ff7565b600580546001600160a01b0319166001600160a01b0383169081179091556040517fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e905f90a250565b6002546001600160a01b031633146109f45760405162461bcd60e51b815260040161047490610ff7565b61271061ffff83161115610a1a5760405162461bcd60e51b81526004016104749061101b565b604080518082018252821515815261ffff84811660208084019182526001600160a01b0388165f81815260089092529085902093518454925162ffffff1990931690151562ffff0019161761010092909316919091029190911790915590517f984bf420abc39253029aadc4fbb0905dc95b6039bca25648c17a0175f8b5847390610605908590610f45565b6002546001600160a01b03163314610ad05760405162461bcd60e51b815260040161047490610ff7565b610ada8142611055565b5f80546001600160401b0319166001600160401b03929092169190911790556040517f4ad74b3bfd3237da2040000e3e384a25c259b4ebc856e2f19a4c14ed020cb816906106ac908390610f54565b6002546001600160a01b03163314610b535760405162461bcd60e51b815260040161047490610ff7565b61271061ffff82161115610b9a5760405162461bcd60e51b815260206004820152600e60248201526d0a6d0c2e4ca40e8dede40d0d2ced60931b6044820152606401610474565b6006805461ffff60c01b1916600160c01b61ffff8416021790556040517fc992974f7b3d5534e7509e2d64385a6e566c8a141a229a952a205c35404152e2906106ac908390610f45565b6002546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161047490610ff7565b6001600160a01b038116610c535760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610474565b600780546001600160a01b0319166001600160a01b0383169081179091556040517fc80ba09da5b24740aa3a0f83781029dd98cb7f80ede3f21179ab8496edc9b5f6905f90a250565b6002546001600160a01b03163314610cc65760405162461bcd60e51b815260040161047490610ff7565b600380546001600160a01b0319166001600160a01b038316179055610cee6203f4804261107a565b6004556001600160a01b038116337f4c743940588d40b308f73f5275a4e608b25c5374f40e4839fb00467e238acfac610d2a6203f4804261107a565b60405190815260200160405180910390a350565b6001600160a01b038181165f90815260086020908152604080832081518083019092525460ff811615158252610100900461ffff169181019190915260015491929091163303610d9957805115610d99576020015192915050565b50600592915050565b6002546001600160a01b03163314610dcc5760405162461bcd60e51b815260040161047490610ff7565b600680546001600160a01b0319166001600160a01b0383169081179091556040517fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d905f90a250565b6002546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff82161115610e655760405162461bcd60e51b81526004016104749061101b565b6006805461ffff60b01b1916600160b01b61ffff8416021790556040517fecc8064941690044bb65ba7231fedda584279242d2b661b28363305a2642ad01906106ac908390610f45565b80358015158114610710575f80fd5b5f60208284031215610ece575f80fd5b610ed782610eaf565b9392505050565b80356001600160a01b0381168114610710575f80fd5b803561ffff81168114610710575f80fd5b5f805f60608486031215610f17575f80fd5b610f2084610ede565b9250610f2e60208501610ef4565b9150610f3c60408501610ef4565b90509250925092565b61ffff91909116815260200190565b6001600160401b0391909116815260200190565b5f60208284031215610f78575f80fd5b610ed782610ef4565b5f60208284031215610f91575f80fd5b610ed782610ede565b5f805f60608486031215610fac575f80fd5b610fb584610ede565b9250610fc360208501610ef4565b9150610f3c60408501610eaf565b5f60208284031215610fe1575f80fd5b81356001600160401b0381168114610ed7575f80fd5b6020808252600a908201526927b7363c9037bbb732b960b11b604082015260600190565b6020808252600c908201526b08ccaca40e8dede40d0d2ced60a31b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561107457611074611041565b92915050565b808201808211156110745761107461104156fea26469706673582212202f0b6add367bd7589430542c99ac0c02c40d301afb57362c6fc2b1cece77a57464736f6c634300081a00330000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d38050000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805000000000000000000000000d9069e3f3eeb45d4e05b765142ba28f3beb96f7a0000000000000000000000000f26bbb8962d73bc891327f14db5162d5279899f000000000000000000000000686ed0d7840dbd41cdacd37c26e68e13ed317d340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061017e575f3560e01c806315112f111461018257806316c38b3c1461019e578063181be0e2146101b357806320bde782146101c657806341ba27eb146101db578063452a9320146101fa57806355c5fc3b14610225578063591ac140146102385780635c975abb1461024b5780636034d9f51461026f5780636cd550cd146102825780636d52dffd1461028a57806371f8424f1461029f578063724e78da146102b2578063741bef1a146102c55780637433ae7a146102de5780637b371107146102e85780638a0dac4a146102f05780638da5cb5b146103035780639c81ffcd146103165780639f00b8f914610329578063a65549921461033e578063b3f0067414610351578063cd83becd14610364578063d304a83e14610379578063dc30b6101461038c578063e1cebf0b1461039f578063e30c3978146103b2578063e6da51a4146103c5578063efdcd974146103d8578063f75b0404146103eb578063f8d89898146103fe575b5f80fd5b61018b60045481565b6040519081526020015b60405180910390f35b6101b16101ac366004610ebe565b610411565b005b6101b16101c1366004610f05565b6104f5565b6101ce600581565b6040516101959190610f45565b5f546101ed906001600160401b031681565b6040516101959190610f54565b60055461020d906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b6101b1610233366004610f68565b610612565b6101ce610246366004610f81565b6106b7565b60015461025f90600160a01b900460ff1681565b6040519015158152602001610195565b6101ce61027d366004610f81565b610715565b6101b161076c565b6006546101ce90600160c01b900461ffff1681565b60075461020d906001600160a01b031681565b6101b16102c0366004610f81565b6107e5565b5f5461020d90600160401b90046001600160a01b031681565b61018b6203f48081565b6101b1610862565b6101b16102fe366004610f81565b610957565b60025461020d906001600160a01b031681565b6101b1610324366004610f9a565b6109ca565b6006546101ce90600160b01b900461ffff1681565b6101b161034c366004610fd1565b610aa6565b60065461020d906001600160a01b031681565b6006546101ce90600160a01b900461ffff1681565b6101b1610387366004610f68565b610b29565b6101b161039a366004610f81565b610be4565b6101b16103ad366004610f81565b610c9c565b60035461020d906001600160a01b031681565b6101ce6103d3366004610f81565b610d3e565b6101b16103e6366004610f81565b610da2565b6101b16103f9366004610f68565b610e15565b60015461020d906001600160a01b031681565b80801561042857506005546001600160a01b031633145b8061043d57506002546001600160a01b031633145b61047d5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b60448201526064015b60405180910390fd5b6001805482158015600160a01b0260ff60a01b19909216919091179091556104ca576040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752905f90a150565b6040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933905f90a150565b6002546001600160a01b0316331461051f5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff83161180159061053b575061271061ffff821611155b6105575760405162461bcd60e51b81526004016104749061101b565b604080516060810182526001815261ffff84811660208084018281528684168587018181526001600160a01b038b165f818152600986528990209751885494519251881663010000000264ffff00000019939098166101000262ffff00199115159190911662ffffff1990951694909417939093171694909417909455845191825281019190915290917f1e67314935d25345ac58eec0e687d562f25b8c60ccfc5410873772e4188ab5c091015b60405180910390a2505050565b6002546001600160a01b0316331461063c5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff821611156106625760405162461bcd60e51b81526004016104749061101b565b6006805461ffff60a01b1916600160a01b61ffff8416021790556040517f7c89a32178359844630b51111ebedda6f72e783c647ca3f35ed04a4733ed1ccc906106ac908390610f45565b60405180910390a150565b6001600160a01b0381165f9081526009602052604081205460ff16156106fd57506001600160a01b03165f908152600960205260409020546301000000900461ffff1690565b5050600654600160b01b900461ffff1690565b919050565b6001600160a01b0381165f9081526009602052604081205460ff161561075957506001600160a01b03165f90815260096020526040902054610100900461ffff1690565b5050600654600160a01b900461ffff1690565b6002546001600160a01b031633146107965760405162461bcd60e51b815260040161047490610ff7565b6003546040516001600160a01b039091169033907fd6176b30539d20b54c946c7ca9dca5950b2f1090fc2bfc55cc77a4025a8a78ae905f90a3600380546001600160a01b03191690555f600455565b6002546001600160a01b0316331461080f5760405162461bcd60e51b815260040161047490610ff7565b5f8054600160401b600160e01b031916600160401b6001600160a01b03841690810291909117825560405190917f40d8738b990e6ff9a2f56f11247e657a1e7070472260b020a4fc3ab1844787bd91a250565b6003546001600160a01b031633146108ad5760405162461bcd60e51b815260206004820152600e60248201526d27b7363c903732bb9037bbb732b960911b6044820152606401610474565b6004544210156108f55760405162461bcd60e51b8152602060048201526013602482015272111958591b1a5b99481b9bdd081c185cdcd959606a1b6044820152606401610474565b60025460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554905f90a360038054600280546001600160a01b03199081166001600160a01b038416179091551690555f600455565b6002546001600160a01b031633146109815760405162461bcd60e51b815260040161047490610ff7565b600580546001600160a01b0319166001600160a01b0383169081179091556040517fe6c09ffe4572dc9ceaa5ddde4ae41befa655d6fdfe8052077af0970f700e942e905f90a250565b6002546001600160a01b031633146109f45760405162461bcd60e51b815260040161047490610ff7565b61271061ffff83161115610a1a5760405162461bcd60e51b81526004016104749061101b565b604080518082018252821515815261ffff84811660208084019182526001600160a01b0388165f81815260089092529085902093518454925162ffffff1990931690151562ffff0019161761010092909316919091029190911790915590517f984bf420abc39253029aadc4fbb0905dc95b6039bca25648c17a0175f8b5847390610605908590610f45565b6002546001600160a01b03163314610ad05760405162461bcd60e51b815260040161047490610ff7565b610ada8142611055565b5f80546001600160401b0319166001600160401b03929092169190911790556040517f4ad74b3bfd3237da2040000e3e384a25c259b4ebc856e2f19a4c14ed020cb816906106ac908390610f54565b6002546001600160a01b03163314610b535760405162461bcd60e51b815260040161047490610ff7565b61271061ffff82161115610b9a5760405162461bcd60e51b815260206004820152600e60248201526d0a6d0c2e4ca40e8dede40d0d2ced60931b6044820152606401610474565b6006805461ffff60c01b1916600160c01b61ffff8416021790556040517fc992974f7b3d5534e7509e2d64385a6e566c8a141a229a952a205c35404152e2906106ac908390610f45565b6002546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161047490610ff7565b6001600160a01b038116610c535760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610474565b600780546001600160a01b0319166001600160a01b0383169081179091556040517fc80ba09da5b24740aa3a0f83781029dd98cb7f80ede3f21179ab8496edc9b5f6905f90a250565b6002546001600160a01b03163314610cc65760405162461bcd60e51b815260040161047490610ff7565b600380546001600160a01b0319166001600160a01b038316179055610cee6203f4804261107a565b6004556001600160a01b038116337f4c743940588d40b308f73f5275a4e608b25c5374f40e4839fb00467e238acfac610d2a6203f4804261107a565b60405190815260200160405180910390a350565b6001600160a01b038181165f90815260086020908152604080832081518083019092525460ff811615158252610100900461ffff169181019190915260015491929091163303610d9957805115610d99576020015192915050565b50600592915050565b6002546001600160a01b03163314610dcc5760405162461bcd60e51b815260040161047490610ff7565b600680546001600160a01b0319166001600160a01b0383169081179091556040517fbdf37c276f641820b141429d245add2552b4118c0866e5a78638e3de5ef18d9d905f90a250565b6002546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161047490610ff7565b61271061ffff82161115610e655760405162461bcd60e51b81526004016104749061101b565b6006805461ffff60b01b1916600160b01b61ffff8416021790556040517fecc8064941690044bb65ba7231fedda584279242d2b661b28363305a2642ad01906106ac908390610f45565b80358015158114610710575f80fd5b5f60208284031215610ece575f80fd5b610ed782610eaf565b9392505050565b80356001600160a01b0381168114610710575f80fd5b803561ffff81168114610710575f80fd5b5f805f60608486031215610f17575f80fd5b610f2084610ede565b9250610f2e60208501610ef4565b9150610f3c60408501610ef4565b90509250925092565b61ffff91909116815260200190565b6001600160401b0391909116815260200190565b5f60208284031215610f78575f80fd5b610ed782610ef4565b5f60208284031215610f91575f80fd5b610ed782610ede565b5f805f60608486031215610fac575f80fd5b610fb584610ede565b9250610fc360208501610ef4565b9150610f3c60408501610eaf565b5f60208284031215610fe1575f80fd5b81356001600160401b0381168114610ed7575f80fd5b6020808252600a908201526927b7363c9037bbb732b960b11b604082015260600190565b6020808252600c908201526b08ccaca40e8dede40d0d2ced60a31b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561107457611074611041565b92915050565b808201808211156110745761107461104156fea26469706673582212202f0b6add367bd7589430542c99ac0c02c40d301afb57362c6fc2b1cece77a57464736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d38050000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805000000000000000000000000d9069e3f3eeb45d4e05b765142ba28f3beb96f7a0000000000000000000000000f26bbb8962d73bc891327f14db5162d5279899f000000000000000000000000686ed0d7840dbd41cdacd37c26e68e13ed317d340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805
-----Decoded View---------------
Arg [0] : _owner (address): 0x6Ecc8C5b77A81FC6126eF75eaeCDd2cD494d3805
Arg [1] : _guardian (address): 0x6Ecc8C5b77A81FC6126eF75eaeCDd2cD494d3805
Arg [2] : _priceFeed (address): 0xD9069E3F3EEb45d4E05b765142ba28f3BeB96F7a
Arg [3] : _debtToken (address): 0x0F26bBb8962d73bC891327F14dB5162D5279899F
Arg [4] : _feeReceiver (address): 0x686Ed0d7840dbd41cdaCD37C26E68E13eD317D34
Arg [5] : _lspEntryFee (uint16): 0
Arg [6] : _lspExitFee (uint16): 0
Arg [7] : _lspBootstrapPeriod (uint64): 0
Arg [8] : _defaultInterestReceiver (address): 0x6Ecc8C5b77A81FC6126eF75eaeCDd2cD494d3805
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805
Arg [1] : 0000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805
Arg [2] : 000000000000000000000000d9069e3f3eeb45d4e05b765142ba28f3beb96f7a
Arg [3] : 0000000000000000000000000f26bbb8962d73bc891327f14db5162d5279899f
Arg [4] : 000000000000000000000000686ed0d7840dbd41cdacd37c26e68e13ed317d34
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000006ecc8c5b77a81fc6126ef75eaecdd2cd494d3805
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.