Overview
ETH Balance
ETH Value
$0.00Latest 24 from a total of 24 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 158791738 | 785 days ago | IN | 0 ETH | 0.0000559 | ||||
| Set Pool Admin | 120759122 | 905 days ago | IN | 0 ETH | 0.00002625 | ||||
| Set Pool Admin | 83265704 | 1016 days ago | IN | 0 ETH | 0.00006319 | ||||
| Set Pool Admin | 83265696 | 1016 days ago | IN | 0 ETH | 0.00006319 | ||||
| Set Pool Admin | 83265646 | 1016 days ago | IN | 0 ETH | 0.00006319 | ||||
| Set Pool Admin | 83265638 | 1016 days ago | IN | 0 ETH | 0.00006319 | ||||
| Transfer Ownersh... | 75407068 | 1039 days ago | IN | 0 ETH | 0.00004272 | ||||
| Set Emergency Ad... | 75406489 | 1039 days ago | IN | 0 ETH | 0.00004287 | ||||
| Set Pool Admin | 75405732 | 1039 days ago | IN | 0 ETH | 0.00004745 | ||||
| Set Pool Admin | 72886176 | 1047 days ago | IN | 0 ETH | 0.00034642 | ||||
| Set Liquidation ... | 71246822 | 1051 days ago | IN | 0 ETH | 0.00002757 | ||||
| Set Emergency Ad... | 71246790 | 1051 days ago | IN | 0 ETH | 0.00002768 | ||||
| Set Pool Admin | 71246787 | 1051 days ago | IN | 0 ETH | 0.00002768 | ||||
| Set Address | 71246614 | 1051 days ago | IN | 0 ETH | 0.00003531 | ||||
| Set Lending Pool... | 71246610 | 1051 days ago | IN | 0 ETH | 0.00002967 | ||||
| Set Pool Admin | 71246597 | 1051 days ago | IN | 0 ETH | 0.00002796 | ||||
| Set Pool Admin | 71246588 | 1051 days ago | IN | 0 ETH | 0.00002796 | ||||
| Set Lending Rate... | 71246365 | 1051 days ago | IN | 0 ETH | 0.00002967 | ||||
| Set Price Oracle | 71246353 | 1051 days ago | IN | 0 ETH | 0.00002967 | ||||
| Set Lending Pool... | 71246249 | 1051 days ago | IN | 0 ETH | 0.00008397 | ||||
| Set Lending Pool... | 71246239 | 1051 days ago | IN | 0 ETH | 0.00009032 | ||||
| Set Liquidation ... | 71246204 | 1051 days ago | IN | 0 ETH | 0.00002785 | ||||
| Set Emergency Ad... | 71246200 | 1051 days ago | IN | 0 ETH | 0.00002967 | ||||
| Set Pool Admin | 71246195 | 1051 days ago | IN | 0 ETH | 0.00002967 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 72086665 | 1049 days ago | 0 ETH | ||||
| 72086613 | 1049 days ago | 0 ETH | ||||
| 72086613 | 1049 days ago | 0 ETH | ||||
| 72086613 | 1049 days ago | 0 ETH | ||||
| 72086613 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086559 | 1049 days ago | 0 ETH | ||||
| 72086374 | 1049 days ago | 0 ETH | ||||
| 72086374 | 1049 days ago | 0 ETH | ||||
| 72086374 | 1049 days ago | 0 ETH | ||||
| 72086374 | 1049 days ago | 0 ETH | ||||
| 72086307 | 1049 days ago | 0 ETH | ||||
| 72086200 | 1049 days ago | 0 ETH | ||||
| 72086200 | 1049 days ago | 0 ETH | ||||
| 72086200 | 1049 days ago | 0 ETH | ||||
| 72086200 | 1049 days ago | 0 ETH | ||||
| 72086200 | 1049 days ago | 0 ETH | ||||
| 72086141 | 1049 days ago | 0 ETH | ||||
| 72086141 | 1049 days ago | 0 ETH | ||||
| 72086141 | 1049 days ago | 0 ETH | ||||
| 72086141 | 1049 days ago | 0 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.12;
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";
/**
* @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) {
_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 override 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 override 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 override 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 override onlyOwner {
_addresses[id] = newAddress;
emit AddressSet(id, newAddress, false);
}
/**
* @dev Returns an address by id
* @return The address
*/
function getAddress(bytes32 id) public view override returns (address) {
return _addresses[id];
}
/**
* @dev Returns the address of the LendingPool proxy
* @return The LendingPool proxy address
**/
function getLendingPool() external view override 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 override 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 override 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 override 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 override 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 override 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 override returns (address) {
return getAddress(POOL_ADMIN);
}
function setPoolAdmin(address admin) external override onlyOwner {
_addresses[POOL_ADMIN] = admin;
emit ConfigurationAdminUpdated(admin);
}
function getEmergencyAdmin() external view override returns (address) {
return getAddress(EMERGENCY_ADMIN);
}
function setEmergencyAdmin(address emergencyAdmin) external override onlyOwner {
_addresses[EMERGENCY_ADMIN] = emergencyAdmin;
emit EmergencyAdminUpdated(emergencyAdmin);
}
function getPriceOracle() external view override returns (address) {
return getAddress(PRICE_ORACLE);
}
function setPriceOracle(address priceOracle) external override onlyOwner {
_addresses[PRICE_ORACLE] = priceOracle;
emit PriceOracleUpdated(priceOracle);
}
function getLendingRateOracle() external view override returns (address) {
return getAddress(LENDING_RATE_ORACLE);
}
function setLendingRateOracle(address lendingRateOracle) external override onlyOwner {
_addresses[LENDING_RATE_ORACLE] = lendingRateOracle;
emit LendingRateOracleUpdated(lendingRateOracle);
}
function getLiquidationFeeTo() external view override returns (address) {
return _liquidationFeeTo;
}
function setLiquidationFeeTo(address liquidationFeeTo) external override 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.encodeWithSignature("initialize(address)", 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 v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../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.
*
* By default, the owner account will be the one that deploys the contract. 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;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @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 {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing 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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_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 v4.8.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @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://diligence.consensys.net/posts/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.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @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, it is bubbled up by this
* function (like regular Solidity function calls).
*
* 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.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @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`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) 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(errorMessage);
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @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;
}
}// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.8.12;
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(Address.isContract(newImplementation), "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.12;
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.12;
/**
* @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.12;
/**
* @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.12;
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.12;
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();
}
}{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 1000
},
"remappings": [],
"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"},{"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
60806040523480156200001157600080fd5b5060405162001d1638038062001d16833981016040819052620000349162000208565b6200003f3362000077565b6200004a81620000c7565b50600380546001600160a01b03191673f90c69d16599a5c657a05fe76cd22fd9cab4459817905562000332565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051620000dc90600190602084019062000119565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040516200010e9190620002c0565b60405180910390a150565b8280546200012790620002f5565b90600052602060002090601f0160209004810192826200014b576000855562000196565b82601f106200016657805160ff191683800117855562000196565b8280016001018555821562000196579182015b828111156200019657825182559160200191906001019062000179565b50620001a4929150620001a8565b5090565b5b80821115620001a45760008155600101620001a9565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620001f2578181015183820152602001620001d8565b8381111562000202576000848401525b50505050565b6000602082840312156200021b57600080fd5b81516001600160401b03808211156200023357600080fd5b818401915084601f8301126200024857600080fd5b8151818111156200025d576200025d620001bf565b604051601f8201601f19908116603f01168101908382118183101715620002885762000288620001bf565b81604052828152876020848701011115620002a257600080fd5b620002b5836020830160208801620001d5565b979650505050505050565b6020815260008251806020840152620002e1816040850160208701620001d5565b601f01601f19169190910160400192915050565b600181811c908216806200030a57607f821691505b602082108114156200032c57634e487b7160e01b600052602260045260246000fd5b50919050565b6119d480620003426000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063ca446dd91161008c578063f2fde38b11610066578063f2fde38b146104d0578063f67b1847146104e3578063fca513a8146104f657600080fd5b8063ca446dd914610451578063ddcaa9ea14610464578063e216ab44146104bd57600080fd5b80638da5cb5b116100bd5780638da5cb5b146103e7578063aecda378146103f8578063c12542df1461043e57600080fd5b8063715018a614610373578063820d12741461037b57806385c858b11461038e57600080fd5b8063530e784f116101455780635afaf0181161011f5780635afaf018146102f65780635dcc528c14610307578063712d91711461031a57600080fd5b8063530e784f146102bb578063568ef470146102ce5780635aef021f146102e357600080fd5b806335da33941161017657806335da33941461023c5780633618abba1461024f578063398e5553146102a857600080fd5b80630261bf8b1461019d57806321f8a721146101fe578063283d62ad14610227575b600080fd5b6b13115391125391d7d413d3d360a21b60005260026020527fe5bdb40dea1fe80924bcdf7c070aa283f3cb94408a3870bba2d2fbfbae6b6df7546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6101e161020c366004610ee7565b6000908152600260205260409020546001600160a01b031690565b61023a610235366004610f1c565b61053e565b005b61023a61024a366004610f1c565b6105c6565b7f4c454e44494e475f524154455f4f5241434c450000000000000000000000000060005260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf546001600160a01b03166101e1565b61023a6102b6366004610f1c565b610661565b61023a6102c9366004610f1c565b6106fc565b6102d6610786565b6040516101f59190610f8b565b61023a6102f1366004610f1c565b610818565b6003546001600160a01b03166101e1565b61023a610315366004610f9e565b610870565b7f434f4c4c41544552414c5f4d414e41474552000000000000000000000000000060005260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c546001600160a01b03166101e1565b61023a6108cb565b61023a610389366004610f1c565b6108df565b7f4c454e44494e475f504f4f4c5f434f4e464947555241544f520000000000000060005260026020527fa7ee63b7e982611b7328b48e2a71eb802e32b6d69f2ab9bbc22491778c80029c546001600160a01b03166101e1565b6000546001600160a01b03166101e1565b692827a7a62fa0a226a4a760b11b60005260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c546001600160a01b03166101e1565b61023a61044c366004610f1c565b61097a565b61023a61045f366004610f9e565b6109e3565b7f454d455247454e43595f41444d494e000000000000000000000000000000000060005260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc546001600160a01b03166101e1565b61023a6104cb366004610f1c565b610a4c565b61023a6104de366004610f1c565b610a76565b61023a6104f1366004610fe0565b610b0b565b6b50524943455f4f5241434c4560a01b60005260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd63546001600160a01b03166101e1565b610546610b1c565b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b6105ce610b1c565b7f454d455247454e43595f41444d494e0000000000000000000000000000000000600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b610669610b1c565b7f434f4c4c41544552414c5f4d414e414745520000000000000000000000000000600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b610704610b1c565b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60606001805461079590611091565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611091565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b5050505050905090565b610820610b1c565b6108396b13115391125391d7d413d3d360a21b82610b76565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610878610b1c565b6108828282610b76565b60408051838152600160208201526001600160a01b038316917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191015b60405180910390a25050565b6108d3610b1c565b6108dd6000610da3565b565b6108e7610b1c565b7f4c454e44494e475f524154455f4f5241434c4500000000000000000000000000600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b610982610b1c565b6109ac7f4c454e44494e475f504f4f4c5f434f4e464947555241544f520000000000000082610b76565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b6109eb610b1c565b600082815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558151868152928301939093527ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191016108bf565b610a54610b1c565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610a7e610b1c565b6001600160a01b038116610aff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610b0881610da3565b50565b610b13610b1c565b610b0881610df3565b6000546001600160a01b031633146108dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610af6565b6000828152600260205260408082205490513060248201526001600160a01b0390911691829160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905290506001600160a01b038316610d225730604051610c1490610e41565b6001600160a01b039091168152602001604051809103906000f080158015610c40573d6000803e3d6000fd5b506040517fd1f578940000000000000000000000000000000000000000000000000000000081529092506001600160a01b0383169063d1f5789490610c8b90879085906004016110cc565b600060405180830381600087803b158015610ca557600080fd5b505af1158015610cb9573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b03871690811790915591518881529192507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438910160405180910390a2610d9c565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03831690634f1ef28690610d6990879085906004016110cc565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b505050505b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051610e06906001906020840190610e4e565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee79981604051610e369190610f8b565b60405180910390a150565b6108a8806110f783390190565b828054610e5a90611091565b90600052602060002090601f016020900481019282610e7c5760008555610ec2565b82601f10610e9557805160ff1916838001178555610ec2565b82800160010185558215610ec2579182015b82811115610ec2578251825591602001919060010190610ea7565b50610ece929150610ed2565b5090565b5b80821115610ece5760008155600101610ed3565b600060208284031215610ef957600080fd5b5035919050565b80356001600160a01b0381168114610f1757600080fd5b919050565b600060208284031215610f2e57600080fd5b610f3782610f00565b9392505050565b6000815180845260005b81811015610f6457602081850181015186830182015201610f48565b81811115610f76576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610f376020830184610f3e565b60008060408385031215610fb157600080fd5b82359150610fc160208401610f00565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610ff257600080fd5b813567ffffffffffffffff8082111561100a57600080fd5b818401915084601f83011261101e57600080fd5b81358181111561103057611030610fca565b604051601f8201601f19908116603f0116810190838211818310171561105857611058610fca565b8160405282815287602084870101111561107157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c908216806110a557607f821691505b602082108114156110c657634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03831681526040602082015260006110ee6040830184610f3e565b94935050505056fe60a060405234801561001057600080fd5b506040516108a83803806108a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516107fa6100ae600039600081816101350152818161017a01528181610233015281816103a9015281816103d2015261051101526107fa6000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100c8578063f851a440146100db5761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100f0565b005b34801561007057600080fd5b5061006261007f3660046105c1565b61012a565b6100626100923660046105e3565b61016f565b3480156100a357600080fd5b506100ac610226565b6040516001600160a01b03909116815260200160405180910390f35b6100626100d636600461067c565b61028a565b3480156100e757600080fd5b506100ac61039c565b6100f86103f4565b6101286101237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6103fc565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101675761016481610420565b50565b6101646100f0565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610219576101a983610420565b6000836001600160a01b031683836040516101c592919061073e565b600060405180830381855af49150503d8060008114610200576040519150601f19603f3d011682016040523d82523d6000602084013e610205565b606091505b505090508061021357600080fd5b50505050565b6102216100f0565b505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561027f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102876100f0565b90565b60006102b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146102c757600080fd5b6102f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61074e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461032057610320610773565b61032982610460565b805115610398576000826001600160a01b03168260405161034a9190610789565b600060405180830381855af49150503d8060008114610385576040519150601f19603f3d011682016040523d82523d6000602084013e61038a565b606091505b505090508061022157600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561027f57507f000000000000000000000000000000000000000000000000000000000000000090565b610128610506565b3660008037600080366000845af43d6000803e80801561041b573d6000f35b3d6000fd5b61042981610460565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381163b6104e25760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101285760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e000000000000000000000000000060648201526084016104d9565b80356001600160a01b03811681146105bc57600080fd5b919050565b6000602082840312156105d357600080fd5b6105dc826105a5565b9392505050565b6000806000604084860312156105f857600080fd5b610601846105a5565b9250602084013567ffffffffffffffff8082111561061e57600080fd5b818601915086601f83011261063257600080fd5b81358181111561064157600080fd5b87602082850101111561065357600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561068f57600080fd5b610698836105a5565b9150602083013567ffffffffffffffff808211156106b557600080fd5b818501915085601f8301126106c957600080fd5b8135818111156106db576106db610666565b604051601f8201601f19908116603f0116810190838211818310171561070357610703610666565b8160405282815288602084870101111561071c57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b60008282101561076e57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825160005b818110156107aa5760208186018101518583015201610790565b818111156107b9576000828501525b50919091019291505056fea264697066735822122042e28d728a899bce17dd811b4fea918cccc026ea931fafa4186c5407bbe6da0864736f6c634300080c0033a264697066735822122052b0e30b582781e8b43ca177248d16ed2c2dd232f431230039fc8db1ac9d34a564736f6c634300080c00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000752616469616e7400000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063ca446dd91161008c578063f2fde38b11610066578063f2fde38b146104d0578063f67b1847146104e3578063fca513a8146104f657600080fd5b8063ca446dd914610451578063ddcaa9ea14610464578063e216ab44146104bd57600080fd5b80638da5cb5b116100bd5780638da5cb5b146103e7578063aecda378146103f8578063c12542df1461043e57600080fd5b8063715018a614610373578063820d12741461037b57806385c858b11461038e57600080fd5b8063530e784f116101455780635afaf0181161011f5780635afaf018146102f65780635dcc528c14610307578063712d91711461031a57600080fd5b8063530e784f146102bb578063568ef470146102ce5780635aef021f146102e357600080fd5b806335da33941161017657806335da33941461023c5780633618abba1461024f578063398e5553146102a857600080fd5b80630261bf8b1461019d57806321f8a721146101fe578063283d62ad14610227575b600080fd5b6b13115391125391d7d413d3d360a21b60005260026020527fe5bdb40dea1fe80924bcdf7c070aa283f3cb94408a3870bba2d2fbfbae6b6df7546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b6101e161020c366004610ee7565b6000908152600260205260409020546001600160a01b031690565b61023a610235366004610f1c565b61053e565b005b61023a61024a366004610f1c565b6105c6565b7f4c454e44494e475f524154455f4f5241434c450000000000000000000000000060005260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf546001600160a01b03166101e1565b61023a6102b6366004610f1c565b610661565b61023a6102c9366004610f1c565b6106fc565b6102d6610786565b6040516101f59190610f8b565b61023a6102f1366004610f1c565b610818565b6003546001600160a01b03166101e1565b61023a610315366004610f9e565b610870565b7f434f4c4c41544552414c5f4d414e41474552000000000000000000000000000060005260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c546001600160a01b03166101e1565b61023a6108cb565b61023a610389366004610f1c565b6108df565b7f4c454e44494e475f504f4f4c5f434f4e464947555241544f520000000000000060005260026020527fa7ee63b7e982611b7328b48e2a71eb802e32b6d69f2ab9bbc22491778c80029c546001600160a01b03166101e1565b6000546001600160a01b03166101e1565b692827a7a62fa0a226a4a760b11b60005260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c546001600160a01b03166101e1565b61023a61044c366004610f1c565b61097a565b61023a61045f366004610f9e565b6109e3565b7f454d455247454e43595f41444d494e000000000000000000000000000000000060005260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc546001600160a01b03166101e1565b61023a6104cb366004610f1c565b610a4c565b61023a6104de366004610f1c565b610a76565b61023a6104f1366004610fe0565b610b0b565b6b50524943455f4f5241434c4560a01b60005260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd63546001600160a01b03166101e1565b610546610b1c565b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b6105ce610b1c565b7f454d455247454e43595f41444d494e0000000000000000000000000000000000600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b610669610b1c565b7f434f4c4c41544552414c5f4d414e414745520000000000000000000000000000600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b610704610b1c565b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60606001805461079590611091565b80601f01602080910402602001604051908101604052809291908181526020018280546107c190611091565b801561080e5780601f106107e35761010080835404028352916020019161080e565b820191906000526020600020905b8154815290600101906020018083116107f157829003601f168201915b5050505050905090565b610820610b1c565b6108396b13115391125391d7d413d3d360a21b82610b76565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610878610b1c565b6108828282610b76565b60408051838152600160208201526001600160a01b038316917ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191015b60405180910390a25050565b6108d3610b1c565b6108dd6000610da3565b565b6108e7610b1c565b7f4c454e44494e475f524154455f4f5241434c4500000000000000000000000000600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b610982610b1c565b6109ac7f4c454e44494e475f504f4f4c5f434f4e464947555241544f520000000000000082610b76565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b6109eb610b1c565b600082815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558151868152928301939093527ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff3191016108bf565b610a54610b1c565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b610a7e610b1c565b6001600160a01b038116610aff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610b0881610da3565b50565b610b13610b1c565b610b0881610df3565b6000546001600160a01b031633146108dd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610af6565b6000828152600260205260408082205490513060248201526001600160a01b0390911691829160440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de80000000000000000000000000000000000000000000000000000000017905290506001600160a01b038316610d225730604051610c1490610e41565b6001600160a01b039091168152602001604051809103906000f080158015610c40573d6000803e3d6000fd5b506040517fd1f578940000000000000000000000000000000000000000000000000000000081529092506001600160a01b0383169063d1f5789490610c8b90879085906004016110cc565b600060405180830381600087803b158015610ca557600080fd5b505af1158015610cb9573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b03871690811790915591518881529192507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e231142438910160405180910390a2610d9c565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03831690634f1ef28690610d6990879085906004016110cc565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b505050505b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8051610e06906001906020840190610e4e565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee79981604051610e369190610f8b565b60405180910390a150565b6108a8806110f783390190565b828054610e5a90611091565b90600052602060002090601f016020900481019282610e7c5760008555610ec2565b82601f10610e9557805160ff1916838001178555610ec2565b82800160010185558215610ec2579182015b82811115610ec2578251825591602001919060010190610ea7565b50610ece929150610ed2565b5090565b5b80821115610ece5760008155600101610ed3565b600060208284031215610ef957600080fd5b5035919050565b80356001600160a01b0381168114610f1757600080fd5b919050565b600060208284031215610f2e57600080fd5b610f3782610f00565b9392505050565b6000815180845260005b81811015610f6457602081850181015186830182015201610f48565b81811115610f76576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610f376020830184610f3e565b60008060408385031215610fb157600080fd5b82359150610fc160208401610f00565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610ff257600080fd5b813567ffffffffffffffff8082111561100a57600080fd5b818401915084601f83011261101e57600080fd5b81358181111561103057611030610fca565b604051601f8201601f19908116603f0116810190838211818310171561105857611058610fca565b8160405282815287602084870101111561107157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c908216806110a557607f821691505b602082108114156110c657634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03831681526040602082015260006110ee6040830184610f3e565b94935050505056fe60a060405234801561001057600080fd5b506040516108a83803806108a883398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516107fa6100ae600039600081816101350152818161017a01528181610233015281816103a9015281816103d2015261051101526107fa6000f3fe60806040526004361061005a5760003560e01c80635c60da1b116100435780635c60da1b14610097578063d1f57894146100c8578063f851a440146100db5761005a565b80633659cfe6146100645780634f1ef28614610084575b6100626100f0565b005b34801561007057600080fd5b5061006261007f3660046105c1565b61012a565b6100626100923660046105e3565b61016f565b3480156100a357600080fd5b506100ac610226565b6040516001600160a01b03909116815260200160405180910390f35b6100626100d636600461067c565b61028a565b3480156100e757600080fd5b506100ac61039c565b6100f86103f4565b6101286101237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6103fc565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101675761016481610420565b50565b6101646100f0565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610219576101a983610420565b6000836001600160a01b031683836040516101c592919061073e565b600060405180830381855af49150503d8060008114610200576040519150601f19603f3d011682016040523d82523d6000602084013e610205565b606091505b505090508061021357600080fd5b50505050565b6102216100f0565b505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561027f57507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6102876100f0565b90565b60006102b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146102c757600080fd5b6102f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61074e565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc1461032057610320610773565b61032982610460565b805115610398576000826001600160a01b03168260405161034a9190610789565b600060405180830381855af49150503d8060008114610385576040519150601f19603f3d011682016040523d82523d6000602084013e61038a565b606091505b505090508061022157600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561027f57507f000000000000000000000000000000000000000000000000000000000000000090565b610128610506565b3660008037600080366000845af43d6000803e80801561041b573d6000f35b3d6000fd5b61042981610460565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381163b6104e25760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156101285760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e20667260448201527f6f6d207468652070726f78792061646d696e000000000000000000000000000060648201526084016104d9565b80356001600160a01b03811681146105bc57600080fd5b919050565b6000602082840312156105d357600080fd5b6105dc826105a5565b9392505050565b6000806000604084860312156105f857600080fd5b610601846105a5565b9250602084013567ffffffffffffffff8082111561061e57600080fd5b818601915086601f83011261063257600080fd5b81358181111561064157600080fd5b87602082850101111561065357600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561068f57600080fd5b610698836105a5565b9150602083013567ffffffffffffffff808211156106b557600080fd5b818501915085601f8301126106c957600080fd5b8135818111156106db576106db610666565b604051601f8201601f19908116603f0116810190838211818310171561070357610703610666565b8160405282815288602084870101111561071c57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b8183823760009101908152919050565b60008282101561076e57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825160005b818110156107aa5760208186018101518583015201610790565b818111156107b9576000828501525b50919091019291505056fea264697066735822122042e28d728a899bce17dd811b4fea918cccc026ea931fafa4186c5407bbe6da0864736f6c634300080c0033a264697066735822122052b0e30b582781e8b43ca177248d16ed2c2dd232f431230039fc8db1ac9d34a564736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000752616469616e7400000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : marketId (string): Radiant
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [2] : 52616469616e7400000000000000000000000000000000000000000000000000
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.