Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Multichain Info
N/A
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PoolAddressesProviderRegistry
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 100000 runs
Other Settings:
berlin EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.10;
import {Ownable} from '../../dependencies/openzeppelin/contracts/Ownable.sol';
import {Errors} from '../libraries/helpers/Errors.sol';
import {IPoolAddressesProviderRegistry} from '../../interfaces/IPoolAddressesProviderRegistry.sol';
/**
* @title PoolAddressesProviderRegistry
* @author Aave
* @notice Main registry of PoolAddressesProvider of Aave markets.
* @dev Used for indexing purposes of Aave protocol's markets. The id assigned to a PoolAddressesProvider refers to the
* market it is connected with, for example with `1` for the Aave main market and `2` for the next created.
*/
contract PoolAddressesProviderRegistry is Ownable, IPoolAddressesProviderRegistry {
// Map of address provider ids (addressesProvider => id)
mapping(address => uint256) private _addressesProviderToId;
// Map of id to address provider (id => addressesProvider)
mapping(uint256 => address) private _idToAddressesProvider;
// List of addresses providers
address[] private _addressesProvidersList;
// Map of address provider list indexes (addressesProvider => indexInList)
mapping(address => uint256) private _addressesProvidersIndexes;
/**
* @dev Constructor.
* @param owner The owner address of this contract.
*/
constructor(address owner) {
transferOwnership(owner);
}
/// @inheritdoc IPoolAddressesProviderRegistry
function getAddressesProvidersList() external view override returns (address[] memory) {
return _addressesProvidersList;
}
/// @inheritdoc IPoolAddressesProviderRegistry
function registerAddressesProvider(address provider, uint256 id) external override onlyOwner {
require(id != 0, Errors.INVALID_ADDRESSES_PROVIDER_ID);
require(_idToAddressesProvider[id] == address(0), Errors.INVALID_ADDRESSES_PROVIDER_ID);
require(_addressesProviderToId[provider] == 0, Errors.ADDRESSES_PROVIDER_ALREADY_ADDED);
_addressesProviderToId[provider] = id;
_idToAddressesProvider[id] = provider;
_addToAddressesProvidersList(provider);
emit AddressesProviderRegistered(provider, id);
}
/// @inheritdoc IPoolAddressesProviderRegistry
function unregisterAddressesProvider(address provider) external override onlyOwner {
require(_addressesProviderToId[provider] != 0, Errors.ADDRESSES_PROVIDER_NOT_REGISTERED);
uint256 oldId = _addressesProviderToId[provider];
_idToAddressesProvider[oldId] = address(0);
_addressesProviderToId[provider] = 0;
_removeFromAddressesProvidersList(provider);
emit AddressesProviderUnregistered(provider, oldId);
}
/// @inheritdoc IPoolAddressesProviderRegistry
function getAddressesProviderIdByAddress(
address addressesProvider
) external view override returns (uint256) {
return _addressesProviderToId[addressesProvider];
}
/// @inheritdoc IPoolAddressesProviderRegistry
function getAddressesProviderAddressById(uint256 id) external view override returns (address) {
return _idToAddressesProvider[id];
}
/**
* @notice Adds the addresses provider address to the list.
* @param provider The address of the PoolAddressesProvider
*/
function _addToAddressesProvidersList(address provider) internal {
_addressesProvidersIndexes[provider] = _addressesProvidersList.length;
_addressesProvidersList.push(provider);
}
/**
* @notice Removes the addresses provider address from the list.
* @param provider The address of the PoolAddressesProvider
*/
function _removeFromAddressesProvidersList(address provider) internal {
uint256 index = _addressesProvidersIndexes[provider];
_addressesProvidersIndexes[provider] = 0;
// Swap the index of the last addresses provider in the list with the index of the provider to remove
uint256 lastIndex = _addressesProvidersList.length - 1;
if (index < lastIndex) {
address lastProvider = _addressesProvidersList[lastIndex];
_addressesProvidersList[index] = lastProvider;
_addressesProvidersIndexes[lastProvider] = index;
}
_addressesProvidersList.pop();
}
}// SPDX-License-Identifier: MIT
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 GSN 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 payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import './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.
*/
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() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
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 {
emit OwnershipTransferred(_owner, address(0));
_owner = 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');
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}// SPDX-License-Identifier: AGPL-3.0
pragma solidity ^0.8.0;
/**
* @title IPoolAddressesProviderRegistry
* @author Aave
* @notice Defines the basic interface for an Aave Pool Addresses Provider Registry.
*/
interface IPoolAddressesProviderRegistry {
/**
* @dev Emitted when a new AddressesProvider is registered.
* @param addressesProvider The address of the registered PoolAddressesProvider
* @param id The id of the registered PoolAddressesProvider
*/
event AddressesProviderRegistered(address indexed addressesProvider, uint256 indexed id);
/**
* @dev Emitted when an AddressesProvider is unregistered.
* @param addressesProvider The address of the unregistered PoolAddressesProvider
* @param id The id of the unregistered PoolAddressesProvider
*/
event AddressesProviderUnregistered(address indexed addressesProvider, uint256 indexed id);
/**
* @notice Returns the list of registered addresses providers
* @return The list of addresses providers
*/
function getAddressesProvidersList() external view returns (address[] memory);
/**
* @notice Returns the id of a registered PoolAddressesProvider
* @param addressesProvider The address of the PoolAddressesProvider
* @return The id of the PoolAddressesProvider or 0 if is not registered
*/
function getAddressesProviderIdByAddress(
address addressesProvider
) external view returns (uint256);
/**
* @notice Returns the address of a registered PoolAddressesProvider
* @param id The id of the market
* @return The address of the PoolAddressesProvider with the given id or zero address if it is not registered
*/
function getAddressesProviderAddressById(uint256 id) external view returns (address);
/**
* @notice Registers an addresses provider
* @dev The PoolAddressesProvider must not already be registered in the registry
* @dev The id must not be used by an already registered PoolAddressesProvider
* @param provider The address of the new PoolAddressesProvider
* @param id The id for the new PoolAddressesProvider, referring to the market it belongs to
*/
function registerAddressesProvider(address provider, uint256 id) external;
/**
* @notice Removes an addresses provider from the list of registered addresses providers
* @param provider The PoolAddressesProvider address
*/
function unregisterAddressesProvider(address provider) external;
}// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
/**
* @title Errors library
* @author Aave
* @notice Defines the error messages emitted by the different contracts of the Aave protocol
*/
library Errors {
string public constant CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin'
string public constant CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergency admin'
string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool or emergency admin'
string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pool admin'
string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not an asset listing or pool admin'
string public constant CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge'
string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered'
string public constant INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider'
string public constant NOT_CONTRACT = '9'; // 'Address is not a contract'
string public constant CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the pool configurator'
string public constant CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken'
string public constant INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider is invalid'
string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloan executor function'
string public constant RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list'
string public constant NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached'
string public constant EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatile heterogeneous assets'
string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset'
string public constant RESERVE_LIQUIDITY_NOT_ZERO = '18'; // 'The liquidity of the reserve needs to be 0'
string public constant FLASHLOAN_PREMIUM_INVALID = '19'; // 'Invalid flashloan premium'
string public constant INVALID_RESERVE_PARAMS = '20'; // 'Invalid risk parameters for the reserve'
string public constant INVALID_EMODE_CATEGORY_PARAMS = '21'; // 'Invalid risk parameters for the eMode category'
string public constant BRIDGE_PROTOCOL_FEE_INVALID = '22'; // 'Invalid bridge protocol fee'
string public constant CALLER_MUST_BE_POOL = '23'; // 'The caller of this function must be a pool'
string public constant INVALID_MINT_AMOUNT = '24'; // 'Invalid amount to mint'
string public constant INVALID_BURN_AMOUNT = '25'; // 'Invalid amount to burn'
string public constant INVALID_AMOUNT = '26'; // 'Amount must be greater than 0'
string public constant RESERVE_INACTIVE = '27'; // 'Action requires an active reserve'
string public constant RESERVE_FROZEN = '28'; // 'Action cannot be performed because the reserve is frozen'
string public constant RESERVE_PAUSED = '29'; // 'Action cannot be performed because the reserve is paused'
string public constant BORROWING_NOT_ENABLED = '30'; // 'Borrowing is not enabled'
string public constant STABLE_BORROWING_NOT_ENABLED = '31'; // 'Stable borrowing is not enabled'
string public constant NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32'; // 'User cannot withdraw more than the available balance'
string public constant INVALID_INTEREST_RATE_MODE_SELECTED = '33'; // 'Invalid interest rate mode selected'
string public constant COLLATERAL_BALANCE_IS_ZERO = '34'; // 'The collateral balance is 0'
string public constant HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35'; // 'Health factor is lesser than the liquidation threshold'
string public constant COLLATERAL_CANNOT_COVER_NEW_BORROW = '36'; // 'There is not enough collateral to cover a new borrow'
string public constant COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37'; // 'Collateral is (mostly) the same currency that is being borrowed'
string public constant AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38'; // 'The requested amount is greater than the max loan size in stable rate mode'
string public constant NO_DEBT_OF_SELECTED_TYPE = '39'; // 'For repayment of a specific type of debt, the user needs to have debt that type'
string public constant NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40'; // 'To repay on behalf of a user an explicit amount to repay is needed'
string public constant NO_OUTSTANDING_STABLE_DEBT = '41'; // 'User does not have outstanding stable rate debt on this reserve'
string public constant NO_OUTSTANDING_VARIABLE_DEBT = '42'; // 'User does not have outstanding variable rate debt on this reserve'
string public constant UNDERLYING_BALANCE_ZERO = '43'; // 'The underlying balance needs to be greater than 0'
string public constant INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44'; // 'Interest rate rebalance conditions were not met'
string public constant HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45'; // 'Health factor is not below the threshold'
string public constant COLLATERAL_CANNOT_BE_LIQUIDATED = '46'; // 'The collateral chosen cannot be liquidated'
string public constant SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47'; // 'User did not borrow the specified currency'
string public constant INCONSISTENT_FLASHLOAN_PARAMS = '49'; // 'Inconsistent flashloan parameters'
string public constant BORROW_CAP_EXCEEDED = '50'; // 'Borrow cap is exceeded'
string public constant SUPPLY_CAP_EXCEEDED = '51'; // 'Supply cap is exceeded'
string public constant UNBACKED_MINT_CAP_EXCEEDED = '52'; // 'Unbacked mint cap is exceeded'
string public constant DEBT_CEILING_EXCEEDED = '53'; // 'Debt ceiling is exceeded'
string public constant UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO = '54'; // 'Claimable rights over underlying not zero (aToken supply or accruedToTreasury)'
string public constant STABLE_DEBT_NOT_ZERO = '55'; // 'Stable debt supply is not zero'
string public constant VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56'; // 'Variable debt supply is not zero'
string public constant LTV_VALIDATION_FAILED = '57'; // 'Ltv validation failed'
string public constant INCONSISTENT_EMODE_CATEGORY = '58'; // 'Inconsistent eMode category'
string public constant PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59'; // 'Price oracle sentinel validation failed'
string public constant ASSET_NOT_BORROWABLE_IN_ISOLATION = '60'; // 'Asset is not borrowable in isolation mode'
string public constant RESERVE_ALREADY_INITIALIZED = '61'; // 'Reserve has already been initialized'
string public constant USER_IN_ISOLATION_MODE_OR_LTV_ZERO = '62'; // 'User is in isolation mode or ltv is zero'
string public constant INVALID_LTV = '63'; // 'Invalid ltv parameter for the reserve'
string public constant INVALID_LIQ_THRESHOLD = '64'; // 'Invalid liquidity threshold parameter for the reserve'
string public constant INVALID_LIQ_BONUS = '65'; // 'Invalid liquidity bonus parameter for the reserve'
string public constant INVALID_DECIMALS = '66'; // 'Invalid decimals parameter of the underlying asset of the reserve'
string public constant INVALID_RESERVE_FACTOR = '67'; // 'Invalid reserve factor parameter for the reserve'
string public constant INVALID_BORROW_CAP = '68'; // 'Invalid borrow cap for the reserve'
string public constant INVALID_SUPPLY_CAP = '69'; // 'Invalid supply cap for the reserve'
string public constant INVALID_LIQUIDATION_PROTOCOL_FEE = '70'; // 'Invalid liquidation protocol fee for the reserve'
string public constant INVALID_EMODE_CATEGORY = '71'; // 'Invalid eMode category for the reserve'
string public constant INVALID_UNBACKED_MINT_CAP = '72'; // 'Invalid unbacked mint cap for the reserve'
string public constant INVALID_DEBT_CEILING = '73'; // 'Invalid debt ceiling for the reserve
string public constant INVALID_RESERVE_INDEX = '74'; // 'Invalid reserve index'
string public constant ACL_ADMIN_CANNOT_BE_ZERO = '75'; // 'ACL admin cannot be set to the zero address'
string public constant INCONSISTENT_PARAMS_LENGTH = '76'; // 'Array parameters that should be equal length are not'
string public constant ZERO_ADDRESS_NOT_VALID = '77'; // 'Zero address not valid'
string public constant INVALID_EXPIRATION = '78'; // 'Invalid expiration'
string public constant INVALID_SIGNATURE = '79'; // 'Invalid signature'
string public constant OPERATION_NOT_SUPPORTED = '80'; // 'Operation not supported'
string public constant DEBT_CEILING_NOT_ZERO = '81'; // 'Debt ceiling is not zero'
string public constant ASSET_NOT_LISTED = '82'; // 'Asset is not listed'
string public constant INVALID_OPTIMAL_USAGE_RATIO = '83'; // 'Invalid optimal usage ratio'
string public constant INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84'; // 'Invalid optimal stable to total debt ratio'
string public constant UNDERLYING_CANNOT_BE_RESCUED = '85'; // 'The underlying asset cannot be rescued'
string public constant ADDRESSES_PROVIDER_ALREADY_ADDED = '86'; // 'Reserve has already been added to reserve list'
string public constant POOL_ADDRESSES_DO_NOT_MATCH = '87'; // 'The token implementation pool address and the pool address provided by the initializing pool do not match'
string public constant STABLE_BORROWING_ENABLED = '88'; // 'Stable borrowing is enabled'
string public constant SILOED_BORROWING_VIOLATION = '89'; // 'User is trying to borrow multiple assets including a siloed one'
string public constant RESERVE_DEBT_NOT_ZERO = '90'; // the total debt of the reserve needs to be 0
string public constant FLASHLOAN_DISABLED = '91'; // FlashLoaning for this asset is disabled
}{
"optimizer": {
"enabled": true,
"runs": 100000
},
"evmVersion": "berlin",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addressesProvider","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"AddressesProviderRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addressesProvider","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"AddressesProviderUnregistered","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"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getAddressesProviderAddressById","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addressesProvider","type":"address"}],"name":"getAddressesProviderIdByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddressesProvidersList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"registerAddressesProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"}],"name":"unregisterAddressesProvider","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b50604051610edf380380610edf83398101604081905261002f9161017a565b600080546001600160a01b03191633908117825560405190918291600080516020610ebf833981519152908290a3506100678161006d565b506101aa565b6000546001600160a01b031633146100cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166101315760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100c3565b600080546040516001600160a01b0380851693921691600080516020610ebf83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561018c57600080fd5b81516001600160a01b03811681146101a357600080fd5b9392505050565b610d06806101b96000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610123578063d0267be714610141578063d258191e14610185578063f2fde38b1461019857600080fd5b80630de267071461008d578063365ccbbf146100a257806357dc0566146100c0578063715018a61461011b575b600080fd5b6100a061009b366004610b02565b6101ab565b005b6100aa610375565b6040516100b79190610b24565b60405180910390f35b6100f66100ce366004610b7e565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b7565b6100a06103e4565b60005473ffffffffffffffffffffffffffffffffffffffff166100f6565b61017761014f366004610b02565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6040519081526020016100b7565b6100a0610193366004610b97565b6104d4565b6100a06101a6366004610b02565b6107c2565b60005473ffffffffffffffffffffffffffffffffffffffff163314610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160208181526040928390205483518085019094529183527f3700000000000000000000000000000000000000000000000000000000000000908301526102c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff8116600081815260016020818152604080842080548086526002845291852080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055948452919052915561032e82610973565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f254723080701bde71d562cad0e967cef23d86bb27ee842c190a2596820f3b24190600090a35050565b606060038054806020026020016040519081016040528092919081815260200182805480156103da57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103af575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b60408051808201909152600181527f38000000000000000000000000000000000000000000000000000000000000006020820152816105c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b50600081815260026020908152604091829020548251808401909352600183527f38000000000000000000000000000000000000000000000000000000000000009183019190915273ffffffffffffffffffffffffffffffffffffffff1615610657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604091829020548251808401909352600283527f383600000000000000000000000000000000000000000000000000000000000091830191909152156106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff821660008181526001602081815260408084208690558584526002825280842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915560038054878752600490945282862084905593830184559284527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180549092168417909155518392917fc2e7cc813550ef0e7126cc0571281850ce5df2e9c400acf3589c38e4627f85f191a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b73ffffffffffffffffffffffffffffffffffffffff81166108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610228565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081208054908290556003549091906109b090600190610c34565b905080821015610a6b576000600382815481106109cf576109cf610c72565b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169250829185908110610a0b57610a0b610c72565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559290911681526004909152604090208290555b6003805480610a7c57610a7c610ca1565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610afd57600080fd5b919050565b600060208284031215610b1457600080fd5b610b1d82610ad9565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610b7257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b40565b50909695505050505050565b600060208284031215610b9057600080fd5b5035919050565b60008060408385031215610baa57600080fd5b610bb383610ad9565b946020939093013593505050565b600060208083528351808285015260005b81811015610bee57858101830151858201604001528201610bd2565b81811115610c00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082821015610c6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ae87af9a343aa5822e76d4e64a0f5d975c7b88f93670d6dddfddc3a652b1a78464736f6c634300080a00338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000d2c6008f440d81fcf6c35dcc017959f94a9abf2f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610123578063d0267be714610141578063d258191e14610185578063f2fde38b1461019857600080fd5b80630de267071461008d578063365ccbbf146100a257806357dc0566146100c0578063715018a61461011b575b600080fd5b6100a061009b366004610b02565b6101ab565b005b6100aa610375565b6040516100b79190610b24565b60405180910390f35b6100f66100ce366004610b7e565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b7565b6100a06103e4565b60005473ffffffffffffffffffffffffffffffffffffffff166100f6565b61017761014f366004610b02565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6040519081526020016100b7565b6100a0610193366004610b97565b6104d4565b6100a06101a6366004610b02565b6107c2565b60005473ffffffffffffffffffffffffffffffffffffffff163314610231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160208181526040928390205483518085019094529183527f3700000000000000000000000000000000000000000000000000000000000000908301526102c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff8116600081815260016020818152604080842080548086526002845291852080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055948452919052915561032e82610973565b604051819073ffffffffffffffffffffffffffffffffffffffff8416907f254723080701bde71d562cad0e967cef23d86bb27ee842c190a2596820f3b24190600090a35050565b606060038054806020026020016040519081016040528092919081815260200182805480156103da57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103af575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b60408051808201909152600181527f38000000000000000000000000000000000000000000000000000000000000006020820152816105c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b50600081815260026020908152604091829020548251808401909352600183527f38000000000000000000000000000000000000000000000000000000000000009183019190915273ffffffffffffffffffffffffffffffffffffffff1615610657576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff8216600090815260016020908152604091829020548251808401909352600283527f383600000000000000000000000000000000000000000000000000000000000091830191909152156106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102289190610bc1565b5073ffffffffffffffffffffffffffffffffffffffff821660008181526001602081815260408084208690558584526002825280842080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116871790915560038054878752600490945282862084905593830184559284527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180549092168417909155518392917fc2e7cc813550ef0e7126cc0571281850ce5df2e9c400acf3589c38e4627f85f191a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610228565b73ffffffffffffffffffffffffffffffffffffffff81166108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610228565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081208054908290556003549091906109b090600190610c34565b905080821015610a6b576000600382815481106109cf576109cf610c72565b6000918252602090912001546003805473ffffffffffffffffffffffffffffffffffffffff9092169250829185908110610a0b57610a0b610c72565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559290911681526004909152604090208290555b6003805480610a7c57610a7c610ca1565b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055019055505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610afd57600080fd5b919050565b600060208284031215610b1457600080fd5b610b1d82610ad9565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610b7257835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b40565b50909695505050505050565b600060208284031215610b9057600080fd5b5035919050565b60008060408385031215610baa57600080fd5b610bb383610ad9565b946020939093013593505050565b600060208083528351808285015260005b81811015610bee57858101830151858201604001528201610bd2565b81811115610c00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600082821015610c6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ae87af9a343aa5822e76d4e64a0f5d975c7b88f93670d6dddfddc3a652b1a78464736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d2c6008f440d81fcf6c35dcc017959f94a9abf2f
-----Decoded View---------------
Arg [0] : owner (address): 0xd2C6008f440D81FCF6C35dcC017959F94a9aBf2f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2c6008f440d81fcf6c35dcc017959f94a9abf2f
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.