Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 4 from a total of 4 transactions
Latest 22 internal transactions
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21620613 | 29 days ago | Contract Creation | 0 ETH | |||
21620613 | 29 days ago | Contract Creation | 0 ETH | |||
21554349 | 38 days ago | Contract Creation | 0 ETH | |||
21554349 | 38 days ago | Contract Creation | 0 ETH | |||
20119486 | 238 days ago | Contract Creation | 0 ETH | |||
20119486 | 238 days ago | Contract Creation | 0 ETH | |||
19497383 | 325 days ago | Contract Creation | 0 ETH | |||
19497383 | 325 days ago | Contract Creation | 0 ETH | |||
19497383 | 325 days ago | Contract Creation | 0 ETH | |||
19497383 | 325 days ago | Contract Creation | 0 ETH | |||
19128219 | 377 days ago | Contract Creation | 0 ETH | |||
19128219 | 377 days ago | Contract Creation | 0 ETH | |||
19128219 | 377 days ago | Contract Creation | 0 ETH | |||
19128219 | 377 days ago | Contract Creation | 0 ETH | |||
18030026 | 531 days ago | Contract Creation | 0 ETH | |||
18030026 | 531 days ago | Contract Creation | 0 ETH | |||
18030022 | 531 days ago | Contract Creation | 0 ETH | |||
18030022 | 531 days ago | Contract Creation | 0 ETH | |||
18030013 | 531 days ago | Contract Creation | 0 ETH | |||
18030013 | 531 days ago | Contract Creation | 0 ETH | |||
18029968 | 531 days ago | Contract Creation | 0 ETH | |||
18029968 | 531 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Factory
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "Clones.sol"; import "PrismaOwnable.sol"; import "ITroveManager.sol"; import "IBorrowerOperations.sol"; import "IDebtToken.sol"; import "ISortedTroves.sol"; import "IStabilityPool.sol"; import "ILiquidationManager.sol"; /** @title Prisma Trove Factory @notice Deploys cloned pairs of `TroveManager` and `SortedTroves` in order to add new collateral types within the system. */ contract Factory is PrismaOwnable { using Clones for address; // fixed single-deployment contracts IDebtToken public immutable debtToken; IStabilityPool public immutable stabilityPool; ILiquidationManager public immutable liquidationManager; IBorrowerOperations public immutable borrowerOperations; // implementation contracts, redeployed each time via clone proxy address public sortedTrovesImpl; address public troveManagerImpl; address[] public troveManagers; // 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%) } event NewDeployment(address collateral, address priceFeed, address troveManager, address sortedTroves); constructor( address _prismaCore, IDebtToken _debtToken, IStabilityPool _stabilityPool, IBorrowerOperations _borrowerOperations, address _sortedTroves, address _troveManager, ILiquidationManager _liquidationManager ) PrismaOwnable(_prismaCore) { debtToken = _debtToken; stabilityPool = _stabilityPool; borrowerOperations = _borrowerOperations; sortedTrovesImpl = _sortedTroves; troveManagerImpl = _troveManager; liquidationManager = _liquidationManager; } function troveManagerCount() external view returns (uint256) { return troveManagers.length; } /** @notice Deploy new instances of `TroveManager` and `SortedTroves`, adding a new collateral type to the system. @dev * When using the default `PriceFeed`, ensure it is configured correctly prior to calling this function. * After calling this function, the owner should also call `Vault.registerReceiver` to enable PRISMA emissions on the newly deployed `TroveManager` @param collateral Collateral token to use in new deployment @param priceFeed Custom `PriceFeed` deployment. Leave as `address(0)` to use the default. @param customTroveManagerImpl Custom `TroveManager` implementation to clone from. Leave as `address(0)` to use the default. @param customSortedTrovesImpl Custom `SortedTroves` implementation to clone from. Leave as `address(0)` to use the default. @param params Struct of initial parameters to be set on the new trove manager */ function deployNewInstance( address collateral, address priceFeed, address customTroveManagerImpl, address customSortedTrovesImpl, DeploymentParams memory params ) external onlyOwner { address implementation = customTroveManagerImpl == address(0) ? troveManagerImpl : customTroveManagerImpl; address troveManager = implementation.cloneDeterministic(bytes32(bytes20(collateral))); troveManagers.push(troveManager); implementation = customSortedTrovesImpl == address(0) ? sortedTrovesImpl : customSortedTrovesImpl; address sortedTroves = implementation.cloneDeterministic(bytes32(bytes20(troveManager))); ITroveManager(troveManager).setAddresses(priceFeed, sortedTroves, collateral); ISortedTroves(sortedTroves).setAddresses(troveManager); // verify that the oracle is correctly working ITroveManager(troveManager).fetchPrice(); stabilityPool.enableCollateral(collateral); liquidationManager.enableTroveManager(troveManager); debtToken.enableTroveManager(troveManager); borrowerOperations.configureCollateral(troveManager, collateral); ITroveManager(troveManager).setParameters( params.minuteDecayFactor, params.redemptionFeeFloor, params.maxRedemptionFee, params.borrowingFeeFloor, params.maxBorrowingFee, params.interestRateInBps, params.maxDebt, params.MCR ); emit NewDeployment(collateral, priceFeed, troveManager, sortedTroves); } function setImplementations(address _troveManagerImpl, address _sortedTrovesImpl) external onlyOwner { troveManagerImpl = _troveManagerImpl; sortedTrovesImpl = _sortedTrovesImpl; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (proxy/Clones.sol) pragma solidity ^0.8.0; /** * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for * deploying minimal proxy contracts, also known as "clones". * * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies * > a minimal bytecode implementation that delegates all calls to a known, fixed address. * * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2` * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the * deterministic method. * * _Available since v3.4._ */ library Clones { /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create opcode, which should never revert. */ function clone(address implementation) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create(0, 0x09, 0x37) } require(instance != address(0), "ERC1167: create failed"); } /** * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`. * * This function uses the create2 opcode and a `salt` to deterministically deploy * the clone. Using the same `implementation` and `salt` multiple time will revert, since * the clones cannot be deployed twice at the same address. */ function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { /// @solidity memory-safe-assembly assembly { // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes // of the `implementation` address with the bytecode before the address. mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000)) // Packs the remaining 17 bytes of `implementation` with the bytecode after the address. mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3)) instance := create2(0, 0x09, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { /// @solidity memory-safe-assembly assembly { let ptr := mload(0x40) mstore(add(ptr, 0x38), deployer) mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff) mstore(add(ptr, 0x14), implementation) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73) mstore(add(ptr, 0x58), salt) mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37)) predicted := keccak256(add(ptr, 0x43), 0x55) } } /** * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}. */ function predictDeterministicAddress(address implementation, bytes32 salt) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "IPrismaCore.sol"; /** @title Prisma Ownable @notice Contracts inheriting `PrismaOwnable` have the same owner as `PrismaCore`. The ownership cannot be independently modified or renounced. */ contract PrismaOwnable { IPrismaCore public immutable PRISMA_CORE; constructor(address _prismaCore) { PRISMA_CORE = IPrismaCore(_prismaCore); } modifier onlyOwner() { require(msg.sender == PRISMA_CORE.owner(), "Only owner"); _; } function owner() public view returns (address) { return PRISMA_CORE.owner(); } function guardian() public view returns (address) { return PRISMA_CORE.guardian(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IPrismaCore { event FeeReceiverSet(address feeReceiver); event GuardianSet(address guardian); event NewOwnerAccepted(address oldOwner, address owner); event NewOwnerCommitted(address owner, address pendingOwner, uint256 deadline); event NewOwnerRevoked(address owner, address revokedOwner); event Paused(); event PriceFeedSet(address priceFeed); event Unpaused(); function acceptTransferOwnership() external; function commitTransferOwnership(address newOwner) external; function revokeTransferOwnership() external; function setFeeReceiver(address _feeReceiver) external; function setGuardian(address _guardian) external; function setPaused(bool _paused) external; function setPriceFeed(address _priceFeed) external; function OWNERSHIP_TRANSFER_DELAY() external view returns (uint256); function feeReceiver() external view returns (address); function guardian() external view returns (address); function owner() external view returns (address); function ownershipTransferDeadline() external view returns (uint256); function paused() external view returns (bool); function pendingOwner() external view returns (address); function priceFeed() external view returns (address); function startTime() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ITroveManager { event BaseRateUpdated(uint256 _baseRate); event CollateralSent(address _to, uint256 _amount); event LTermsUpdated(uint256 _L_collateral, uint256 _L_debt); event LastFeeOpTimeUpdated(uint256 _lastFeeOpTime); event Redemption( uint256 _attemptedDebtAmount, uint256 _actualDebtAmount, uint256 _collateralSent, uint256 _collateralFee ); event RewardClaimed(address indexed account, address indexed recipient, uint256 claimed); event SystemSnapshotsUpdated(uint256 _totalStakesSnapshot, uint256 _totalCollateralSnapshot); event TotalStakesUpdated(uint256 _newTotalStakes); event TroveIndexUpdated(address _borrower, uint256 _newIndex); event TroveSnapshotsUpdated(uint256 _L_collateral, uint256 _L_debt); event TroveUpdated(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 _receiver) external; function claimReward(address receiver) external returns (uint256); function closeTrove(address _borrower, address _receiver, uint256 collAmount, uint256 debtAmount) external; function closeTroveByLiquidation(address _borrower) external; function collectInterests() external; function decayBaseRateAndGetBorrowingFee(uint256 _debt) external returns (uint256); function decreaseDebtAndSendCollateral(address account, uint256 debt, uint256 coll) external; function fetchPrice() external returns (uint256); function finalizeLiquidation( address _liquidator, uint256 _debt, uint256 _coll, uint256 _collSurplus, uint256 _debtGasComp, uint256 _collGasComp ) external; function getEntireSystemBalances() external returns (uint256, uint256, uint256); function movePendingTroveRewardsToActiveBalances(uint256 _debt, uint256 _collateral) external; function notifyRegisteredId(uint256[] calldata _assignedIds) external returns (bool); function openTrove( address _borrower, uint256 _collateralAmount, uint256 _compositeDebt, uint256 NICR, address _upperHint, address _lowerHint, bool _isRecoveryMode ) 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 _sortedTrovesAddress, address _collateralToken) external; function setParameters( uint256 _minuteDecayFactor, uint256 _redemptionFeeFloor, uint256 _maxRedemptionFee, uint256 _borrowingFeeFloor, uint256 _maxBorrowingFee, uint256 _interestRateInBPS, uint256 _maxSystemDebt, uint256 _MCR ) external; function setPaused(bool _paused) external; function setPriceFeed(address _priceFeedAddress) external; function startSunset() external; function updateBalances() external; function updateTroveFromAdjustment( bool _isRecoveryMode, bool _isDebtIncrease, uint256 _debtChange, uint256 _netDebtChange, bool _isCollIncrease, uint256 _collChange, address _upperHint, address _lowerHint, address _borrower, address _receiver ) external returns (uint256, uint256, uint256); function vaultClaimReward(address claimant, address) external returns (uint256); function BOOTSTRAP_PERIOD() external view returns (uint256); function CCR() external view returns (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 MAX_INTEREST_RATE_IN_BPS() external view returns (uint256); function MCR() external view returns (uint256); function PERCENT_DIVISOR() external view returns (uint256); function PRISMA_CORE() external view returns (address); function SUNSETTING_INTEREST_RATE() external view returns (uint256); function Troves( address ) external view returns ( uint256 debt, uint256 coll, uint256 stake, uint8 status, uint128 arrayIndex, uint256 activeInterestIndex ); function accountLatestMint(address) external view returns (uint32 amount, uint32 week, uint32 day); function activeInterestIndex() external view returns (uint256); function baseRate() external view returns (uint256); function borrowerOperationsAddress() external view returns (address); function borrowingFeeFloor() external view returns (uint256); function claimableReward(address account) external view returns (uint256); function collateralToken() external view returns (address); function dailyMintReward(uint256) external view returns (uint256); function debtToken() external view returns (address); function defaultedCollateral() external view returns (uint256); function defaultedDebt() external view returns (uint256); function emissionId() external view returns (uint16 debt, uint16 minting); 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 getTotalMints(uint256 week) external view returns (uint32[7] memory); function getTroveCollAndDebt(address _borrower) external view returns (uint256 coll, uint256 debt); function getTroveFromTroveOwnersArray(uint256 _index) external view returns (address); function getTroveOwnersCount() external view returns (uint256); function getTroveStake(address _borrower) external view returns (uint256); function getTroveStatus(address _borrower) external view returns (uint256); function getWeek() external view returns (uint256 week); function getWeekAndDay() external view returns (uint256, 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 lastUpdate() external view returns (uint32); 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 periodFinish() external view returns (uint32); function priceFeed() external view returns (address); function redemptionFeeFloor() external view returns (uint256); function rewardIntegral() external view returns (uint256); function rewardIntegralFor(address) external view returns (uint256); function rewardRate() external view returns (uint128); function rewardSnapshots(address) external view returns (uint256 collateral, uint256 debt); function sortedTroves() 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); function vault() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBorrowerOperations { struct Balances { uint256[] collaterals; uint256[] debts; uint256[] prices; } event BorrowingFeePaid(address indexed borrower, uint256 amount); event CollateralConfigured(address troveManager, address collateralToken); event TroveCreated(address indexed _borrower, uint256 arrayIndex); event TroveManagerRemoved(address troveManager); event TroveUpdated(address indexed _borrower, uint256 _debt, uint256 _coll, uint256 stake, uint8 operation); function addColl( address troveManager, address account, uint256 _collateralAmount, address _upperHint, address _lowerHint ) external; function adjustTrove( address troveManager, address account, uint256 _maxFeePercentage, uint256 _collDeposit, uint256 _collWithdrawal, uint256 _debtChange, bool _isDebtIncrease, address _upperHint, address _lowerHint ) external; function closeTrove(address troveManager, address account) external; function configureCollateral(address troveManager, address collateralToken) external; function fetchBalances() external returns (Balances memory balances); function getGlobalSystemBalances() external returns (uint256 totalPricedCollateral, uint256 totalDebt); function getTCR() external returns (uint256 globalTotalCollateralRatio); function openTrove( address troveManager, address account, uint256 _maxFeePercentage, uint256 _collateralAmount, uint256 _debtAmount, address _upperHint, address _lowerHint ) external; function removeTroveManager(address troveManager) external; function repayDebt( address troveManager, address account, uint256 _debtAmount, address _upperHint, address _lowerHint ) external; function setDelegateApproval(address _delegate, bool _isApproved) external; function setMinNetDebt(uint256 _minNetDebt) external; function withdrawColl( address troveManager, address account, uint256 _collWithdrawal, address _upperHint, address _lowerHint ) external; function withdrawDebt( address troveManager, address account, uint256 _maxFeePercentage, uint256 _debtAmount, address _upperHint, address _lowerHint ) external; function checkRecoveryMode(uint256 TCR) external pure returns (bool); function CCR() external view returns (uint256); function DEBT_GAS_COMPENSATION() external view returns (uint256); function DECIMAL_PRECISION() external view returns (uint256); function PERCENT_DIVISOR() external view returns (uint256); function PRISMA_CORE() external view returns (address); function _100pct() external view returns (uint256); function debtToken() external view returns (address); function factory() external view returns (address); function getCompositeDebt(uint256 _debt) external view returns (uint256); function guardian() external view returns (address); function isApprovedDelegate(address owner, address caller) external view returns (bool isApproved); function minNetDebt() external view returns (uint256); function owner() external view returns (address); function troveManagersData(address) external view returns (address collateralToken, uint16 index); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IDebtToken { event Approval(address indexed owner, address indexed spender, uint256 value); event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload, bytes _reason); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ReceiveFromChain(uint16 indexed _srcChainId, address indexed _to, uint256 _amount); event RetryMessageSuccess(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes32 _payloadHash); event SendToChain(uint16 indexed _dstChainId, address indexed _from, bytes _toAddress, uint256 _amount); event SetMinDstGas(uint16 _dstChainId, uint16 _type, uint256 _minDstGas); event SetPrecrime(address precrime); event SetTrustedRemote(uint16 _remoteChainId, bytes _path); event SetTrustedRemoteAddress(uint16 _remoteChainId, bytes _remoteAddress); event SetUseCustomAdapterParams(bool _useCustomAdapterParams); event Transfer(address indexed from, address indexed to, uint256 value); function approve(address spender, uint256 amount) external returns (bool); function burn(address _account, uint256 _amount) external; function burnWithGasCompensation(address _account, uint256 _amount) external returns (bool); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); function enableTroveManager(address _troveManager) external; function flashLoan(address receiver, address token, uint256 amount, bytes calldata data) external returns (bool); function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; function increaseAllowance(address spender, uint256 addedValue) external returns (bool); function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external; function mint(address _account, uint256 _amount) external; function mintWithGasCompensation(address _account, uint256 _amount) external returns (bool); function nonblockingLzReceive( uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload ) external; function permit( address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; function renounceOwnership() external; function returnFromPool(address _poolAddress, address _receiver, uint256 _amount) external; function sendToSP(address _sender, uint256 _amount) external; function setConfig(uint16 _version, uint16 _chainId, uint256 _configType, bytes calldata _config) external; function setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint256 _minGas) external; function setPayloadSizeLimit(uint16 _dstChainId, uint256 _size) external; function setPrecrime(address _precrime) external; function setReceiveVersion(uint16 _version) external; function setSendVersion(uint16 _version) external; function setTrustedRemote(uint16 _srcChainId, bytes calldata _path) external; function setTrustedRemoteAddress(uint16 _remoteChainId, bytes calldata _remoteAddress) external; function setUseCustomAdapterParams(bool _useCustomAdapterParams) external; function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function transferOwnership(address newOwner) external; function retryMessage( uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload ) external payable; function sendFrom( address _from, uint16 _dstChainId, bytes calldata _toAddress, uint256 _amount, address _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams ) external payable; function DEBT_GAS_COMPENSATION() external view returns (uint256); function DEFAULT_PAYLOAD_SIZE_LIMIT() external view returns (uint256); function FLASH_LOAN_FEE() external view returns (uint256); function NO_EXTRA_GAS() external view returns (uint256); function PT_SEND() external view returns (uint16); function allowance(address owner, address spender) external view returns (uint256); function balanceOf(address account) external view returns (uint256); function borrowerOperationsAddress() external view returns (address); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function domainSeparator() external view returns (bytes32); function estimateSendFee( uint16 _dstChainId, bytes calldata _toAddress, uint256 _amount, bool _useZro, bytes calldata _adapterParams ) external view returns (uint256 nativeFee, uint256 zroFee); function factory() external view returns (address); function failedMessages(uint16, bytes calldata, uint64) external view returns (bytes32); function flashFee(address token, uint256 amount) external view returns (uint256); function gasPool() external view returns (address); function getConfig( uint16 _version, uint16 _chainId, address, uint256 _configType ) external view returns (bytes memory); function getTrustedRemoteAddress(uint16 _remoteChainId) external view returns (bytes memory); function isTrustedRemote(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool); function lzEndpoint() external view returns (address); function maxFlashLoan(address token) external view returns (uint256); function minDstGasLookup(uint16, uint16) external view returns (uint256); function name() external view returns (string memory); function nonces(address owner) external view returns (uint256); function owner() external view returns (address); function payloadSizeLimitLookup(uint16) external view returns (uint256); function permitTypeHash() external view returns (bytes32); function precrime() external view returns (address); function stabilityPoolAddress() external view returns (address); function supportsInterface(bytes4 interfaceId) external view returns (bool); function symbol() external view returns (string memory); function token() external view returns (address); function totalSupply() external view returns (uint256); function troveManager(address) external view returns (bool); function trustedRemoteLookup(uint16) external view returns (bytes memory); function useCustomAdapterParams() external view returns (bool); function version() external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ISortedTroves { event NodeAdded(address _id, uint256 _NICR); event NodeRemoved(address _id); function insert(address _id, uint256 _NICR, address _prevId, address _nextId) external; function reInsert(address _id, uint256 _newNICR, address _prevId, address _nextId) external; function remove(address _id) external; function setAddresses(address _troveManagerAddress) external; function contains(address _id) external view returns (bool); function data() external view returns (address head, address tail, uint256 size); function findInsertPosition( uint256 _NICR, address _prevId, address _nextId ) external view returns (address, address); function getFirst() external view returns (address); function getLast() external view returns (address); function getNext(address _id) external view returns (address); function getPrev(address _id) external view returns (address); function getSize() external view returns (uint256); function isEmpty() external view returns (bool); function troveManager() external view returns (address); function validInsertPosition(uint256 _NICR, address _prevId, address _nextId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IStabilityPool { event CollateralGainWithdrawn(address indexed _depositor, uint256[] _collateral); event CollateralOverwritten(address oldCollateral, address newCollateral); event DepositSnapshotUpdated(address indexed _depositor, uint256 _P, uint256 _G); event EpochUpdated(uint128 _currentEpoch); event G_Updated(uint256 _G, uint128 _epoch, uint128 _scale); event P_Updated(uint256 _P); event RewardClaimed(address indexed account, address indexed recipient, uint256 claimed); event S_Updated(uint256 idx, uint256 _S, uint128 _epoch, uint128 _scale); event ScaleUpdated(uint128 _currentScale); event StabilityPoolDebtBalanceUpdated(uint256 _newBalance); event UserDepositChanged(address indexed _depositor, uint256 _newDeposit); function claimCollateralGains(address recipient, uint256[] calldata collateralIndexes) external; function claimReward(address recipient) external returns (uint256 amount); function enableCollateral(address _collateral) external; function offset(address collateral, uint256 _debtToOffset, uint256 _collToAdd) external; function provideToSP(uint256 _amount) external; function startCollateralSunset(address collateral) external; function vaultClaimReward(address claimant, address) external returns (uint256 amount); function withdrawFromSP(uint256 _amount) external; function DECIMAL_PRECISION() external view returns (uint256); function P() external view returns (uint256); function PRISMA_CORE() external view returns (address); function SCALE_FACTOR() external view returns (uint256); function SUNSET_DURATION() external view returns (uint128); function accountDeposits(address) external view returns (uint128 amount, uint128 timestamp); function claimableReward(address _depositor) external view returns (uint256); function collateralGainsByDepositor(address depositor, uint256) external view returns (uint80 gains); function collateralTokens(uint256) external view returns (address); function currentEpoch() external view returns (uint128); function currentScale() external view returns (uint128); function debtToken() external view returns (address); function depositSnapshots(address) external view returns (uint256 P, uint256 G, uint128 scale, uint128 epoch); function depositSums(address, uint256) external view returns (uint256); function emissionId() external view returns (uint256); function epochToScaleToG(uint128, uint128) external view returns (uint256); function epochToScaleToSums(uint128, uint128, uint256) external view returns (uint256); function factory() external view returns (address); function getCompoundedDebtDeposit(address _depositor) external view returns (uint256); function getDepositorCollateralGain(address _depositor) external view returns (uint256[] memory collateralGains); function getTotalDebtTokenDeposits() external view returns (uint256); function getWeek() external view returns (uint256 week); function guardian() external view returns (address); function indexByCollateral(address collateral) external view returns (uint256 index); function lastCollateralError_Offset() external view returns (uint256); function lastDebtLossError_Offset() external view returns (uint256); function lastPrismaError() external view returns (uint256); function lastUpdate() external view returns (uint32); function liquidationManager() external view returns (address); function owner() external view returns (address); function periodFinish() external view returns (uint32); function rewardRate() external view returns (uint128); function vault() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ILiquidationManager { event Liquidation( uint256 _liquidatedDebt, uint256 _liquidatedColl, uint256 _collGasCompensation, uint256 _debtGasCompensation ); event TroveLiquidated(address indexed _borrower, uint256 _debt, uint256 _coll, uint8 _operation); event TroveUpdated(address indexed _borrower, uint256 _debt, uint256 _coll, uint256 _stake, uint8 _operation); function batchLiquidateTroves(address troveManager, address[] calldata _troveArray) external; function enableTroveManager(address _troveManager) external; function liquidate(address troveManager, address borrower) external; function liquidateTroves(address troveManager, uint256 maxTrovesToLiquidate, uint256 maxICR) external; function CCR() external view returns (uint256); function DEBT_GAS_COMPENSATION() external view returns (uint256); function DECIMAL_PRECISION() external view returns (uint256); function PERCENT_DIVISOR() external view returns (uint256); function borrowerOperations() external view returns (address); function factory() external view returns (address); function stabilityPool() external view returns (address); }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "Factory.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_prismaCore","type":"address"},{"internalType":"contract IDebtToken","name":"_debtToken","type":"address"},{"internalType":"contract IStabilityPool","name":"_stabilityPool","type":"address"},{"internalType":"contract IBorrowerOperations","name":"_borrowerOperations","type":"address"},{"internalType":"address","name":"_sortedTroves","type":"address"},{"internalType":"address","name":"_troveManager","type":"address"},{"internalType":"contract ILiquidationManager","name":"_liquidationManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"address","name":"troveManager","type":"address"},{"indexed":false,"internalType":"address","name":"sortedTroves","type":"address"}],"name":"NewDeployment","type":"event"},{"inputs":[],"name":"PRISMA_CORE","outputs":[{"internalType":"contract IPrismaCore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"borrowerOperations","outputs":[{"internalType":"contract IBorrowerOperations","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debtToken","outputs":[{"internalType":"contract IDebtToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"address","name":"customTroveManagerImpl","type":"address"},{"internalType":"address","name":"customSortedTrovesImpl","type":"address"},{"components":[{"internalType":"uint256","name":"minuteDecayFactor","type":"uint256"},{"internalType":"uint256","name":"redemptionFeeFloor","type":"uint256"},{"internalType":"uint256","name":"maxRedemptionFee","type":"uint256"},{"internalType":"uint256","name":"borrowingFeeFloor","type":"uint256"},{"internalType":"uint256","name":"maxBorrowingFee","type":"uint256"},{"internalType":"uint256","name":"interestRateInBps","type":"uint256"},{"internalType":"uint256","name":"maxDebt","type":"uint256"},{"internalType":"uint256","name":"MCR","type":"uint256"}],"internalType":"struct Factory.DeploymentParams","name":"params","type":"tuple"}],"name":"deployNewInstance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidationManager","outputs":[{"internalType":"contract ILiquidationManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_troveManagerImpl","type":"address"},{"internalType":"address","name":"_sortedTrovesImpl","type":"address"}],"name":"setImplementations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sortedTrovesImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stabilityPool","outputs":[{"internalType":"contract IStabilityPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"troveManagerCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"troveManagerImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"troveManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040523480156200001257600080fd5b5060405162000e7c38038062000e7c8339810160408190526200003591620000a0565b6001600160a01b0396871660805294861660a05292851660c05290841661010052600080549185166001600160a01b031992831617905560018054928516929091169190911790551660e0526200014b565b6001600160a01b03811681146200009d57600080fd5b50565b600080600080600080600060e0888a031215620000bc57600080fd5b8751620000c98162000087565b6020890151909750620000dc8162000087565b6040890151909650620000ef8162000087565b6060890151909550620001028162000087565b6080890151909450620001158162000087565b60a0890151909350620001288162000087565b60c08901519092506200013b8162000087565b8091505092959891949750929550565b60805160a05160c05160e05161010051610cb5620001c760003960008181610183015261076701526000818161011d015261066901526000818160d901526105f001526000818161021401526106e40152600081816101da01528181610264015281816102eb015281816108da01526109d90152610cb56000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806377553ad41161008c5780638da5cb5b116100665780638da5cb5b146101cd578063cc9641a8146101d5578063e22136ae146101fc578063f8d898981461020f57600080fd5b806377553ad41461017e5780637891b6a5146101a557806385bff341146101ba57600080fd5b8063048c661d146100d45780631ef3a04c146101185780633b7074781461013f57806344bb420514610152578063452a932014610165578063679df0d91461016d575b600080fd5b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6100fb61014d366004610ad8565b610236565b6000546100fb906001600160a01b031681565b6100fb610260565b60025460405190815260200161010f565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6101b86101b3366004610b09565b6102e9565b005b6101b86101c8366004610c09565b6108d8565b6100fb6109d5565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6001546100fb906001600160a01b031681565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6002818154811061024657600080fd5b6000918252602090912001546001600160a01b0316905081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e49190610c42565b905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610c42565b6001600160a01b0316336001600160a01b0316146103bd5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b60448201526064015b60405180910390fd5b60006001600160a01b038416156103d457836103e1565b6001546001600160a01b03165b9050600061040b6001600160a01b0383166bffffffffffffffffffffffff1960608a901b16610a35565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038381169190911790915590915084161561046b5783610478565b6000546001600160a01b03165b915060006104a26001600160a01b0384166bffffffffffffffffffffffff19606085901b16610a35565b604051630d8efe5960e21b81526001600160a01b03898116600483015280831660248301528a811660448301529192509083169063363bf96490606401600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b50506040516381d3c43560e01b81526001600160a01b038581166004830152841692506381d3c4359150602401600060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b50505050816001600160a01b0316630fdb11cf6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d09190610c66565b506040516311be0de560e01b81526001600160a01b0389811660048301527f000000000000000000000000000000000000000000000000000000000000000016906311be0de590602401600060405180830381600087803b15801561063457600080fd5b505af1158015610648573d6000803e3d6000fd5b50506040516317dd676d60e01b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001692506317dd676d9150602401600060405180830381600087803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b50506040516317dd676d60e01b81526001600160a01b0385811660048301527f00000000000000000000000000000000000000000000000000000000000000001692506317dd676d9150602401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b5050604051631de3171960e21b81526001600160a01b0385811660048301528b811660248301527f000000000000000000000000000000000000000000000000000000000000000016925063778c5c649150604401600060405180830381600087803b1580156107ad57600080fd5b505af11580156107c1573d6000803e3d6000fd5b50508551602087015160408089015160608a015160808b015160a08c015160c08d015160e08e015195516334ba3c7160e01b81526001600160a01b038d169a506334ba3c71995061084898979690600401978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b600060405180830381600087803b15801561086257600080fd5b505af1158015610876573d6000803e3d6000fd5b5050604080516001600160a01b038c811682528b81166020830152868116828401528516606082015290517f49d89791026fa3ea04294a3105fde8a3c3d62de8ceeb5cf79f78098a1dd711aa9350908190036080019150a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a9190610c42565b6001600160a01b0316336001600160a01b0316146109a75760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b60448201526064016103b4565b600180546001600160a01b039384166001600160a01b03199182161790915560008054929093169116179055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c0573d6000803e3d6000fd5b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610ad25760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016103b4565b92915050565b600060208284031215610aea57600080fd5b5035919050565b6001600160a01b0381168114610b0657600080fd5b50565b6000806000806000858703610180811215610b2357600080fd5b8635610b2e81610af1565b95506020870135610b3e81610af1565b94506040870135610b4e81610af1565b93506060870135610b5e81610af1565b9250610100607f198201811315610b7457600080fd5b604051915080820182811067ffffffffffffffff82111715610ba657634e487b7160e01b600052604160045260246000fd5b80604052506080880135825260a0880135602083015260c0880135604083015260e088013560608301528088013560808301525061012087013560a082015261014087013560c082015261016087013560e0820152809150509295509295909350565b60008060408385031215610c1c57600080fd5b8235610c2781610af1565b91506020830135610c3781610af1565b809150509250929050565b600060208284031215610c5457600080fd5b8151610c5f81610af1565b9392505050565b600060208284031215610c7857600080fd5b505191905056fea2646970667358221220466988fd1ef933575955bbae0b0b1a76cc33a44fd8890be2e5c8b555663fd34a64736f6c634300081300330000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf80000000000000000000000004591dbff62656e7859afe5e45f6f47d3669fbb28000000000000000000000000ed8b26d99834540c5013701bb3715fafd39993ba00000000000000000000000072c590349535ad52e6953744cb2a36b4095427190000000000000000000000003bab3f90095c424b923d67f4be1790935c8bbb500000000000000000000000004482bd395d78d36af31a1d58fe86958707861cf50000000000000000000000005de309dfd7f94e9e2a18cb6ba61ca305abf8e9e2
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806377553ad41161008c5780638da5cb5b116100665780638da5cb5b146101cd578063cc9641a8146101d5578063e22136ae146101fc578063f8d898981461020f57600080fd5b806377553ad41461017e5780637891b6a5146101a557806385bff341146101ba57600080fd5b8063048c661d146100d45780631ef3a04c146101185780633b7074781461013f57806344bb420514610152578063452a932014610165578063679df0d91461016d575b600080fd5b6100fb7f000000000000000000000000ed8b26d99834540c5013701bb3715fafd39993ba81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fb7f0000000000000000000000005de309dfd7f94e9e2a18cb6ba61ca305abf8e9e281565b6100fb61014d366004610ad8565b610236565b6000546100fb906001600160a01b031681565b6100fb610260565b60025460405190815260200161010f565b6100fb7f00000000000000000000000072c590349535ad52e6953744cb2a36b40954271981565b6101b86101b3366004610b09565b6102e9565b005b6101b86101c8366004610c09565b6108d8565b6100fb6109d5565b6100fb7f0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf881565b6001546100fb906001600160a01b031681565b6100fb7f0000000000000000000000004591dbff62656e7859afe5e45f6f47d3669fbb2881565b6002818154811061024657600080fd5b6000918252602090912001546001600160a01b0316905081565b60007f0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf86001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e49190610c42565b905090565b7f0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610c42565b6001600160a01b0316336001600160a01b0316146103bd5760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b60448201526064015b60405180910390fd5b60006001600160a01b038416156103d457836103e1565b6001546001600160a01b03165b9050600061040b6001600160a01b0383166bffffffffffffffffffffffff1960608a901b16610a35565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038381169190911790915590915084161561046b5783610478565b6000546001600160a01b03165b915060006104a26001600160a01b0384166bffffffffffffffffffffffff19606085901b16610a35565b604051630d8efe5960e21b81526001600160a01b03898116600483015280831660248301528a811660448301529192509083169063363bf96490606401600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b50506040516381d3c43560e01b81526001600160a01b038581166004830152841692506381d3c4359150602401600060405180830381600087803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b50505050816001600160a01b0316630fdb11cf6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156105ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d09190610c66565b506040516311be0de560e01b81526001600160a01b0389811660048301527f000000000000000000000000ed8b26d99834540c5013701bb3715fafd39993ba16906311be0de590602401600060405180830381600087803b15801561063457600080fd5b505af1158015610648573d6000803e3d6000fd5b50506040516317dd676d60e01b81526001600160a01b0385811660048301527f0000000000000000000000005de309dfd7f94e9e2a18cb6ba61ca305abf8e9e21692506317dd676d9150602401600060405180830381600087803b1580156106af57600080fd5b505af11580156106c3573d6000803e3d6000fd5b50506040516317dd676d60e01b81526001600160a01b0385811660048301527f0000000000000000000000004591dbff62656e7859afe5e45f6f47d3669fbb281692506317dd676d9150602401600060405180830381600087803b15801561072a57600080fd5b505af115801561073e573d6000803e3d6000fd5b5050604051631de3171960e21b81526001600160a01b0385811660048301528b811660248301527f00000000000000000000000072c590349535ad52e6953744cb2a36b40954271916925063778c5c649150604401600060405180830381600087803b1580156107ad57600080fd5b505af11580156107c1573d6000803e3d6000fd5b50508551602087015160408089015160608a015160808b015160a08c015160c08d015160e08e015195516334ba3c7160e01b81526001600160a01b038d169a506334ba3c71995061084898979690600401978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b600060405180830381600087803b15801561086257600080fd5b505af1158015610876573d6000803e3d6000fd5b5050604080516001600160a01b038c811682528b81166020830152868116828401528516606082015290517f49d89791026fa3ea04294a3105fde8a3c3d62de8ceeb5cf79f78098a1dd711aa9350908190036080019150a15050505050505050565b7f0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095a9190610c42565b6001600160a01b0316336001600160a01b0316146109a75760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b60448201526064016103b4565b600180546001600160a01b039384166001600160a01b03199182161790915560008054929093169116179055565b60007f0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf86001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c0573d6000803e3d6000fd5b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610ad25760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016103b4565b92915050565b600060208284031215610aea57600080fd5b5035919050565b6001600160a01b0381168114610b0657600080fd5b50565b6000806000806000858703610180811215610b2357600080fd5b8635610b2e81610af1565b95506020870135610b3e81610af1565b94506040870135610b4e81610af1565b93506060870135610b5e81610af1565b9250610100607f198201811315610b7457600080fd5b604051915080820182811067ffffffffffffffff82111715610ba657634e487b7160e01b600052604160045260246000fd5b80604052506080880135825260a0880135602083015260c0880135604083015260e088013560608301528088013560808301525061012087013560a082015261014087013560c082015261016087013560e0820152809150509295509295909350565b60008060408385031215610c1c57600080fd5b8235610c2781610af1565b91506020830135610c3781610af1565b809150509250929050565b600060208284031215610c5457600080fd5b8151610c5f81610af1565b9392505050565b600060208284031215610c7857600080fd5b505191905056fea2646970667358221220466988fd1ef933575955bbae0b0b1a76cc33a44fd8890be2e5c8b555663fd34a64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf80000000000000000000000004591dbff62656e7859afe5e45f6f47d3669fbb28000000000000000000000000ed8b26d99834540c5013701bb3715fafd39993ba00000000000000000000000072c590349535ad52e6953744cb2a36b4095427190000000000000000000000003bab3f90095c424b923d67f4be1790935c8bbb500000000000000000000000004482bd395d78d36af31a1d58fe86958707861cf50000000000000000000000005de309dfd7f94e9e2a18cb6ba61ca305abf8e9e2
-----Decoded View---------------
Arg [0] : _prismaCore (address): 0x5d17eA085F2FF5da3e6979D5d26F1dBaB664ccf8
Arg [1] : _debtToken (address): 0x4591DBfF62656E7859Afe5e45f6f47D3669fBB28
Arg [2] : _stabilityPool (address): 0xed8B26D99834540C5013701bB3715faFD39993Ba
Arg [3] : _borrowerOperations (address): 0x72c590349535AD52e6953744cb2A36B409542719
Arg [4] : _sortedTroves (address): 0x3BaB3F90095c424b923D67F4bE1790935c8BBb50
Arg [5] : _troveManager (address): 0x4482BD395d78d36AF31a1d58fe86958707861Cf5
Arg [6] : _liquidationManager (address): 0x5de309dfd7f94e9e2A18Cb6bA61CA305aBF8e9E2
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000005d17ea085f2ff5da3e6979d5d26f1dbab664ccf8
Arg [1] : 0000000000000000000000004591dbff62656e7859afe5e45f6f47d3669fbb28
Arg [2] : 000000000000000000000000ed8b26d99834540c5013701bb3715fafd39993ba
Arg [3] : 00000000000000000000000072c590349535ad52e6953744cb2a36b409542719
Arg [4] : 0000000000000000000000003bab3f90095c424b923d67f4be1790935c8bbb50
Arg [5] : 0000000000000000000000004482bd395d78d36af31a1d58fe86958707861cf5
Arg [6] : 0000000000000000000000005de309dfd7f94e9e2a18cb6ba61ca305abf8e9e2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.