Source Code
Overview
HYPE Balance
HYPE Value
$0.00Latest 16 from a total of 16 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Pool Admin | 24791085 | 10 days ago | IN | 0 HYPE | 0.00004815 | ||||
| Set Lending Pool... | 14558523 | 127 days ago | IN | 0 HYPE | 0.00001321 | ||||
| Set Lending Pool... | 14557181 | 127 days ago | IN | 0 HYPE | 0.00000814 | ||||
| Set Pool Admin | 14223163 | 130 days ago | IN | 0 HYPE | 0.00003311 | ||||
| Set Pool Admin | 14223041 | 130 days ago | IN | 0 HYPE | 0.000003 | ||||
| Set Address | 14220357 | 131 days ago | IN | 0 HYPE | 0.000025 | ||||
| Set Lending Pool... | 14220296 | 131 days ago | IN | 0 HYPE | 0.00001585 | ||||
| Set Pool Admin | 14220174 | 131 days ago | IN | 0 HYPE | 0.0000621 | ||||
| Set Pool Admin | 14220052 | 131 days ago | IN | 0 HYPE | 0.00001635 | ||||
| Set Lending Rate... | 14215294 | 131 days ago | IN | 0 HYPE | 0.00005218 | ||||
| Set Price Oracle | 14215233 | 131 days ago | IN | 0 HYPE | 0.00001523 | ||||
| Set Lending Pool... | 14209316 | 131 days ago | IN | 0 HYPE | 0.00013175 | ||||
| Set Lending Pool... | 14209255 | 131 days ago | IN | 0 HYPE | 0.00006339 | ||||
| Set Liquidation ... | 14209133 | 131 days ago | IN | 0 HYPE | 0.0000135 | ||||
| Set Emergency Ad... | 14209072 | 131 days ago | IN | 0 HYPE | 0.00005193 | ||||
| Set Pool Admin | 14209011 | 131 days ago | IN | 0 HYPE | 0.00000471 |
Latest 2 internal transactions
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 14209316 | 131 days ago | Contract Creation | 0 HYPE | |||
| 14209255 | 131 days ago | Contract Creation | 0 HYPE |
Cross-Chain Transactions
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 Name:
LendingPoolAddressesProvider
Compiler Version
v0.8.27+commit.40a35a09
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
import "@openzeppelin/contracts/access/Ownable.sol";
// Prettier ignore to prevent buidler flatter bug
// prettier-ignore
import {InitializableImmutableAdminUpgradeabilityProxy} from '../libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol';
import {ILendingPoolAddressesProvider} from "../../interfaces/ILendingPoolAddressesProvider.sol";
import {ILendingPool} from "../../interfaces/ILendingPool.sol";
/**
* @title LendingPoolAddressesProvider contract
* @dev Main registry of addresses part of or connected to the protocol, including permissioned roles
* - Acting also as factory of proxies and admin of those, so with right to change its implementations
* - Owned by the Aave Governance
* @author Aave
**/
contract LendingPoolAddressesProvider is Ownable, ILendingPoolAddressesProvider {
string private _marketId;
mapping(bytes32 => address) private _addresses;
address private _liquidationFeeTo;
bytes32 private constant LENDING_POOL = "LENDING_POOL";
bytes32 private constant LENDING_POOL_CONFIGURATOR = "LENDING_POOL_CONFIGURATOR";
bytes32 private constant POOL_ADMIN = "POOL_ADMIN";
bytes32 private constant EMERGENCY_ADMIN = "EMERGENCY_ADMIN";
bytes32 private constant LENDING_POOL_COLLATERAL_MANAGER = "COLLATERAL_MANAGER";
bytes32 private constant PRICE_ORACLE = "PRICE_ORACLE";
bytes32 private constant LENDING_RATE_ORACLE = "LENDING_RATE_ORACLE";
constructor(string memory marketId) Ownable(_msgSender()) {
_setMarketId(marketId);
_liquidationFeeTo = 0xF90C69D16599A5C657A05Fe76Cd22fD9Cab44598;
}
/**
* @dev Returns the id of the Aave market to which this contracts points to
* @return The market id
**/
function getMarketId() external view returns (string memory) {
return _marketId;
}
/**
* @dev Allows to set the market which this LendingPoolAddressesProvider represents
* @param marketId The market id
*/
function setMarketId(string memory marketId) external onlyOwner {
_setMarketId(marketId);
}
/**
* @dev General function to update the implementation of a proxy registered with
* certain `id`. If there is no proxy registered, it will instantiate one and
* set as implementation the `implementationAddress`
* IMPORTANT Use this function carefully, only for ids that don't have an explicit
* setter function, in order to avoid unexpected consequences
* @param id The id
* @param implementationAddress The address of the new implementation
*/
function setAddressAsProxy(bytes32 id, address implementationAddress) external onlyOwner {
_updateImpl(id, implementationAddress);
emit AddressSet(id, implementationAddress, true);
}
/**
* @dev Sets an address for an id replacing the address saved in the addresses map
* IMPORTANT Use this function carefully, as it will do a hard replacement
* @param id The id
* @param newAddress The address to set
*/
function setAddress(bytes32 id, address newAddress) external onlyOwner {
_addresses[id] = newAddress;
emit AddressSet(id, newAddress, false);
}
/**
* @dev Returns an address by id
* @return The address
*/
function getAddress(bytes32 id) public view returns (address) {
return _addresses[id];
}
/**
* @dev Returns the address of the LendingPool proxy
* @return The LendingPool proxy address
**/
function getLendingPool() external view returns (address) {
return getAddress(LENDING_POOL);
}
/**
* @dev Updates the implementation of the LendingPool, or creates the proxy
* setting the new `pool` implementation on the first time calling it
* @param pool The new LendingPool implementation
**/
function setLendingPoolImpl(address pool) external onlyOwner {
_updateImpl(LENDING_POOL, pool);
emit LendingPoolUpdated(pool);
}
/**
* @dev Returns the address of the LendingPoolConfigurator proxy
* @return The LendingPoolConfigurator proxy address
**/
function getLendingPoolConfigurator() external view returns (address) {
return getAddress(LENDING_POOL_CONFIGURATOR);
}
/**
* @dev Updates the implementation of the LendingPoolConfigurator, or creates the proxy
* setting the new `configurator` implementation on the first time calling it
* @param configurator The new LendingPoolConfigurator implementation
**/
function setLendingPoolConfiguratorImpl(address configurator) external onlyOwner {
_updateImpl(LENDING_POOL_CONFIGURATOR, configurator);
emit LendingPoolConfiguratorUpdated(configurator);
}
/**
* @dev Returns the address of the LendingPoolCollateralManager. Since the manager is used
* through delegateCall within the LendingPool contract, the proxy contract pattern does not work properly hence
* the addresses are changed directly
* @return The address of the LendingPoolCollateralManager
**/
function getLendingPoolCollateralManager() external view returns (address) {
return getAddress(LENDING_POOL_COLLATERAL_MANAGER);
}
/**
* @dev Updates the address of the LendingPoolCollateralManager
* @param manager The new LendingPoolCollateralManager address
**/
function setLendingPoolCollateralManager(address manager) external onlyOwner {
_addresses[LENDING_POOL_COLLATERAL_MANAGER] = manager;
emit LendingPoolCollateralManagerUpdated(manager);
}
/**
* @dev The functions below are getters/setters of addresses that are outside the context
* of the protocol hence the upgradable proxy pattern is not used
**/
function getPoolAdmin() external view returns (address) {
return getAddress(POOL_ADMIN);
}
function setPoolAdmin(address admin) external onlyOwner {
_addresses[POOL_ADMIN] = admin;
emit ConfigurationAdminUpdated(admin);
}
function getEmergencyAdmin() external view returns (address) {
return getAddress(EMERGENCY_ADMIN);
}
function setEmergencyAdmin(address emergencyAdmin) external onlyOwner {
_addresses[EMERGENCY_ADMIN] = emergencyAdmin;
emit EmergencyAdminUpdated(emergencyAdmin);
}
function getPriceOracle() external view returns (address) {
return getAddress(PRICE_ORACLE);
}
function setPriceOracle(address priceOracle) external onlyOwner {
_addresses[PRICE_ORACLE] = priceOracle;
emit PriceOracleUpdated(priceOracle);
}
function getLendingRateOracle() external view returns (address) {
return getAddress(LENDING_RATE_ORACLE);
}
function setLendingRateOracle(address lendingRateOracle) external onlyOwner {
_addresses[LENDING_RATE_ORACLE] = lendingRateOracle;
emit LendingRateOracleUpdated(lendingRateOracle);
}
function getLiquidationFeeTo() external view returns (address) {
return _liquidationFeeTo;
}
function setLiquidationFeeTo(address liquidationFeeTo) external onlyOwner {
_liquidationFeeTo = liquidationFeeTo;
}
/**
* @dev Internal function to update the implementation of a specific proxied component of the protocol
* - If there is no proxy registered in the given `id`, it creates the proxy setting `newAdress`
* as implementation and calls the initialize() function on the proxy
* - If there is already a proxy registered, it just updates the implementation to `newAddress` and
* calls the initialize() function via upgradeToAndCall() in the proxy
* @param id The id of the proxy to be updated
* @param newAddress The address of the new implementation
**/
function _updateImpl(bytes32 id, address newAddress) internal {
address payable proxyAddress = payable(_addresses[id]);
InitializableImmutableAdminUpgradeabilityProxy proxy = InitializableImmutableAdminUpgradeabilityProxy(
proxyAddress
);
bytes memory params = abi.encodeCall(ILendingPool.initialize, ILendingPoolAddressesProvider(address(this)));
if (proxyAddress == address(0)) {
proxy = new InitializableImmutableAdminUpgradeabilityProxy(address(this));
proxy.initialize(newAddress, params);
_addresses[id] = address(proxy);
emit ProxyCreated(id, address(proxy));
} else {
proxy.upgradeToAndCall(newAddress, params);
}
}
function _setMarketId(string memory marketId) internal {
_marketId = marketId;
emit MarketIdSet(marketId);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)
pragma solidity ^0.8.20;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev The ETH balance of the account is not enough to perform the operation.
*/
error AddressInsufficientBalance(address account);
/**
* @dev There's no code at `target` (it is not a contract).
*/
error AddressEmptyCode(address target);
/**
* @dev A call to an address target failed. The target may have reverted.
*/
error FailedInnerCall();
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
if (address(this).balance < amount) {
revert AddressInsufficientBalance(address(this));
}
(bool success, ) = recipient.call{value: amount}("");
if (!success) {
revert FailedInnerCall();
}
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason or custom error, it is bubbled
* up by this function (like regular Solidity function calls). However, if
* the call reverted with no returned reason, this function reverts with a
* {FailedInnerCall} error.
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
if (address(this).balance < value) {
revert AddressInsufficientBalance(address(this));
}
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
* was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an
* unsuccessful call.
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata
) internal view returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
// only check if target is a contract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
if (returndata.length == 0 && target.code.length == 0) {
revert AddressEmptyCode(target);
}
return returndata;
}
}
/**
* @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
* revert reason or with a default {FailedInnerCall} error.
*/
function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {
if (!success) {
_revert(returndata);
} else {
return returndata;
}
}
/**
* @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.
*/
function _revert(bytes memory returndata) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert FailedInnerCall();
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
import "./Proxy.sol";
import "@openzeppelin/contracts/utils/Address.sol";
/**
* @title BaseUpgradeabilityProxy
* @dev This contract implements a proxy that allows to change the
* implementation address to which it will delegate.
* Such a change is called an implementation upgrade.
*/
contract BaseUpgradeabilityProxy is Proxy {
/**
* @dev Emitted when the implementation is upgraded.
* @param implementation Address of the new implementation.
*/
event Upgraded(address indexed implementation);
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
* validated in the constructor.
*/
bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @dev Returns the current implementation.
* @return impl Address of the current implementation
*/
function _implementation() internal view override returns (address impl) {
bytes32 slot = IMPLEMENTATION_SLOT;
//solium-disable-next-line
assembly {
impl := sload(slot)
}
}
/**
* @dev Upgrades the proxy to a new implementation.
* @param newImplementation Address of the new implementation.
*/
function _upgradeTo(address newImplementation) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
/**
* @dev Sets the implementation address of the proxy.
* @param newImplementation Address of the new implementation.
*/
function _setImplementation(address newImplementation) internal {
require(newImplementation.code.length > 0, "Cannot set a proxy implementation to a non-contract address");
bytes32 slot = IMPLEMENTATION_SLOT;
//solium-disable-next-line
assembly {
sstore(slot, newImplementation)
}
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
import "./BaseUpgradeabilityProxy.sol";
/**
* @title InitializableUpgradeabilityProxy
* @dev Extends BaseUpgradeabilityProxy with an initializer for initializing
* implementation and init data.
*/
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
/**
* @dev Contract initializer.
* @param _logic Address of the initial implementation.
* @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
*/
function initialize(address _logic, bytes memory _data) public payable {
require(_implementation() == address(0));
assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
_setImplementation(_logic);
if (_data.length > 0) {
(bool success, ) = _logic.delegatecall(_data);
require(success);
}
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
/**
* @title Proxy
* @dev Implements delegation of calls to other contracts, with proper
* forwarding of return values and bubbling of failures.
* It defines a fallback function that delegates all calls to the address
* returned by the abstract _implementation() internal function.
*/
abstract contract Proxy {
/**
* @dev Fallback function.
* Implemented entirely in `_fallback`.
*/
fallback() external payable {
_fallback();
}
/**
* @return The Address of the implementation.
*/
function _implementation() internal view virtual returns (address);
/**
* @dev Delegates execution to an implementation contract.
* This is a low level function that doesn't return to its internal call site.
* It will return to the external caller whatever the implementation returns.
* @param implementation Address to delegate.
*/
function _delegate(address implementation) internal {
//solium-disable-next-line
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
/**
* @dev Function that is run as the first thing in the fallback function.
* Can be redefined in derived contracts to add functionality.
* Redefinitions must call super._willFallback().
*/
function _willFallback() internal virtual {}
/**
* @dev fallback implementation.
* Extracted to enable manual triggering.
*/
function _fallback() internal {
_willFallback();
_delegate(_implementation());
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
pragma experimental ABIEncoderV2;
import {ILendingPoolAddressesProvider} from "./ILendingPoolAddressesProvider.sol";
import {DataTypes} from "../lending/libraries/types/DataTypes.sol";
interface ILendingPool {
/**
* @dev Emitted on deposit()
* @param reserve The address of the underlying asset of the reserve
* @param user The address initiating the deposit
* @param onBehalfOf The beneficiary of the deposit, receiving the aTokens
* @param amount The amount deposited
* @param referral The referral code used
**/
event Deposit(
address indexed reserve,
address user,
address indexed onBehalfOf,
uint256 amount,
uint16 indexed referral
);
/**
* @dev Emitted on withdraw()
* @param reserve The address of the underlyng asset being withdrawn
* @param user The address initiating the withdrawal, owner of aTokens
* @param to Address that will receive the underlying
* @param amount The amount to be withdrawn
**/
event Withdraw(address indexed reserve, address indexed user, address indexed to, uint256 amount);
/**
* @dev Emitted on borrow() and flashLoan() when debt needs to be opened
* @param reserve The address of the underlying asset being borrowed
* @param user The address of the user initiating the borrow(), receiving the funds on borrow() or just
* initiator of the transaction on flashLoan()
* @param onBehalfOf The address that will be getting the debt
* @param amount The amount borrowed out
* @param borrowRateMode The rate mode: 1 for Stable, 2 for Variable
* @param borrowRate The numeric rate at which the user has borrowed
* @param referral The referral code used
**/
event Borrow(
address indexed reserve,
address user,
address indexed onBehalfOf,
uint256 amount,
uint256 borrowRateMode,
uint256 borrowRate,
uint16 indexed referral
);
/**
* @dev Emitted on repay()
* @param reserve The address of the underlying asset of the reserve
* @param user The beneficiary of the repayment, getting his debt reduced
* @param repayer The address of the user initiating the repay(), providing the funds
* @param amount The amount repaid
**/
event Repay(address indexed reserve, address indexed user, address indexed repayer, uint256 amount);
/**
* @dev Emitted on swapBorrowRateMode()
* @param reserve The address of the underlying asset of the reserve
* @param user The address of the user swapping his rate mode
* @param rateMode The rate mode that the user wants to swap to
**/
event Swap(address indexed reserve, address indexed user, uint256 rateMode);
/**
* @dev Emitted on setUserUseReserveAsCollateral()
* @param reserve The address of the underlying asset of the reserve
* @param user The address of the user enabling the usage as collateral
**/
event ReserveUsedAsCollateralEnabled(address indexed reserve, address indexed user);
/**
* @dev Emitted on setUserUseReserveAsCollateral()
* @param reserve The address of the underlying asset of the reserve
* @param user The address of the user enabling the usage as collateral
**/
event ReserveUsedAsCollateralDisabled(address indexed reserve, address indexed user);
/**
* @dev Emitted on rebalanceStableBorrowRate()
* @param reserve The address of the underlying asset of the reserve
* @param user The address of the user for which the rebalance has been executed
**/
event RebalanceStableBorrowRate(address indexed reserve, address indexed user);
/**
* @dev Emitted on flashLoan()
* @param target The address of the flash loan receiver contract
* @param initiator The address initiating the flash loan
* @param asset The address of the asset being flash borrowed
* @param amount The amount flash borrowed
* @param premium The fee flash borrowed
* @param referralCode The referral code used
**/
event FlashLoan(
address indexed target,
address indexed initiator,
address indexed asset,
uint256 amount,
uint256 premium,
uint16 referralCode
);
/**
* @dev Emitted when the pause is triggered.
*/
event Paused();
/**
* @dev Emitted when the pause is lifted.
*/
event Unpaused();
/**
* @dev Emitted when a borrower is liquidated. This event is emitted by the LendingPool via
* LendingPoolCollateral manager using a DELEGATECALL
* This allows to have the events in the generated ABI for LendingPool.
* @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation
* @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation
* @param user The address of the borrower getting liquidated
* @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover
* @param liquidatedCollateralAmount The amount of collateral received by the liiquidator
* @param liquidator The address of the liquidator
* @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants
* to receive the underlying collateral asset directly
**/
event LiquidationCall(
address indexed collateralAsset,
address indexed debtAsset,
address indexed user,
uint256 debtToCover,
uint256 liquidatedCollateralAmount,
address liquidator,
bool receiveAToken
);
/**
* @dev Emitted when the state of a reserve is updated. NOTE: This event is actually declared
* in the ReserveLogic library and emitted in the updateInterestRates() function. Since the function is internal,
* the event will actually be fired by the LendingPool contract. The event is therefore replicated here so it
* gets added to the LendingPool ABI
* @param reserve The address of the underlying asset of the reserve
* @param liquidityRate The new liquidity rate
* @param stableBorrowRate The new stable borrow rate
* @param variableBorrowRate The new variable borrow rate
* @param liquidityIndex The new liquidity index
* @param variableBorrowIndex The new variable borrow index
**/
event ReserveDataUpdated(
address indexed reserve,
uint256 liquidityRate,
uint256 stableBorrowRate,
uint256 variableBorrowRate,
uint256 liquidityIndex,
uint256 variableBorrowIndex
);
function initialize(ILendingPoolAddressesProvider provider) external;
/**
* @dev Deposits an `amount` of underlying asset into the reserve, receiving in return overlying aTokens.
* - E.g. User deposits 100 USDC and gets in return 100 aUSDC
* @param asset The address of the underlying asset to deposit
* @param amount The amount to be deposited
* @param onBehalfOf The address that will receive the aTokens, same as msg.sender if the user
* wants to receive them on his own wallet, or a different address if the beneficiary of aTokens
* is a different wallet
* @param referralCode Code used to register the integrator originating the operation, for potential rewards.
* 0 if the action is executed directly by the user, without any middle-man
**/
function deposit(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external;
function depositWithAutoDLP(address asset, uint256 amount, address onBehalfOf, uint16 referralCode) external;
/**
* @dev Withdraws an `amount` of underlying asset from the reserve, burning the equivalent aTokens owned
* E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC
* @param asset The address of the underlying asset to withdraw
* @param amount The underlying amount to be withdrawn
* - Send the value type(uint256).max in order to withdraw the whole aToken balance
* @param to Address that will receive the underlying, same as msg.sender if the user
* wants to receive it on his own wallet, or a different address if the beneficiary is a
* different wallet
* @return The final amount withdrawn
**/
function withdraw(address asset, uint256 amount, address to) external returns (uint256);
/**
* @dev Allows users to borrow a specific `amount` of the reserve underlying asset, provided that the borrower
* already deposited enough collateral, or he was given enough allowance by a credit delegator on the
* corresponding debt token (StableDebtToken or VariableDebtToken)
* - E.g. User borrows 100 USDC passing as `onBehalfOf` his own address, receiving the 100 USDC in his wallet
* and 100 stable/variable debt tokens, depending on the `interestRateMode`
* @param asset The address of the underlying asset to borrow
* @param amount The amount to be borrowed
* @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable
* @param referralCode Code used to register the integrator originating the operation, for potential rewards.
* 0 if the action is executed directly by the user, without any middle-man
* @param onBehalfOf Address of the user who will receive the debt. Should be the address of the borrower itself
* calling the function if he wants to borrow against his own collateral, or the address of the credit delegator
* if he has been given credit delegation allowance
**/
function borrow(
address asset,
uint256 amount,
uint256 interestRateMode,
uint16 referralCode,
address onBehalfOf
) external;
/**
* @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned
* - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address
* @param asset The address of the borrowed underlying asset previously borrowed
* @param amount The amount to repay
* - Send the value type(uint256).max in order to repay the whole debt for `asset` on the specific `debtMode`
* @param rateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable
* @param onBehalfOf Address of the user who will get his debt reduced/removed. Should be the address of the
* user calling the function if he wants to reduce/remove his own debt, or the address of any other
* other borrower whose debt should be removed
* @return The final amount repaid
**/
function repay(address asset, uint256 amount, uint256 rateMode, address onBehalfOf) external returns (uint256);
/**
* @dev Allows a borrower to swap his debt between stable and variable mode, or viceversa
* @param asset The address of the underlying asset borrowed
* @param rateMode The rate mode that the user wants to swap to
**/
function swapBorrowRateMode(address asset, uint256 rateMode) external;
/**
* @dev Rebalances the stable interest rate of a user to the current stable rate defined on the reserve.
* - Users can be rebalanced if the following conditions are satisfied:
* 1. Usage ratio is above 95%
* 2. the current deposit APY is below REBALANCE_UP_THRESHOLD * maxVariableBorrowRate, which means that too much has been
* borrowed at a stable rate and depositors are not earning enough
* @param asset The address of the underlying asset borrowed
* @param user The address of the user to be rebalanced
**/
function rebalanceStableBorrowRate(address asset, address user) external;
/**
* @dev Allows depositors to enable/disable a specific deposited asset as collateral
* @param asset The address of the underlying asset deposited
* @param useAsCollateral `true` if the user wants to use the deposit as collateral, `false` otherwise
**/
function setUserUseReserveAsCollateral(address asset, bool useAsCollateral) external;
/**
* @dev Function to liquidate a non-healthy position collateral-wise, with Health Factor below 1
* - The caller (liquidator) covers `debtToCover` amount of debt of the user getting liquidated, and receives
* a proportionally amount of the `collateralAsset` plus a bonus to cover market risk
* @param collateralAsset The address of the underlying asset used as collateral, to receive as result of the liquidation
* @param debtAsset The address of the underlying borrowed asset to be repaid with the liquidation
* @param user The address of the borrower getting liquidated
* @param debtToCover The debt amount of borrowed `asset` the liquidator wants to cover
* @param receiveAToken `true` if the liquidators wants to receive the collateral aTokens, `false` if he wants
* to receive the underlying collateral asset directly
**/
function liquidationCall(
address collateralAsset,
address debtAsset,
address user,
uint256 debtToCover,
bool receiveAToken
) external;
/**
* @dev Allows smartcontracts to access the liquidity of the pool within one transaction,
* as long as the amount taken plus a fee is returned.
* IMPORTANT There are security concerns for developers of flashloan receiver contracts that must be kept into consideration.
* For further details please visit https://developers.aave.com
* @param receiverAddress The address of the contract receiving the funds, implementing the IFlashLoanReceiver interface
* @param assets The addresses of the assets being flash-borrowed
* @param amounts The amounts amounts being flash-borrowed
* @param modes Types of the debt to open if the flash loan is not returned:
* 0 -> Don't open any debt, just revert if funds can't be transferred from the receiver
* 1 -> Open debt at stable rate for the value of the amount flash-borrowed to the `onBehalfOf` address
* 2 -> Open debt at variable rate for the value of the amount flash-borrowed to the `onBehalfOf` address
* @param onBehalfOf The address that will receive the debt in the case of using on `modes` 1 or 2
* @param params Variadic packed params to pass to the receiver as extra information
* @param referralCode Code used to register the integrator originating the operation, for potential rewards.
* 0 if the action is executed directly by the user, without any middle-man
**/
function flashLoan(
address receiverAddress,
address[] calldata assets,
uint256[] calldata amounts,
uint256[] calldata modes,
address onBehalfOf,
bytes calldata params,
uint16 referralCode
) external;
/**
* @dev Returns the user account data across all the reserves
* @param user The address of the user
* @return totalCollateralETH the total collateral in ETH of the user
* @return totalDebtETH the total debt in ETH of the user
* @return availableBorrowsETH the borrowing power left of the user
* @return currentLiquidationThreshold the liquidation threshold of the user
* @return ltv the loan to value of the user
* @return healthFactor the current health factor of the user
**/
function getUserAccountData(
address user
)
external
view
returns (
uint256 totalCollateralETH,
uint256 totalDebtETH,
uint256 availableBorrowsETH,
uint256 currentLiquidationThreshold,
uint256 ltv,
uint256 healthFactor
);
function initReserve(
address reserve,
address aTokenAddress,
address stableDebtAddress,
address variableDebtAddress,
address interestRateStrategyAddress
) external;
function setReserveInterestRateStrategyAddress(address reserve, address rateStrategyAddress) external;
function setConfiguration(address reserve, uint256 configuration) external;
/**
* @dev Returns the configuration of the reserve
* @param asset The address of the underlying asset of the reserve
* @return The configuration of the reserve
**/
function getConfiguration(address asset) external view returns (DataTypes.ReserveConfigurationMap memory);
/**
* @dev Returns the configuration of the user across all the reserves
* @param user The user address
* @return The configuration of the user
**/
function getUserConfiguration(address user) external view returns (DataTypes.UserConfigurationMap memory);
/**
* @dev Returns the normalized income normalized income of the reserve
* @param asset The address of the underlying asset of the reserve
* @return The reserve's normalized income
*/
function getReserveNormalizedIncome(address asset) external view returns (uint256);
/**
* @dev Returns the normalized variable debt per unit of asset
* @param asset The address of the underlying asset of the reserve
* @return The reserve normalized variable debt
*/
function getReserveNormalizedVariableDebt(address asset) external view returns (uint256);
/**
* @dev Returns the state and configuration of the reserve
* @param asset The address of the underlying asset of the reserve
* @return The state of the reserve
**/
function getReserveData(address asset) external view returns (DataTypes.ReserveData memory);
function finalizeTransfer(
address asset,
address from,
address to,
uint256 amount,
uint256 balanceFromAfter,
uint256 balanceToBefore
) external;
function getReservesList() external view returns (address[] memory);
function getAddressesProvider() external view returns (ILendingPoolAddressesProvider);
function setPause(bool val) external;
function paused() external view returns (bool);
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
/**
* @title LendingPoolAddressesProvider contract
* @dev Main registry of addresses part of or connected to the protocol, including permissioned roles
* - Acting also as factory of proxies and admin of those, so with right to change its implementations
* - Owned by the Aave Governance
* @author Aave
**/
interface ILendingPoolAddressesProvider {
event MarketIdSet(string newMarketId);
event LendingPoolUpdated(address indexed newAddress);
event ConfigurationAdminUpdated(address indexed newAddress);
event EmergencyAdminUpdated(address indexed newAddress);
event LendingPoolConfiguratorUpdated(address indexed newAddress);
event LendingPoolCollateralManagerUpdated(address indexed newAddress);
event PriceOracleUpdated(address indexed newAddress);
event LendingRateOracleUpdated(address indexed newAddress);
event ProxyCreated(bytes32 id, address indexed newAddress);
event AddressSet(bytes32 id, address indexed newAddress, bool hasProxy);
function getMarketId() external view returns (string memory);
function setMarketId(string calldata marketId) external;
function setAddress(bytes32 id, address newAddress) external;
function setAddressAsProxy(bytes32 id, address impl) external;
function getAddress(bytes32 id) external view returns (address);
function getLendingPool() external view returns (address);
function setLendingPoolImpl(address pool) external;
function getLendingPoolConfigurator() external view returns (address);
function setLendingPoolConfiguratorImpl(address configurator) external;
function getLendingPoolCollateralManager() external view returns (address);
function setLendingPoolCollateralManager(address manager) external;
function getPoolAdmin() external view returns (address);
function setPoolAdmin(address admin) external;
function getEmergencyAdmin() external view returns (address);
function setEmergencyAdmin(address admin) external;
function getPriceOracle() external view returns (address);
function setPriceOracle(address priceOracle) external;
function getLendingRateOracle() external view returns (address);
function setLendingRateOracle(address lendingRateOracle) external;
function getLiquidationFeeTo() external view returns (address);
function setLiquidationFeeTo(address liquidationFeeTo) external;
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
import "../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol";
/**
* @title BaseImmutableAdminUpgradeabilityProxy
* @author Aave, inspired by the OpenZeppelin upgradeability proxy pattern
* @dev This contract combines an upgradeability proxy with an authorization
* mechanism for administrative tasks. The admin role is stored in an immutable, which
* helps saving transactions costs
* All external functions in this contract must be guarded by the
* `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
* feature proposal that would enable this to be done automatically.
*/
contract BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
address immutable ADMIN;
constructor(address _admin) {
ADMIN = _admin;
}
modifier ifAdmin() {
if (msg.sender == ADMIN) {
_;
} else {
_fallback();
}
}
/**
* @return _address The address of the proxy admin.
*/
function admin() external ifAdmin returns (address _address) {
return ADMIN;
}
/**
* @return _address The address of the implementation.
*/
function implementation() external ifAdmin returns (address _address) {
return _implementation();
}
/**
* @dev Upgrade the backing implementation of the proxy.
* Only the admin can call this function.
* @param newImplementation Address of the new implementation.
*/
function upgradeTo(address newImplementation) external ifAdmin {
_upgradeTo(newImplementation);
}
/**
* @dev Upgrade the backing implementation of the proxy and call a function
* on the new implementation.
* This is useful to initialize the proxied contract.
* @param newImplementation Address of the new implementation.
* @param data Data to send as msg.data in the low level call.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
*/
function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
_upgradeTo(newImplementation);
(bool success, ) = newImplementation.delegatecall(data);
require(success);
}
/**
* @dev Only fall back when the sender is not the admin.
*/
function _willFallback() internal virtual override {
require(msg.sender != ADMIN, "Cannot call fallback function from the proxy admin");
super._willFallback();
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
import "./BaseImmutableAdminUpgradeabilityProxy.sol";
import "../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol";
/**
* @title InitializableAdminUpgradeabilityProxy
* @dev Extends BaseAdminUpgradeabilityProxy with an initializer function
*/
contract InitializableImmutableAdminUpgradeabilityProxy is
BaseImmutableAdminUpgradeabilityProxy,
InitializableUpgradeabilityProxy
{
constructor(address admin) BaseImmutableAdminUpgradeabilityProxy(admin) {}
/**
* @dev Only fall back when the sender is not the admin.
*/
function _willFallback() internal override(BaseImmutableAdminUpgradeabilityProxy, Proxy) {
BaseImmutableAdminUpgradeabilityProxy._willFallback();
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.27;
library DataTypes {
// refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties.
struct ReserveData {
//stores the reserve configuration
ReserveConfigurationMap configuration;
//the liquidity index. Expressed in ray
uint128 liquidityIndex;
//variable borrow index. Expressed in ray
uint128 variableBorrowIndex;
//the current supply rate. Expressed in ray
uint128 currentLiquidityRate;
//the current variable borrow rate. Expressed in ray
uint128 currentVariableBorrowRate;
//the current stable borrow rate. Expressed in ray
uint128 currentStableBorrowRate;
uint40 lastUpdateTimestamp;
//tokens addresses
address aTokenAddress;
address stableDebtTokenAddress;
address variableDebtTokenAddress;
//address of the interest rate strategy
address interestRateStrategyAddress;
//the id of the reserve. Represents the position in the list of the active reserves
uint8 id;
}
struct ReserveConfigurationMap {
//bit 0-15: LTV
//bit 16-31: Liq. threshold
//bit 32-47: Liq. bonus
//bit 48-55: Decimals
//bit 56: Reserve is active
//bit 57: reserve is frozen
//bit 58: borrowing is enabled
//bit 59: stable rate borrowing enabled
//bit 60-63: reserved
//bit 64-79: reserve factor
uint256 data;
}
struct UserConfigurationMap {
uint256 data;
}
enum InterestRateMode {
NONE,
STABLE,
VARIABLE
}
}{
"evmVersion": "shanghai",
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 1000
},
"remappings": [],
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"marketId","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"hasProxy","type":"bool"}],"name":"AddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ConfigurationAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"EmergencyAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolCollateralManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolConfiguratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingRateOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"newMarketId","type":"string"}],"name":"MarketIdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PriceOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEmergencyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPoolCollateralManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPoolConfigurator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingRateOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidationFeeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketId","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"newAddress","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"implementationAddress","type":"address"}],"name":"setAddressAsProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"emergencyAdmin","type":"address"}],"name":"setEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"setLendingPoolCollateralManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"configurator","type":"address"}],"name":"setLendingPoolConfiguratorImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"setLendingPoolImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lendingRateOracle","type":"address"}],"name":"setLendingRateOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidationFeeTo","type":"address"}],"name":"setLiquidationFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"marketId","type":"string"}],"name":"setMarketId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"setPoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"priceOracle","type":"address"}],"name":"setPriceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052346102d157611cbe80380380610019816102d5565b9283398101906020818303126102d1578051906001600160401b0382116102d157019080601f830112156102d1578151916001600160401b0383116102aa5761006b601f8401601f19166020016102d5565b928084526020840192602082840101116102d15782602061008c93016102fa565b33156102be575f8054336001600160a01b0319821681178355916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a381516001600160401b0381116102aa57600154600181811c911680156102a0575b602082101461028c57601f8111610229575b506020601f82116001146101b2579261016592826040935f516020611c9e5f395f51905f52965f916101a7575b508160011b915f199060031b1c1916176001555b825193849260208452518092816020860152858501906102fa565b601f01601f19168101030190a1600380546001600160a01b03191673f90c69d16599a5c657a05fe76cd22fd9cab44598179055604051611982908161031c8239f35b90508301515f610136565b601f1982169060015f52805f20915f5b8181106102115750835f516020611c9e5f395f51905f5296936101659693604096600194106101f9575b5050811b0160015561014a565b8501515f1960f88460031b161c191690555f806101ec565b9192602060018192868a0151815501940192016101c2565b60015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c81019160208410610282575b601f0160051c01905b8181106102775750610109565b5f815560010161026a565b9091508190610261565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100f7565b634e487b7160e01b5f52604160045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102aa57604052565b5f5b83811061030b5750505f910152565b81810151838201526020016102fc56fe60806040526004361015610011575f80fd5b5f5f3560e01c80630261bf8b146111a157806321f8a7211461116e578063283d62ad146110f357806335da3394146110655780633618abba14611015578063398e555314610f87578063530e784f14610f0a578063568ef47014610e3c5780635aef021f14610c2c5780635afaf01814610c055780635dcc528c146109e7578063712d917114610995578063715018a61461093c578063820d1274146108ac57806385c858b11461085a5780638da5cb5b14610834578063aecda378146107f5578063c12542df14610591578063ca446dd914610513578063ddcaa9ea146104c1578063e216ab4414610482578063f2fde38b146103e4578063f67b1847146101655763fca513a814610122575f80fd5b346101625780600319360112610162576001600160a01b03604082602093506b50524943455f4f5241434c4560a01b815260028452205416604051908152f35b80fd5b5034610162576020366003190112610162576004359067ffffffffffffffff8211610162573660238301121561016257816004013567ffffffffffffffff81116103cc57604051926101c1601f8301601f19166020018561124b565b81845236602483830101116103e05781839260246020930183870137840101526101e96112b9565b81519167ffffffffffffffff83116103cc57610206600154611281565b601f811161032b575b50602092601f81116001146102875790816102769284957f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799959161027c575b508160011b915f199060031b1c1916176001555b60405191829160208352602083019061120c565b0390a180f35b90508201515f61024e565b600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f198216845b8181106103135750916001917f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee7999596826102769695106102fb575b5050811b01600155610262565b8401515f1960f88460031b161c191690555f806102ee565b848701518355602096870196600190930192016102b3565b60018352601f840160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602085106103a4575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b818110610399575061020f565b83815560010161038c565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69150610362565b602482634e487b7160e01b81526041600452fd5b8280fd5b5034610162576020366003190112610162576001600160a01b036104066111e0565b61040e6112b9565b168015610456576001600160a01b038254826001600160a01b03198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b5034610162576020366003190112610162576001600160a01b036104a46111e0565b6104ac6112b9565b166001600160a01b0319600354161760035580f35b50346101625780600319360112610162576001600160a01b03604082602093507f454d455247454e43595f41444d494e0000000000000000000000000000000000815260028452205416604051908152f35b5034610162576040366003190112610162576004357ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3160406001600160a01b0361055b6111f6565b6105636112b9565b84865260026020528286208282166001600160a01b031982541617905582519485528560208601521692a280f35b5034610162576020366003190112610162576105ab6111e0565b6105b36112b9565b7f4c454e44494e475f504f4f4c5f434f4e464947555241544f5200000000000000825260026020526001600160a01b0360408320541690826040519263189acdbd60e31b60208501523060248501526024845261061160448561124b565b806107915750506040516106318082019082821067ffffffffffffffff83111761077d578286939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610680916040518093819263347d5e2560e21b835287600484016112f8565b038183885af180156107615761074c575b50917f4c454e44494e475f504f4f4c5f434f4e464947555241544f52000000000000006001600160a01b0393526002602052604084208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860206040517f4c454e44494e475f504f4f4c5f434f4e464947555241544f52000000000000008152a25b167fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae7637298280a280f35b816107569161124b565b6103e057825f610691565b6040513d84823e3d90fd5b5080fd5b50604051903d90823e3d90fd5b602486634e487b7160e01b81526041600452fd5b80939192933b156103e0576107c1839291839260405194858094819363278f794360e11b83528a600484016112f8565b03925af18015610761576107e0575b50506001600160a01b0390610724565b816107ea9161124b565b61076c57815f6107d0565b50346101625780600319360112610162576001600160a01b0360408260209350692827a7a62fa0a226a4a760b11b815260028452205416604051908152f35b50346101625780600319360112610162576001600160a01b036020915416604051908152f35b50346101625780600319360112610162576001600160a01b03604082602093507f4c454e44494e475f504f4f4c5f434f4e464947555241544f5200000000000000815260028452205416604051908152f35b5034610162576020366003190112610162576001600160a01b036108ce6111e0565b6108d66112b9565b7f4c454e44494e475f524154455f4f5241434c450000000000000000000000000083526002602052604083208282166001600160a01b0319825416179055167f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b58280a280f35b50346101625780600319360112610162576109556112b9565b806001600160a01b0381546001600160a01b031981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101625780600319360112610162576001600160a01b03604082602093507f434f4c4c41544552414c5f4d414e414745520000000000000000000000000000815260028452205416604051908152f35b503461016257604036600319011261016257600435610a046111f6565b610a0c6112b9565b81835260026020526001600160a01b0360408420541690836040519263189acdbd60e31b602085015230602485015260248452610a4a60448561124b565b80610b7e5750506040516106318082019082821067ffffffffffffffff831117610b6a578287939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610ab9916040518093819263347d5e2560e21b835287600484016112f8565b038183885af1801561076157610b51575b506040917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3193856001600160a01b03935260026020528387208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860208551888152a25b8251948552600160208601521692a280f35b81610b5b9161124b565b610b6657835f610aca565b8380fd5b602487634e487b7160e01b81526041600452fd5b80939192933b156103e057610bae839291839260405194858094819363278f794360e11b83528a600484016112f8565b03925af1801561076157610bf0575b505060406001600160a01b037ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3192610b3f565b81610bfa9161124b565b6103e057825f610bbd565b503461016257806003193601126101625760206001600160a01b0360035416604051908152f35b5034610e38576020366003190112610e3857610c466111e0565b610c4e6112b9565b6b13115391125391d7d413d3d360a21b5f5260026020526001600160a01b0360405f2054166040519063189acdbd60e31b602083015230602483015260248252610c9960448361124b565b80610dc75750906040516106318082019082821067ffffffffffffffff83111761077d578286939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610d08916040518093819263347d5e2560e21b835287600484016112f8565b038183885af1801561076157610db2575b50916b13115391125391d7d413d3d360a21b6001600160a01b0393526002602052604084208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860206040516b13115391125391d7d413d3d360a21b8152a25b167fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa48280a280f35b81610dbc9161124b565b6103e057825f610d19565b803b15610e3857610df35f9291839260405194858094819363278f794360e11b835289600484016112f8565b03925af18015610e2d57610e11575b506001600160a01b0390610d8a565b610e1e9192505f9061124b565b5f906001600160a01b03610e02565b6040513d5f823e3d90fd5b5f80fd5b34610e38575f366003190112610e38576040515f600154610e5c81611281565b8084529060018116908115610ee65750600114610e88575b610e84836102628185038261124b565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610ecc57509091508101602001610262610e74565b919260018160209254838588010152019101909291610eb4565b60ff191660208086019190915291151560051b840190910191506102629050610e74565b34610e38576020366003190112610e38576001600160a01b03610f2b6111e0565b610f336112b9565b6b50524943455f4f5241434c4560a01b5f52600260205260405f208282166001600160a01b0319825416179055167fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd5f80a2005b34610e38576020366003190112610e38576001600160a01b03610fa86111e0565b610fb06112b9565b7f434f4c4c41544552414c5f4d414e4147455200000000000000000000000000005f52600260205260405f208282166001600160a01b0319825416179055167f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae869345416385f80a2005b34610e38575f366003190112610e38577f4c454e44494e475f524154455f4f5241434c45000000000000000000000000005f52600260205260206001600160a01b0360405f205416604051908152f35b34610e38576020366003190112610e38576001600160a01b036110866111e0565b61108e6112b9565b7f454d455247454e43595f41444d494e00000000000000000000000000000000005f52600260205260405f208282166001600160a01b0319825416179055167fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee33108269165f80a2005b34610e38576020366003190112610e38576001600160a01b036111146111e0565b61111c6112b9565b692827a7a62fa0a226a4a760b11b5f52600260205260405f208282166001600160a01b0319825416179055167fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d5f80a2005b34610e38576020366003190112610e38576004355f52600260205260206001600160a01b0360405f205416604051908152f35b34610e38575f366003190112610e38576b13115391125391d7d413d3d360a21b5f52600260205260206001600160a01b0360405f205416604051908152f35b600435906001600160a01b0382168203610e3857565b602435906001600160a01b0382168203610e3857565b91908251928382525f5b848110611236575050825f602080949584010152601f8019910116010190565b80602080928401015182828601015201611216565b90601f8019910116810190811067ffffffffffffffff82111761126d57604052565b634e487b7160e01b5f52604160045260245ffd5b90600182811c921680156112af575b602083101461129b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611290565b6001600160a01b035f541633036112cc57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6040906001600160a01b036113189493168152816020820152019061120c565b9056fe60a03461008557601f61063138819003918201601f19168301916001600160401b038311848410176100895780849260209460405283398101031261008557516001600160a01b038116810361008557608052604051610593908161009e823960805181818160770152818161012301528181610196015281816102f001526103c10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436106103b7575f3560e01c80633659cfe61461005b5780634f1ef286146100565780635c60da1b14610051578063d1f578941461004c5763f851a440036103b7576102de565b61026c565b610183565b6100ce565b346100b45760203660031901126100b4576100746100b8565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af576100ad9061048f565b005b6103b7565b5f80fd5b600435906001600160a01b03821682036100b457565b60403660031901126100b4576100e26100b8565b60243567ffffffffffffffff81116100b457366023820112156100b45780600401359167ffffffffffffffff83116100b45736602484840101116100b457337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af5760245f939284936101608461048f565b80604051938493018337810184815203915af461017b610333565b50156100b457005b346100b4575f3660031901126100b457337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af5760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b0360405191168152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761024b57604052565b6101f8565b67ffffffffffffffff811161024b57601f01601f191660200190565b60403660031901126100b4576102806100b8565b6024359067ffffffffffffffff82116100b457366023830112156100b4578160040135906102b56102b083610250565b610225565b9180835236602482860101116100b4576020815f9260246100ad97018387013784010152610358565b346100b4575f3660031901126100b4577f0000000000000000000000000000000000000000000000000000000000000000336001600160a01b038216036100af576020906001600160a01b0360405191168152f35b3d15610353573d906103476102b083610250565b9182523d5f602084013e565b606090565b906001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54166100b457610391826104c8565b80518061039d57505050565b5f926020849301905af46103af610333565b50156100b457565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610425575f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610421573d5ff35b3d5ffd5b608460405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152fd5b6001600160a01b03906104a1816104c8565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2565b803b156104f3577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b608460405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea26469706673582212203269e5b35c052ae9fa3553486482a602f3dc3d352e5d28cd4e7e75f5b1f46d3a64736f6c634300081b0033a264697066735822122066b8c0cd77ed8ac4fdc268aa20e77b8e4894a53b64ed02ac22d6f6fd10c540c564736f6c634300081b00335e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000055072696d65000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f5f3560e01c80630261bf8b146111a157806321f8a7211461116e578063283d62ad146110f357806335da3394146110655780633618abba14611015578063398e555314610f87578063530e784f14610f0a578063568ef47014610e3c5780635aef021f14610c2c5780635afaf01814610c055780635dcc528c146109e7578063712d917114610995578063715018a61461093c578063820d1274146108ac57806385c858b11461085a5780638da5cb5b14610834578063aecda378146107f5578063c12542df14610591578063ca446dd914610513578063ddcaa9ea146104c1578063e216ab4414610482578063f2fde38b146103e4578063f67b1847146101655763fca513a814610122575f80fd5b346101625780600319360112610162576001600160a01b03604082602093506b50524943455f4f5241434c4560a01b815260028452205416604051908152f35b80fd5b5034610162576020366003190112610162576004359067ffffffffffffffff8211610162573660238301121561016257816004013567ffffffffffffffff81116103cc57604051926101c1601f8301601f19166020018561124b565b81845236602483830101116103e05781839260246020930183870137840101526101e96112b9565b81519167ffffffffffffffff83116103cc57610206600154611281565b601f811161032b575b50602092601f81116001146102875790816102769284957f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799959161027c575b508160011b915f199060031b1c1916176001555b60405191829160208352602083019061120c565b0390a180f35b90508201515f61024e565b600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f198216845b8181106103135750916001917f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee7999596826102769695106102fb575b5050811b01600155610262565b8401515f1960f88460031b161c191690555f806102ee565b848701518355602096870196600190930192016102b3565b60018352601f840160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60190602085106103a4575b601f0160051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905b818110610399575061020f565b83815560010161038c565b7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69150610362565b602482634e487b7160e01b81526041600452fd5b8280fd5b5034610162576020366003190112610162576001600160a01b036104066111e0565b61040e6112b9565b168015610456576001600160a01b038254826001600160a01b03198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b5034610162576020366003190112610162576001600160a01b036104a46111e0565b6104ac6112b9565b166001600160a01b0319600354161760035580f35b50346101625780600319360112610162576001600160a01b03604082602093507f454d455247454e43595f41444d494e0000000000000000000000000000000000815260028452205416604051908152f35b5034610162576040366003190112610162576004357ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3160406001600160a01b0361055b6111f6565b6105636112b9565b84865260026020528286208282166001600160a01b031982541617905582519485528560208601521692a280f35b5034610162576020366003190112610162576105ab6111e0565b6105b36112b9565b7f4c454e44494e475f504f4f4c5f434f4e464947555241544f5200000000000000825260026020526001600160a01b0360408320541690826040519263189acdbd60e31b60208501523060248501526024845261061160448561124b565b806107915750506040516106318082019082821067ffffffffffffffff83111761077d578286939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610680916040518093819263347d5e2560e21b835287600484016112f8565b038183885af180156107615761074c575b50917f4c454e44494e475f504f4f4c5f434f4e464947555241544f52000000000000006001600160a01b0393526002602052604084208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860206040517f4c454e44494e475f504f4f4c5f434f4e464947555241544f52000000000000008152a25b167fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae7637298280a280f35b816107569161124b565b6103e057825f610691565b6040513d84823e3d90fd5b5080fd5b50604051903d90823e3d90fd5b602486634e487b7160e01b81526041600452fd5b80939192933b156103e0576107c1839291839260405194858094819363278f794360e11b83528a600484016112f8565b03925af18015610761576107e0575b50506001600160a01b0390610724565b816107ea9161124b565b61076c57815f6107d0565b50346101625780600319360112610162576001600160a01b0360408260209350692827a7a62fa0a226a4a760b11b815260028452205416604051908152f35b50346101625780600319360112610162576001600160a01b036020915416604051908152f35b50346101625780600319360112610162576001600160a01b03604082602093507f4c454e44494e475f504f4f4c5f434f4e464947555241544f5200000000000000815260028452205416604051908152f35b5034610162576020366003190112610162576001600160a01b036108ce6111e0565b6108d66112b9565b7f4c454e44494e475f524154455f4f5241434c450000000000000000000000000083526002602052604083208282166001600160a01b0319825416179055167f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b58280a280f35b50346101625780600319360112610162576109556112b9565b806001600160a01b0381546001600160a01b031981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101625780600319360112610162576001600160a01b03604082602093507f434f4c4c41544552414c5f4d414e414745520000000000000000000000000000815260028452205416604051908152f35b503461016257604036600319011261016257600435610a046111f6565b610a0c6112b9565b81835260026020526001600160a01b0360408420541690836040519263189acdbd60e31b602085015230602485015260248452610a4a60448561124b565b80610b7e5750506040516106318082019082821067ffffffffffffffff831117610b6a578287939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610ab9916040518093819263347d5e2560e21b835287600484016112f8565b038183885af1801561076157610b51575b506040917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3193856001600160a01b03935260026020528387208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860208551888152a25b8251948552600160208601521692a280f35b81610b5b9161124b565b610b6657835f610aca565b8380fd5b602487634e487b7160e01b81526041600452fd5b80939192933b156103e057610bae839291839260405194858094819363278f794360e11b83528a600484016112f8565b03925af1801561076157610bf0575b505060406001600160a01b037ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3192610b3f565b81610bfa9161124b565b6103e057825f610bbd565b503461016257806003193601126101625760206001600160a01b0360035416604051908152f35b5034610e38576020366003190112610e3857610c466111e0565b610c4e6112b9565b6b13115391125391d7d413d3d360a21b5f5260026020526001600160a01b0360405f2054166040519063189acdbd60e31b602083015230602483015260248252610c9960448361124b565b80610dc75750906040516106318082019082821067ffffffffffffffff83111761077d578286939260209261131c833930815203019082f08015610770576001600160a01b031692833b1561076c5781610d08916040518093819263347d5e2560e21b835287600484016112f8565b038183885af1801561076157610db2575b50916b13115391125391d7d413d3d360a21b6001600160a01b0393526002602052604084208382166001600160a01b03198254161790557f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e23114243860206040516b13115391125391d7d413d3d360a21b8152a25b167fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa48280a280f35b81610dbc9161124b565b6103e057825f610d19565b803b15610e3857610df35f9291839260405194858094819363278f794360e11b835289600484016112f8565b03925af18015610e2d57610e11575b506001600160a01b0390610d8a565b610e1e9192505f9061124b565b5f906001600160a01b03610e02565b6040513d5f823e3d90fd5b5f80fd5b34610e38575f366003190112610e38576040515f600154610e5c81611281565b8084529060018116908115610ee65750600114610e88575b610e84836102628185038261124b565b0390f35b91905060015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6915f905b808210610ecc57509091508101602001610262610e74565b919260018160209254838588010152019101909291610eb4565b60ff191660208086019190915291151560051b840190910191506102629050610e74565b34610e38576020366003190112610e38576001600160a01b03610f2b6111e0565b610f336112b9565b6b50524943455f4f5241434c4560a01b5f52600260205260405f208282166001600160a01b0319825416179055167fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd5f80a2005b34610e38576020366003190112610e38576001600160a01b03610fa86111e0565b610fb06112b9565b7f434f4c4c41544552414c5f4d414e4147455200000000000000000000000000005f52600260205260405f208282166001600160a01b0319825416179055167f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae869345416385f80a2005b34610e38575f366003190112610e38577f4c454e44494e475f524154455f4f5241434c45000000000000000000000000005f52600260205260206001600160a01b0360405f205416604051908152f35b34610e38576020366003190112610e38576001600160a01b036110866111e0565b61108e6112b9565b7f454d455247454e43595f41444d494e00000000000000000000000000000000005f52600260205260405f208282166001600160a01b0319825416179055167fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee33108269165f80a2005b34610e38576020366003190112610e38576001600160a01b036111146111e0565b61111c6112b9565b692827a7a62fa0a226a4a760b11b5f52600260205260405f208282166001600160a01b0319825416179055167fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d5f80a2005b34610e38576020366003190112610e38576004355f52600260205260206001600160a01b0360405f205416604051908152f35b34610e38575f366003190112610e38576b13115391125391d7d413d3d360a21b5f52600260205260206001600160a01b0360405f205416604051908152f35b600435906001600160a01b0382168203610e3857565b602435906001600160a01b0382168203610e3857565b91908251928382525f5b848110611236575050825f602080949584010152601f8019910116010190565b80602080928401015182828601015201611216565b90601f8019910116810190811067ffffffffffffffff82111761126d57604052565b634e487b7160e01b5f52604160045260245ffd5b90600182811c921680156112af575b602083101461129b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611290565b6001600160a01b035f541633036112cc57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6040906001600160a01b036113189493168152816020820152019061120c565b9056fe60a03461008557601f61063138819003918201601f19168301916001600160401b038311848410176100895780849260209460405283398101031261008557516001600160a01b038116810361008557608052604051610593908161009e823960805181818160770152818161012301528181610196015281816102f001526103c10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436106103b7575f3560e01c80633659cfe61461005b5780634f1ef286146100565780635c60da1b14610051578063d1f578941461004c5763f851a440036103b7576102de565b61026c565b610183565b6100ce565b346100b45760203660031901126100b4576100746100b8565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af576100ad9061048f565b005b6103b7565b5f80fd5b600435906001600160a01b03821682036100b457565b60403660031901126100b4576100e26100b8565b60243567ffffffffffffffff81116100b457366023820112156100b45780600401359167ffffffffffffffff83116100b45736602484840101116100b457337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af5760245f939284936101608461048f565b80604051938493018337810184815203915af461017b610333565b50156100b457005b346100b4575f3660031901126100b457337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316036100af5760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b0360405191168152f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff81118382101761024b57604052565b6101f8565b67ffffffffffffffff811161024b57601f01601f191660200190565b60403660031901126100b4576102806100b8565b6024359067ffffffffffffffff82116100b457366023830112156100b4578160040135906102b56102b083610250565b610225565b9180835236602482860101116100b4576020815f9260246100ad97018387013784010152610358565b346100b4575f3660031901126100b4577f0000000000000000000000000000000000000000000000000000000000000000336001600160a01b038216036100af576020906001600160a01b0360405191168152f35b3d15610353573d906103476102b083610250565b9182523d5f602084013e565b606090565b906001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54166100b457610391826104c8565b80518061039d57505050565b5f926020849301905af46103af610333565b50156100b457565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314610425575f807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54368280378136915af43d5f803e15610421573d5ff35b3d5ffd5b608460405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e00000000000000000000000000006064820152fd5b6001600160a01b03906104a1816104c8565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2565b803b156104f3577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b608460405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea26469706673582212203269e5b35c052ae9fa3553486482a602f3dc3d352e5d28cd4e7e75f5b1f46d3a64736f6c634300081b0033a264697066735822122066b8c0cd77ed8ac4fdc268aa20e77b8e4894a53b64ed02ac22d6f6fd10c540c564736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000055072696d65000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : marketId (string): Prime
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [2] : 5072696d65000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in HYPE
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.