Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 12 internal transactions
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 18152497 | 31 mins ago | 0 ETH | |||||
| 18152497 | 31 mins ago | 0 ETH | |||||
| 18152497 | 31 mins ago | 0 ETH | |||||
| 18152497 | 31 mins ago | 0 ETH | |||||
| 18152182 | 36 mins ago | 0 ETH | |||||
| 17889132 | 3 days ago | 0 ETH | |||||
| 17889132 | 3 days ago | 0 ETH | |||||
| 17889132 | 3 days ago | 0 ETH | |||||
| 17889132 | 3 days ago | 0 ETH | |||||
| 17612444 | 6 days ago | 0 ETH | |||||
| 17612444 | 6 days ago | 0 ETH | |||||
| 16393989 | 20 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Core
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 {ICore} from "src/interfaces/core/ICore.sol";
import {IMetaCore} from "src/interfaces/core/IMetaCore.sol";
import {IFactory} from "src/interfaces/core/IFactory.sol";
import {IPositionManager} from "src/interfaces/core/IPositionManager.sol";
/**
@title Core
@notice Single source of truth for protocol-wide values and contract ownership.
Other CDP contracts inherit their ownership from this contract
using `PropOwnable`.
@dev Offers specific per protocol instance beacon variables such as startTime, CCR, dmBootstrapPeriod.
*/
contract Core is ICore {
// System-wide start time, rounded down the nearest epoch week.
// Other contracts that require access to this should inherit `SystemStart`.
uint256 public immutable startTime;
IMetaCore public immutable metaCore;
uint256 public CCR;
// During bootstrap period collateral redemptions are not allowed in LSP
mapping(address => uint64) internal _dmBootstrapPeriod;
// Beacon-looked at by inherited DelegatedOps
mapping(address peripheryContract => bool) public isPeriphery;
constructor(address _metaCore, uint256 _initialCCR) {
if (_metaCore == address(0)) {
revert("Core: 0 address");
}
metaCore = IMetaCore(_metaCore);
startTime = (block.timestamp / 1 weeks) * 1 weeks;
CCR = _initialCCR;
emit CCRSet(_initialCCR);
}
modifier onlyOwner() {
require(msg.sender == metaCore.owner(), "Only owner");
_;
}
function setPeripheryEnabled(address _periphery, bool _enabled) external onlyOwner {
isPeriphery[_periphery] = _enabled;
emit PeripheryEnabled(_periphery, _enabled);
}
/// @notice Bootstrap period is added to positionManager deployed timestamp
function setPMBootstrapPeriod(address positionManager, uint64 _bootstrapPeriod) external onlyOwner {
_dmBootstrapPeriod[positionManager] = _bootstrapPeriod;
emit PMBootstrapPeriodSet(positionManager, _bootstrapPeriod);
}
/**
* @notice Updates the Critical Collateral Ratio (CCR) to a new value
* @dev Only callable by the contract owner
* @dev Values lower than current CCR will be notified by public comms and called through a timelock
* @param newCCR The new Critical Collateral Ratio value to set
* @custom:emits CCRSet
*/
function setNewCCR(uint newCCR) external onlyOwner {
require(newCCR >= 1e18, "Invalid CCR");
CCR = newCCR;
emit CCRSet(newCCR);
}
/// @notice Enables each PositionManager to set their own redemptions bootstrap period
/// @dev Specific for PositionManager fetches
function dmBootstrapPeriod() external view returns (uint64) {
return _dmBootstrapPeriod[msg.sender];
}
function priceFeed() external view returns (address) {
return metaCore.priceFeed();
}
function owner() external view returns (address) {
return metaCore.owner();
}
function pendingOwner() external view returns (address) {
return metaCore.pendingOwner();
}
function guardian() external view returns (address) {
return metaCore.guardian();
}
function feeReceiver() external view returns (address) {
return metaCore.feeReceiver();
}
function paused() external view returns (bool) {
return metaCore.paused();
}
function lspBootstrapPeriod() external view returns (uint64) {
return metaCore.lspBootstrapPeriod();
}
function getLspEntryFee(address rebalancer) external view returns (uint16) {
return metaCore.getLspEntryFee(rebalancer);
}
function getLspExitFee(address rebalancer) external view returns (uint16) {
return metaCore.getLspExitFee(rebalancer);
}
function interestProtocolShare() external view returns (uint16) {
return metaCore.interestProtocolShare();
}
function defaultInterestReceiver() external view returns (address) {
return metaCore.defaultInterestReceiver();
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {IMetaCore} from "src/interfaces/core/IMetaCore.sol";
interface ICore {
// --- Public variables ---
function metaCore() external view returns (IMetaCore);
function startTime() external view returns (uint256);
function CCR() external view returns (uint256);
function dmBootstrapPeriod() external view returns (uint64);
function isPeriphery(address peripheryContract) external view returns (bool);
// --- External functions ---
function setPeripheryEnabled(address _periphery, bool _enabled) external;
function setPMBootstrapPeriod(address dm, uint64 _bootstrapPeriod) external;
function setNewCCR(uint256 _CCR) external;
function priceFeed() external view returns (address);
function owner() external view returns (address);
function pendingOwner() external view returns (address);
function guardian() external view returns (address);
function feeReceiver() external view returns (address);
function paused() external view returns (bool);
function lspBootstrapPeriod() external view returns (uint64);
function getLspEntryFee(address rebalancer) external view returns (uint16);
function getLspExitFee(address rebalancer) external view returns (uint16);
function interestProtocolShare() external view returns (uint16);
function defaultInterestReceiver() external view returns (address);
// --- Events ---
event CCRSet(uint256 initialCCR);
event PMBootstrapPeriodSet(address dm, uint64 bootstrapPeriod);
event PeripheryEnabled(address indexed periphery, bool enabled);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
interface IMetaCore {
// ---------------------------------
// Structures
// ---------------------------------
struct FeeInfo {
bool existsForDebtToken;
uint16 debtTokenFee;
}
struct RebalancerFeeInfo {
bool exists;
uint16 entryFee;
uint16 exitFee;
}
// ---------------------------------
// Public constants
// ---------------------------------
function OWNERSHIP_TRANSFER_DELAY() external view returns (uint256);
function DEFAULT_FLASH_LOAN_FEE() external view returns (uint16);
// ---------------------------------
// Public state variables
// ---------------------------------
function debtToken() external view returns (address);
function lspEntryFee() external view returns (uint16);
function lspExitFee() external view returns (uint16);
function interestProtocolShare() external view returns (uint16);
/// @dev Default interest receiver for all PositionManagers, unless overriden in the respective PM
function defaultInterestReceiver() external view returns (address);
function feeReceiver() external view returns (address);
function priceFeed() external view returns (address);
function owner() external view returns (address);
function pendingOwner() external view returns (address);
function ownershipTransferDeadline() external view returns (uint256);
function guardian() external view returns (address);
function paused() external view returns (bool);
function lspBootstrapPeriod() external view returns (uint64);
// ---------------------------------
// External functions
// ---------------------------------
function setFeeReceiver(address _feeReceiver) external;
function setPriceFeed(address _priceFeed) external;
function setGuardian(address _guardian) external;
/**
* @notice Global pause/unpause
* Pausing halts new deposits/borrowing across the protocol
*/
function setPaused(bool _paused) external;
/**
* @notice Extend or change the LSP bootstrap period,
* after which certain protocol mechanics change
*/
function setLspBootstrapPeriod(uint64 _bootstrapPeriod) external;
/**
* @notice Set a custom flash-loan fee for a given periphery contract
* @param _periphery Target contract that will get this custom fee
* @param _debtTokenFee Fee in basis points (bp)
* @param _existsForDebtToken Whether this custom fee is used when the caller = `debtToken`
*/
function setPeripheryFlashLoanFee(address _periphery, uint16 _debtTokenFee, bool _existsForDebtToken) external;
/**
* @notice Begin the ownership transfer process
* @param newOwner The address proposed to be the new owner
*/
function commitTransferOwnership(address newOwner) external;
/**
* @notice Finish the ownership transfer, after the mandatory delay
*/
function acceptTransferOwnership() external;
/**
* @notice Revoke a pending ownership transfer
*/
function revokeTransferOwnership() external;
/**
* @notice Look up a custom flash-loan fee for a specific periphery contract
* @param peripheryContract The contract that might have a custom fee
* @return The flash-loan fee in basis points
*/
function getPeripheryFlashLoanFee(address peripheryContract) external view returns (uint16);
/**
* @notice Set / override entry & exit fees for a special rebalancer contract
*/
function setRebalancerFee(address _rebalancer, uint16 _entryFee, uint16 _exitFee) external;
/**
* @notice Set the LSP entry fee globally
* @param _fee Fee in basis points
*/
function setEntryFee(uint16 _fee) external;
/**
* @notice Set the LSP exit fee globally
* @param _fee Fee in basis points
*/
function setExitFee(uint16 _fee) external;
/**
* @notice Set the interest protocol share globally to all PositionManagers
* @param _interestProtocolShare Share in basis points
*/
function setInterestProtocolShare(uint16 _interestProtocolShare) external;
/**
* @notice Look up the LSP entry fee for a rebalancer
* @param rebalancer Possibly has a special fee
* @return The entry fee in basis points
*/
function getLspEntryFee(address rebalancer) external view returns (uint16);
/**
* @notice Look up the LSP exit fee for a rebalancer
* @param rebalancer Possibly has a special fee
* @return The exit fee in basis points
*/
function getLspExitFee(address rebalancer) external view returns (uint16);
// ---------------------------------
// Events
// ---------------------------------
event NewOwnerCommitted(address indexed owner, address indexed pendingOwner, uint256 deadline);
event NewOwnerAccepted(address indexed oldOwner, address indexed newOwner);
event NewOwnerRevoked(address indexed owner, address indexed revokedOwner);
event FeeReceiverSet(address indexed feeReceiver);
event PriceFeedSet(address indexed priceFeed);
event GuardianSet(address indexed guardian);
event PeripheryFlashLoanFee(address indexed periphery, uint16 debtTokenFee);
event LSPBootstrapPeriodSet(uint64 bootstrapPeriod);
event RebalancerFees(address indexed rebalancer, uint16 entryFee, uint16 exitFee);
event EntryFeeSet(uint16 fee);
event ExitFeeSet(uint16 fee);
event InterestProtocolShareSet(uint16 interestProtocolShare);
event DefaultInterestReceiverSet(address indexed defaultInterestReceiver);
event Paused();
event Unpaused();
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
interface IFactory {
// commented values are suggested default parameters
struct DeploymentParams {
uint256 minuteDecayFactor; // 999037758833783000 (half life of 12 hours)
uint256 redemptionFeeFloor; // 1e18 / 1000 * 5 (0.5%)
uint256 maxRedemptionFee; // 1e18 (100%)
uint256 borrowingFeeFloor; // 1e18 / 1000 * 5 (0.5%)
uint256 maxBorrowingFee; // 1e18 / 100 * 5 (5%)
uint256 interestRateInBps; // 100 (1%)
uint256 maxDebt;
uint256 MCR; // 12 * 1e17 (120%)
address collVaultRouter; // set to address(0) if PositionManager coll is not CollateralVault
}
event NewDeployment(address collateral, address priceFeed, address positionManager, address sortedPositions);
function deployNewInstance(
address collateral,
address priceFeed,
address customPositionManagerImpl,
address customSortedPositionsImpl,
DeploymentParams calldata params,
uint64 unlockRatePerSecond,
bool forceThroughLspBalanceCheck
) external;
function setImplementations(address _positionManagerImpl, address _sortedPositionsImpl) external;
function CORE() external view returns (address);
function borrowerOperations() external view returns (address);
function debtToken() external view returns (address);
function guardian() external view returns (address);
function liquidationManager() external view returns (address);
function owner() external view returns (address);
function sortedPositionsImpl() external view returns (address);
function liquidStabilityPool() external view returns (address);
function positionManagerCount() external view returns (uint256);
function positionManagerImpl() external view returns (address);
function positionManagers(uint256) external view returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC3156FlashBorrower} from "@openzeppelin/contracts/interfaces/IERC3156FlashBorrower.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IFactory} from "./IFactory.sol";
interface IPositionManager {
event BaseRateUpdated(uint256 _baseRate);
event CollateralSent(address _to, uint256 _amount);
event LTermsUpdated(uint256 _L_collateral, uint256 _L_debt);
event LastFeeOpTimeUpdated(uint256 _lastFeeOpTime);
event Redemption(
address indexed _redeemer,
uint256 _attemptedDebtAmount,
uint256 _actualDebtAmount,
uint256 _collateralSent,
uint256 _collateralFee
);
event SystemSnapshotsUpdated(uint256 _totalStakesSnapshot, uint256 _totalCollateralSnapshot);
event TotalStakesUpdated(uint256 _newTotalStakes);
event PositionIndexUpdated(address _borrower, uint256 _newIndex);
event PositionSnapshotsUpdated(uint256 _L_collateral, uint256 _L_debt);
event PositionUpdated(address indexed _borrower, uint256 _debt, uint256 _coll, uint256 _stake, uint8 _operation);
function addCollateralSurplus(address borrower, uint256 collSurplus) external;
function applyPendingRewards(address _borrower) external returns (uint256 coll, uint256 debt);
function claimCollateral(address borrower, address _receiver) external;
function closePosition(address _borrower, address _receiver, uint256 collAmount, uint256 debtAmount) external;
function closePositionByLiquidation(address _borrower) external;
function setCollVaultRouter(address _collVaultRouter) external;
function collectInterests() external;
function decayBaseRateAndGetBorrowingFee(uint256 _debt) external returns (uint256);
function decreaseDebtAndSendCollateral(address account, uint256 debt, uint256 coll) external;
function fetchPrice() external view returns (uint256);
function finalizeLiquidation(
address _liquidator,
uint256 _debt,
uint256 _coll,
uint256 _collSurplus,
uint256 _debtGasComp,
uint256 _collGasComp
) external;
function getEntireSystemBalances() external view returns (uint256, uint256, uint256);
function movePendingPositionRewardsToActiveBalances(uint256 _debt, uint256 _collateral) external;
function openPosition(
address _borrower,
uint256 _collateralAmount,
uint256 _compositeDebt,
uint256 NICR,
address _upperHint,
address _lowerHint
) external returns (uint256 stake, uint256 arrayIndex);
function redeemCollateral(
uint256 _debtAmount,
address _firstRedemptionHint,
address _upperPartialRedemptionHint,
address _lowerPartialRedemptionHint,
uint256 _partialRedemptionHintNICR,
uint256 _maxIterations,
uint256 _maxFeePercentage
) external;
function setAddresses(address _priceFeedAddress, address _sortedPositionsAddress, address _collateralToken) external;
function setParameters(
IFactory.DeploymentParams calldata _params
) external;
function setPaused(bool _paused) external;
function setPriceFeed(address _priceFeedAddress) external;
function startSunset() external;
function updateBalances() external;
function updatePositionFromAdjustment(
bool _isDebtIncrease,
uint256 _debtChange,
uint256 _netDebtChange,
bool _isCollIncrease,
uint256 _collChange,
address _upperHint,
address _lowerHint,
address _borrower,
address _receiver
) external returns (uint256, uint256, uint256);
function DEBT_GAS_COMPENSATION() external view returns (uint256);
function DECIMAL_PRECISION() external view returns (uint256);
function L_collateral() external view returns (uint256);
function L_debt() external view returns (uint256);
function MCR() external view returns (uint256);
function PERCENT_DIVISOR() external view returns (uint256);
function CORE() external view returns (address);
function SUNSETTING_INTEREST_RATE() external view returns (uint256);
function Positions(
address
)
external
view
returns (
uint256 debt,
uint256 coll,
uint256 stake,
uint8 status,
uint128 arrayIndex,
uint256 activeInterestIndex
);
function activeInterestIndex() external view returns (uint256);
function baseRate() external view returns (uint256);
function borrowerOperations() external view returns (address);
function borrowingFeeFloor() external view returns (uint256);
function collateralToken() external view returns (address);
function debtToken() external view returns (address);
function collVaultRouter() external view returns (address);
function defaultedCollateral() external view returns (uint256);
function defaultedDebt() external view returns (uint256);
function getBorrowingFee(uint256 _debt) external view returns (uint256);
function getBorrowingFeeWithDecay(uint256 _debt) external view returns (uint256);
function getBorrowingRate() external view returns (uint256);
function getBorrowingRateWithDecay() external view returns (uint256);
function getCurrentICR(address _borrower, uint256 _price) external view returns (uint256);
function getEntireDebtAndColl(
address _borrower
) external view returns (uint256 debt, uint256 coll, uint256 pendingDebtReward, uint256 pendingCollateralReward);
function getEntireSystemColl() external view returns (uint256);
function getEntireSystemDebt() external view returns (uint256);
function getNominalICR(address _borrower) external view returns (uint256);
function getPendingCollAndDebtRewards(address _borrower) external view returns (uint256, uint256);
function getRedemptionFeeWithDecay(uint256 _collateralDrawn) external view returns (uint256);
function getRedemptionRate() external view returns (uint256);
function getRedemptionRateWithDecay() external view returns (uint256);
function getTotalActiveCollateral() external view returns (uint256);
function getTotalActiveDebt() external view returns (uint256);
function getPositionCollAndDebt(address _borrower) external view returns (uint256 coll, uint256 debt);
function getPositionFromPositionOwnersArray(uint256 _index) external view returns (address);
function getPositionOwnersCount() external view returns (uint256);
function getPositionStake(address _borrower) external view returns (uint256);
function getPositionStatus(address _borrower) external view returns (uint256);
function guardian() external view returns (address);
function hasPendingRewards(address _borrower) external view returns (bool);
function interestPayable() external view returns (uint256);
function interestRate() external view returns (uint256);
function lastActiveIndexUpdate() external view returns (uint256);
function lastCollateralError_Redistribution() external view returns (uint256);
function lastDebtError_Redistribution() external view returns (uint256);
function lastFeeOperationTime() external view returns (uint256);
function liquidationManager() external view returns (address);
function maxBorrowingFee() external view returns (uint256);
function maxRedemptionFee() external view returns (uint256);
function maxSystemDebt() external view returns (uint256);
function minuteDecayFactor() external view returns (uint256);
function owner() external view returns (address);
function paused() external view returns (bool);
function priceFeed() external view returns (address);
function redemptionFeeFloor() external view returns (uint256);
function rewardSnapshots(address) external view returns (uint256 collateral, uint256 debt);
function sortedPositions() external view returns (address);
function sunsetting() external view returns (bool);
function surplusBalances(address) external view returns (uint256);
function systemDeploymentTime() external view returns (uint256);
function totalCollateralSnapshot() external view returns (uint256);
function totalStakes() external view returns (uint256);
function totalStakesSnapshot() external view returns (uint256);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (interfaces/IERC3156FlashBorrower.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC3156 FlashBorrower, as defined in
* https://eips.ethereum.org/EIPS/eip-3156[ERC-3156].
*
* _Available since v4.1._
*/
interface IERC3156FlashBorrower {
/**
* @dev Receive a flash loan.
* @param initiator The initiator of the loan.
* @param token The loan currency.
* @param amount The amount of tokens lent.
* @param fee The additional amount of tokens to repay.
* @param data Arbitrary data structure, intended to contain user-defined parameters.
* @return The keccak256 hash of "IERC3156FlashBorrower.onFlashLoan"
*/
function onFlashLoan(
address initiator,
address token,
uint256 amount,
uint256 fee,
bytes calldata data
) external returns (bytes32);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@openzeppelin-upgradeable/contracts/=lib/openzeppelin-contracts-upgradeable/contracts/",
"solady/=lib/solady/src/",
"@solmate/=lib/solmate/src/",
"@chimera/=lib/chimera/src/",
"forge-std/=lib/forge-std/src/",
"@uniswap/v3-core/=lib/v3-core/",
"@uniswap/v3-periphery/=lib/v3-periphery/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"chimera/=lib/chimera/src/",
"ds-test/=lib/solmate/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"rewards/=lib/rewards/",
"solmate/=lib/solmate/src/",
"uniswap/=lib/uniswap/",
"v3-core/=lib/v3-core/contracts/",
"v3-periphery/=lib/v3-periphery/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 1
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_metaCore","type":"address"},{"internalType":"uint256","name":"_initialCCR","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"initialCCR","type":"uint256"}],"name":"CCRSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dm","type":"address"},{"indexed":false,"internalType":"uint64","name":"bootstrapPeriod","type":"uint64"}],"name":"PMBootstrapPeriodSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"periphery","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PeripheryEnabled","type":"event"},{"inputs":[],"name":"CCR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultInterestReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dmBootstrapPeriod","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"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":[],"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":[{"internalType":"address","name":"peripheryContract","type":"address"}],"name":"isPeriphery","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lspBootstrapPeriod","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metaCore","outputs":[{"internalType":"contract IMetaCore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"newCCR","type":"uint256"}],"name":"setNewCCR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"positionManager","type":"address"},{"internalType":"uint64","name":"_bootstrapPeriod","type":"uint64"}],"name":"setPMBootstrapPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_periphery","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setPeripheryEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561000f575f80fd5b50604051610e45380380610e4583398101604081905261002e916100e2565b6001600160a01b03821661007a5760405162461bcd60e51b815260206004820152600f60248201526e436f72653a2030206164647265737360881b604482015260640160405180910390fd5b6001600160a01b03821660a05261009462093a8042610119565b6100a19062093a80610138565b6080525f8190556040518181527fa82c90d56c0253dd9a7cc57e84fe059535f2b395260ce086d3b429ed34bec2829060200160405180910390a15050610161565b5f80604083850312156100f3575f80fd5b82516001600160a01b0381168114610109575f80fd5b6020939093015192949293505050565b5f8261013357634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761015b57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a051610c616101e45f395f81816101470152818161028e015281816103c80152818161044e015281816104e501528181610562015281816105f901528181610631015281816106b20152818161070f0152818161076c015281816107c8015281816108e80152818161094501526109a101525f6101ed0152610c615ff3fe608060405234801561000f575f80fd5b50600436106100ef575f3560e01c8063415ea556146100f357806341ba27eb14610108578063452a93201461012d578063474566c6146101425780635733d58f14610169578063591ac1401461017f5780635c975abb146101a55780636034d9f5146101bd5780636d52dffd146101d057806371f8424f146101d8578063741bef1a146101e057806378e97925146101e85780638da5cb5b1461020f5780638fcfa77514610217578063b0b4877114610239578063b3f006741461024c578063c0c39a6f14610254578063e30c397814610271578063fb4e15b214610279575b5f80fd5b610106610101366004610aad565b61028c565b005b6101106103c5565b6040516001600160401b0390911681526020015b60405180910390f35b61013561044b565b6040516101249190610ac4565b6101357f000000000000000000000000000000000000000000000000000000000000000081565b6101715f5481565b604051908152602001610124565b61019261018d366004610aef565b6104cc565b60405161ffff9091168152602001610124565b6101ad61055f565b6040519015158152602001610124565b6101926101cb366004610aef565b6105e0565b61019261062e565b6101356106af565b61013561070c565b6101717f000000000000000000000000000000000000000000000000000000000000000081565b610135610769565b6101ad610225366004610aef565b60026020525f908152604090205460ff1681565b610106610247366004610b25565b6107c6565b6101356108e5565b335f908152600160205260409020546001600160401b0316610110565b610135610942565b610106610287366004610b69565b61099f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030c9190610b95565b6001600160a01b0316336001600160a01b0316146103455760405162461bcd60e51b815260040161033c90610bb0565b60405180910390fd5b670de0b6b3a764000081101561038b5760405162461bcd60e51b815260206004820152600b60248201526a24b73b30b634b21021a1a960a91b604482015260640161033c565b5f8190556040518181527fa82c90d56c0253dd9a7cc57e84fe059535f2b395260ce086d3b429ed34bec2829060200160405180910390a150565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166341ba27eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610422573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610bd4565b905090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610b95565b6040516301646b0560e61b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063591ac1409061051a908590600401610ac4565b602060405180830381865afa158015610535573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105599190610bef565b92915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610c10565b604051636034d9f560e01b81525f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636034d9f59061051a908590600401610ac4565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d52dffd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610bef565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371f8424f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663741bef1a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108469190610b95565b6001600160a01b0316336001600160a01b0316146108765760405162461bcd60e51b815260040161033c90610bb0565b6001600160a01b0382165f8181526001602090815260409182902080546001600160401b0319166001600160401b0386169081179091558251938452908301527ffa45aeff9a5e0cc8d33c6b6e58acb4b6a48704cd0af4b41244a66d14954066f8910160405180910390a15050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e30c39786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1f9190610b95565b6001600160a01b0316336001600160a01b031614610a4f5760405162461bcd60e51b815260040161033c90610bb0565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fb778c870fb3d43ebd9367620749ddc2c9da0c656402a874beccd064416f8d842910160405180910390a25050565b5f60208284031215610abd575f80fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610aec575f80fd5b50565b5f60208284031215610aff575f80fd5b8135610b0a81610ad8565b9392505050565b6001600160401b0381168114610aec575f80fd5b5f8060408385031215610b36575f80fd5b8235610b4181610ad8565b91506020830135610b5181610b11565b809150509250929050565b8015158114610aec575f80fd5b5f8060408385031215610b7a575f80fd5b8235610b8581610ad8565b91506020830135610b5181610b5c565b5f60208284031215610ba5575f80fd5b8151610b0a81610ad8565b6020808252600a908201526927b7363c9037bbb732b960b11b604082015260600190565b5f60208284031215610be4575f80fd5b8151610b0a81610b11565b5f60208284031215610bff575f80fd5b815161ffff81168114610b0a575f80fd5b5f60208284031215610c20575f80fd5b8151610b0a81610b5c56fea26469706673582212203a80556dba2712a6b6698f1dd94fbb1f733ed4e566243a534830b4dd8e0bc91764736f6c634300081a00330000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce80000000000000000000000000000000000000000000000000e92596fd6290000
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100ef575f3560e01c8063415ea556146100f357806341ba27eb14610108578063452a93201461012d578063474566c6146101425780635733d58f14610169578063591ac1401461017f5780635c975abb146101a55780636034d9f5146101bd5780636d52dffd146101d057806371f8424f146101d8578063741bef1a146101e057806378e97925146101e85780638da5cb5b1461020f5780638fcfa77514610217578063b0b4877114610239578063b3f006741461024c578063c0c39a6f14610254578063e30c397814610271578063fb4e15b214610279575b5f80fd5b610106610101366004610aad565b61028c565b005b6101106103c5565b6040516001600160401b0390911681526020015b60405180910390f35b61013561044b565b6040516101249190610ac4565b6101357f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce881565b6101715f5481565b604051908152602001610124565b61019261018d366004610aef565b6104cc565b60405161ffff9091168152602001610124565b6101ad61055f565b6040519015158152602001610124565b6101926101cb366004610aef565b6105e0565b61019261062e565b6101356106af565b61013561070c565b6101717f0000000000000000000000000000000000000000000000000000000069151f8081565b610135610769565b6101ad610225366004610aef565b60026020525f908152604090205460ff1681565b610106610247366004610b25565b6107c6565b6101356108e5565b335f908152600160205260409020546001600160401b0316610110565b610135610942565b610106610287366004610b69565b61099f565b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030c9190610b95565b6001600160a01b0316336001600160a01b0316146103455760405162461bcd60e51b815260040161033c90610bb0565b60405180910390fd5b670de0b6b3a764000081101561038b5760405162461bcd60e51b815260206004820152600b60248201526a24b73b30b634b21021a1a960a91b604482015260640161033c565b5f8190556040518181527fa82c90d56c0253dd9a7cc57e84fe059535f2b395260ce086d3b429ed34bec2829060200160405180910390a150565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b03166341ba27eb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610422573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610bd4565b905090565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610b95565b6040516301646b0560e61b81525f906001600160a01b037f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce8169063591ac1409061051a908590600401610ac4565b602060405180830381865afa158015610535573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105599190610bef565b92915050565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610c10565b604051636034d9f560e01b81525f906001600160a01b037f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce81690636034d9f59061051a908590600401610ac4565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316636d52dffd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561068b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104469190610bef565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b03166371f8424f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b031663741bef1a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610822573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108469190610b95565b6001600160a01b0316336001600160a01b0316146108765760405162461bcd60e51b815260040161033c90610bb0565b6001600160a01b0382165f8181526001602090815260409182902080546001600160401b0319166001600160401b0386169081179091558251938452908301527ffa45aeff9a5e0cc8d33c6b6e58acb4b6a48704cd0af4b41244a66d14954066f8910160405180910390a15050565b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b031663b3f006746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b5f7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b031663e30c39786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a8573d5f803e3d5ffd5b7f0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1f9190610b95565b6001600160a01b0316336001600160a01b031614610a4f5760405162461bcd60e51b815260040161033c90610bb0565b6001600160a01b0382165f81815260026020908152604091829020805460ff191685151590811790915591519182527fb778c870fb3d43ebd9367620749ddc2c9da0c656402a874beccd064416f8d842910160405180910390a25050565b5f60208284031215610abd575f80fd5b5035919050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114610aec575f80fd5b50565b5f60208284031215610aff575f80fd5b8135610b0a81610ad8565b9392505050565b6001600160401b0381168114610aec575f80fd5b5f8060408385031215610b36575f80fd5b8235610b4181610ad8565b91506020830135610b5181610b11565b809150509250929050565b8015158114610aec575f80fd5b5f8060408385031215610b7a575f80fd5b8235610b8581610ad8565b91506020830135610b5181610b5c565b5f60208284031215610ba5575f80fd5b8151610b0a81610ad8565b6020808252600a908201526927b7363c9037bbb732b960b11b604082015260600190565b5f60208284031215610be4575f80fd5b8151610b0a81610b11565b5f60208284031215610bff575f80fd5b815161ffff81168114610b0a575f80fd5b5f60208284031215610c20575f80fd5b8151610b0a81610b5c56fea26469706673582212203a80556dba2712a6b6698f1dd94fbb1f733ed4e566243a534830b4dd8e0bc91764736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce80000000000000000000000000000000000000000000000000e92596fd6290000
-----Decoded View---------------
Arg [0] : _metaCore (address): 0x8700AF942BE2A6E5566306D0eE7Bcc5a3A6E0ce8
Arg [1] : _initialCCR (uint256): 1050000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008700af942be2a6e5566306d0ee7bcc5a3a6e0ce8
Arg [1] : 0000000000000000000000000000000000000000000000000e92596fd6290000
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.