Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 61 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Configure Assets | 33199052 | 217 days ago | IN | 0 ETH | 0.00002138 | ||||
Configure Assets | 30963466 | 244 days ago | IN | 0 ETH | 0.0000362 | ||||
Configure Assets | 29388869 | 263 days ago | IN | 0 ETH | 0.00002379 | ||||
Configure Assets | 29388793 | 263 days ago | IN | 0 ETH | 0.00002712 | ||||
Configure Assets | 22820650 | 343 days ago | IN | 0 ETH | 0.00009064 | ||||
Configure Assets | 22820588 | 343 days ago | IN | 0 ETH | 0.00008677 | ||||
Configure Assets | 22820531 | 343 days ago | IN | 0 ETH | 0.0000527 | ||||
Configure Assets | 21391301 | 360 days ago | IN | 0 ETH | 0.00055477 | ||||
Configure Assets | 20654749 | 369 days ago | IN | 0 ETH | 0.000685 | ||||
Configure Assets | 20654667 | 369 days ago | IN | 0 ETH | 0.00040705 | ||||
Configure Assets | 20654645 | 369 days ago | IN | 0 ETH | 0.00069086 | ||||
Configure Assets | 20654611 | 369 days ago | IN | 0 ETH | 0.00069204 | ||||
Configure Assets | 20654573 | 369 days ago | IN | 0 ETH | 0.00067562 | ||||
Configure Assets | 20654038 | 369 days ago | IN | 0 ETH | 0.00060028 | ||||
Configure Assets | 20653971 | 369 days ago | IN | 0 ETH | 0.00077362 | ||||
Configure Assets | 20653877 | 369 days ago | IN | 0 ETH | 0.00076176 | ||||
Configure Assets | 18551788 | 394 days ago | IN | 0 ETH | 0.00158883 | ||||
Configure Assets | 18397804 | 396 days ago | IN | 0 ETH | 0.00012839 | ||||
Configure Assets | 18394677 | 396 days ago | IN | 0 ETH | 0.00014462 | ||||
Configure Assets | 18375835 | 396 days ago | IN | 0 ETH | 0.00033677 | ||||
Configure Assets | 17302196 | 409 days ago | IN | 0 ETH | 0.00024873 | ||||
Configure Assets | 15638662 | 429 days ago | IN | 0 ETH | 0.00010324 | ||||
Configure Assets | 15620296 | 429 days ago | IN | 0 ETH | 0.00013807 | ||||
Configure Assets | 15620019 | 429 days ago | IN | 0 ETH | 0.00010353 | ||||
Configure Assets | 15300907 | 433 days ago | IN | 0 ETH | 0.00007001 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8776665 | 510 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract contains unverified libraries: BorrowLogic, BridgeLogic, ConfiguratorLogic, EModeLogic, FlashLoanLogic, LiquidationLogic, PoolLogic, SupplyLogic
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
EmissionManager
Compiler Version
v0.8.12+commit.f00d7308
ZkSolc Version
v1.3.13
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; import {Ownable} from '@aave/core-v3/contracts/dependencies/openzeppelin/contracts/Ownable.sol'; import {IEACAggregatorProxy} from '../misc/interfaces/IEACAggregatorProxy.sol'; import {IEmissionManager} from './interfaces/IEmissionManager.sol'; import {ITransferStrategyBase} from './interfaces/ITransferStrategyBase.sol'; import {IRewardsController} from './interfaces/IRewardsController.sol'; import {RewardsDataTypes} from './libraries/RewardsDataTypes.sol'; /** * @title EmissionManager * @author Aave * @notice It manages the list of admins of reward emissions and provides functions to control reward emissions. */ contract EmissionManager is Ownable, IEmissionManager { // reward => emissionAdmin mapping(address => address) internal _emissionAdmins; IRewardsController internal _rewardsController; /** * @dev Only emission admin of the given reward can call functions marked by this modifier. **/ modifier onlyEmissionAdmin(address reward) { require(msg.sender == _emissionAdmins[reward], 'ONLY_EMISSION_ADMIN'); _; } /** * Constructor. * @param owner The address of the owner */ constructor(address owner) { transferOwnership(owner); } /// @inheritdoc IEmissionManager function configureAssets(RewardsDataTypes.RewardsConfigInput[] memory config) external override { for (uint256 i = 0; i < config.length; i++) { require(_emissionAdmins[config[i].reward] == msg.sender, 'ONLY_EMISSION_ADMIN'); } _rewardsController.configureAssets(config); } /// @inheritdoc IEmissionManager function setTransferStrategy( address reward, ITransferStrategyBase transferStrategy ) external override onlyEmissionAdmin(reward) { _rewardsController.setTransferStrategy(reward, transferStrategy); } /// @inheritdoc IEmissionManager function setRewardOracle( address reward, IEACAggregatorProxy rewardOracle ) external override onlyEmissionAdmin(reward) { _rewardsController.setRewardOracle(reward, rewardOracle); } /// @inheritdoc IEmissionManager function setDistributionEnd( address asset, address reward, uint32 newDistributionEnd ) external override onlyEmissionAdmin(reward) { _rewardsController.setDistributionEnd(asset, reward, newDistributionEnd); } /// @inheritdoc IEmissionManager function setEmissionPerSecond( address asset, address[] calldata rewards, uint88[] calldata newEmissionsPerSecond ) external override { for (uint256 i = 0; i < rewards.length; i++) { require(_emissionAdmins[rewards[i]] == msg.sender, 'ONLY_EMISSION_ADMIN'); } _rewardsController.setEmissionPerSecond(asset, rewards, newEmissionsPerSecond); } /// @inheritdoc IEmissionManager function setClaimer(address user, address claimer) external override onlyOwner { _rewardsController.setClaimer(user, claimer); } /// @inheritdoc IEmissionManager function setEmissionAdmin(address reward, address admin) external override onlyOwner { address oldAdmin = _emissionAdmins[reward]; _emissionAdmins[reward] = admin; emit EmissionAdminUpdated(reward, oldAdmin, admin); } /// @inheritdoc IEmissionManager function setRewardsController(address controller) external override onlyOwner { _rewardsController = IRewardsController(controller); } /// @inheritdoc IEmissionManager function getRewardsController() external view override returns (IRewardsController) { return _rewardsController; } /// @inheritdoc IEmissionManager function getEmissionAdmin(address reward) external view override returns (address) { return _emissionAdmins[reward]; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.12; /* * @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.12; 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.12; interface IEACAggregatorProxy { function decimals() external view returns (uint8); function latestAnswer() external view returns (int256); function latestTimestamp() external view returns (uint256); function latestRound() external view returns (uint256); function getAnswer(uint256 roundId) external view returns (int256); function getTimestamp(uint256 roundId) external view returns (uint256); event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 timestamp); event NewRound(uint256 indexed roundId, address indexed startedBy); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; import {IEACAggregatorProxy} from '../../misc/interfaces/IEACAggregatorProxy.sol'; import {RewardsDataTypes} from '../libraries/RewardsDataTypes.sol'; import {ITransferStrategyBase} from './ITransferStrategyBase.sol'; import {IRewardsController} from './IRewardsController.sol'; /** * @title IEmissionManager * @author Aave * @notice Defines the basic interface for the Emission Manager */ interface IEmissionManager { /** * @dev Emitted when the admin of a reward emission is updated. * @param reward The address of the rewarding token * @param oldAdmin The address of the old emission admin * @param newAdmin The address of the new emission admin */ event EmissionAdminUpdated( address indexed reward, address indexed oldAdmin, address indexed newAdmin ); /** * @dev Configure assets to incentivize with an emission of rewards per second until the end of distribution. * @dev Only callable by the emission admin of the given rewards * @param config The assets configuration input, the list of structs contains the following fields: * uint104 emissionPerSecond: The emission per second following rewards unit decimals. * uint256 totalSupply: The total supply of the asset to incentivize * uint40 distributionEnd: The end of the distribution of the incentives for an asset * address asset: The asset address to incentivize * address reward: The reward token address * ITransferStrategy transferStrategy: The TransferStrategy address with the install hook and claim logic. * IEACAggregatorProxy rewardOracle: The Price Oracle of a reward to visualize the incentives at the UI Frontend. * Must follow Chainlink Aggregator IEACAggregatorProxy interface to be compatible. */ function configureAssets(RewardsDataTypes.RewardsConfigInput[] memory config) external; /** * @dev Sets a TransferStrategy logic contract that determines the logic of the rewards transfer * @dev Only callable by the emission admin of the given reward * @param reward The address of the reward token * @param transferStrategy The address of the TransferStrategy logic contract */ function setTransferStrategy(address reward, ITransferStrategyBase transferStrategy) external; /** * @dev Sets an Aave Oracle contract to enforce rewards with a source of value. * @dev Only callable by the emission admin of the given reward * @notice At the moment of reward configuration, the Incentives Controller performs * a check to see if the reward asset oracle is compatible with IEACAggregator proxy. * This check is enforced for integrators to be able to show incentives at * the current Aave UI without the need to setup an external price registry * @param reward The address of the reward to set the price aggregator * @param rewardOracle The address of price aggregator that follows IEACAggregatorProxy interface */ function setRewardOracle(address reward, IEACAggregatorProxy rewardOracle) external; /** * @dev Sets the end date for the distribution * @dev Only callable by the emission admin of the given reward * @param asset The asset to incentivize * @param reward The reward token that incentives the asset * @param newDistributionEnd The end date of the incentivization, in unix time format **/ function setDistributionEnd(address asset, address reward, uint32 newDistributionEnd) external; /** * @dev Sets the emission per second of a set of reward distributions * @param asset The asset is being incentivized * @param rewards List of reward addresses are being distributed * @param newEmissionsPerSecond List of new reward emissions per second */ function setEmissionPerSecond( address asset, address[] calldata rewards, uint88[] calldata newEmissionsPerSecond ) external; /** * @dev Whitelists an address to claim the rewards on behalf of another address * @dev Only callable by the owner of the EmissionManager * @param user The address of the user * @param claimer The address of the claimer */ function setClaimer(address user, address claimer) external; /** * @dev Updates the admin of the reward emission * @dev Only callable by the owner of the EmissionManager * @param reward The address of the reward token * @param admin The address of the new admin of the emission */ function setEmissionAdmin(address reward, address admin) external; /** * @dev Updates the address of the rewards controller * @dev Only callable by the owner of the EmissionManager * @param controller the address of the RewardsController contract */ function setRewardsController(address controller) external; /** * @dev Returns the rewards controller address * @return The address of the RewardsController contract */ function getRewardsController() external view returns (IRewardsController); /** * @dev Returns the admin of the given reward emission * @param reward The address of the reward token * @return The address of the emission admin */ function getEmissionAdmin(address reward) external view returns (address); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; import {IRewardsDistributor} from './IRewardsDistributor.sol'; import {ITransferStrategyBase} from './ITransferStrategyBase.sol'; import {IEACAggregatorProxy} from '../../misc/interfaces/IEACAggregatorProxy.sol'; import {RewardsDataTypes} from '../libraries/RewardsDataTypes.sol'; /** * @title IRewardsController * @author Aave * @notice Defines the basic interface for a Rewards Controller. */ interface IRewardsController is IRewardsDistributor { /** * @dev Emitted when a new address is whitelisted as claimer of rewards on behalf of a user * @param user The address of the user * @param claimer The address of the claimer */ event ClaimerSet(address indexed user, address indexed claimer); /** * @dev Emitted when rewards are claimed * @param user The address of the user rewards has been claimed on behalf of * @param reward The address of the token reward is claimed * @param to The address of the receiver of the rewards * @param claimer The address of the claimer * @param amount The amount of rewards claimed */ event RewardsClaimed( address indexed user, address indexed reward, address indexed to, address claimer, uint256 amount ); /** * @dev Emitted when a transfer strategy is installed for the reward distribution * @param reward The address of the token reward * @param transferStrategy The address of TransferStrategy contract */ event TransferStrategyInstalled(address indexed reward, address indexed transferStrategy); /** * @dev Emitted when the reward oracle is updated * @param reward The address of the token reward * @param rewardOracle The address of oracle */ event RewardOracleUpdated(address indexed reward, address indexed rewardOracle); /** * @dev Whitelists an address to claim the rewards on behalf of another address * @param user The address of the user * @param claimer The address of the claimer */ function setClaimer(address user, address claimer) external; /** * @dev Sets a TransferStrategy logic contract that determines the logic of the rewards transfer * @param reward The address of the reward token * @param transferStrategy The address of the TransferStrategy logic contract */ function setTransferStrategy(address reward, ITransferStrategyBase transferStrategy) external; /** * @dev Sets an Aave Oracle contract to enforce rewards with a source of value. * @notice At the moment of reward configuration, the Incentives Controller performs * a check to see if the reward asset oracle is compatible with IEACAggregator proxy. * This check is enforced for integrators to be able to show incentives at * the current Aave UI without the need to setup an external price registry * @param reward The address of the reward to set the price aggregator * @param rewardOracle The address of price aggregator that follows IEACAggregatorProxy interface */ function setRewardOracle(address reward, IEACAggregatorProxy rewardOracle) external; /** * @dev Get the price aggregator oracle address * @param reward The address of the reward * @return The price oracle of the reward */ function getRewardOracle(address reward) external view returns (address); /** * @dev Returns the whitelisted claimer for a certain address (0x0 if not set) * @param user The address of the user * @return The claimer address */ function getClaimer(address user) external view returns (address); /** * @dev Returns the Transfer Strategy implementation contract address being used for a reward address * @param reward The address of the reward * @return The address of the TransferStrategy contract */ function getTransferStrategy(address reward) external view returns (address); /** * @dev Configure assets to incentivize with an emission of rewards per second until the end of distribution. * @param config The assets configuration input, the list of structs contains the following fields: * uint104 emissionPerSecond: The emission per second following rewards unit decimals. * uint256 totalSupply: The total supply of the asset to incentivize * uint40 distributionEnd: The end of the distribution of the incentives for an asset * address asset: The asset address to incentivize * address reward: The reward token address * ITransferStrategy transferStrategy: The TransferStrategy address with the install hook and claim logic. * IEACAggregatorProxy rewardOracle: The Price Oracle of a reward to visualize the incentives at the UI Frontend. * Must follow Chainlink Aggregator IEACAggregatorProxy interface to be compatible. */ function configureAssets(RewardsDataTypes.RewardsConfigInput[] memory config) external; /** * @dev Called by the corresponding asset on transfer hook in order to update the rewards distribution. * @dev The units of `totalSupply` and `userBalance` should be the same. * @param user The address of the user whose asset balance has changed * @param totalSupply The total supply of the asset prior to user balance change * @param userBalance The previous user balance prior to balance change **/ function handleAction(address user, uint256 totalSupply, uint256 userBalance) external; /** * @dev Claims reward for a user to the desired address, on all the assets of the pool, accumulating the pending rewards * @param assets List of assets to check eligible distributions before claiming rewards * @param amount The amount of rewards to claim * @param to The address that will be receiving the rewards * @param reward The address of the reward token * @return The amount of rewards claimed **/ function claimRewards( address[] calldata assets, uint256 amount, address to, address reward ) external returns (uint256); /** * @dev Claims reward for a user on behalf, on all the assets of the pool, accumulating the pending rewards. The * caller must be whitelisted via "allowClaimOnBehalf" function by the RewardsAdmin role manager * @param assets The list of assets to check eligible distributions before claiming rewards * @param amount The amount of rewards to claim * @param user The address to check and claim rewards * @param to The address that will be receiving the rewards * @param reward The address of the reward token * @return The amount of rewards claimed **/ function claimRewardsOnBehalf( address[] calldata assets, uint256 amount, address user, address to, address reward ) external returns (uint256); /** * @dev Claims reward for msg.sender, on all the assets of the pool, accumulating the pending rewards * @param assets The list of assets to check eligible distributions before claiming rewards * @param amount The amount of rewards to claim * @param reward The address of the reward token * @return The amount of rewards claimed **/ function claimRewardsToSelf( address[] calldata assets, uint256 amount, address reward ) external returns (uint256); /** * @dev Claims all rewards for a user to the desired address, on all the assets of the pool, accumulating the pending rewards * @param assets The list of assets to check eligible distributions before claiming rewards * @param to The address that will be receiving the rewards * @return rewardsList List of addresses of the reward tokens * @return claimedAmounts List that contains the claimed amount per reward, following same order as "rewardList" **/ function claimAllRewards( address[] calldata assets, address to ) external returns (address[] memory rewardsList, uint256[] memory claimedAmounts); /** * @dev Claims all rewards for a user on behalf, on all the assets of the pool, accumulating the pending rewards. The caller must * be whitelisted via "allowClaimOnBehalf" function by the RewardsAdmin role manager * @param assets The list of assets to check eligible distributions before claiming rewards * @param user The address to check and claim rewards * @param to The address that will be receiving the rewards * @return rewardsList List of addresses of the reward tokens * @return claimedAmounts List that contains the claimed amount per reward, following same order as "rewardsList" **/ function claimAllRewardsOnBehalf( address[] calldata assets, address user, address to ) external returns (address[] memory rewardsList, uint256[] memory claimedAmounts); /** * @dev Claims all reward for msg.sender, on all the assets of the pool, accumulating the pending rewards * @param assets The list of assets to check eligible distributions before claiming rewards * @return rewardsList List of addresses of the reward tokens * @return claimedAmounts List that contains the claimed amount per reward, following same order as "rewardsList" **/ function claimAllRewardsToSelf( address[] calldata assets ) external returns (address[] memory rewardsList, uint256[] memory claimedAmounts); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; /** * @title IRewardsDistributor * @author Aave * @notice Defines the basic interface for a Rewards Distributor. */ interface IRewardsDistributor { /** * @dev Emitted when the configuration of the rewards of an asset is updated. * @param asset The address of the incentivized asset * @param reward The address of the reward token * @param oldEmission The old emissions per second value of the reward distribution * @param newEmission The new emissions per second value of the reward distribution * @param oldDistributionEnd The old end timestamp of the reward distribution * @param newDistributionEnd The new end timestamp of the reward distribution * @param assetIndex The index of the asset distribution */ event AssetConfigUpdated( address indexed asset, address indexed reward, uint256 oldEmission, uint256 newEmission, uint256 oldDistributionEnd, uint256 newDistributionEnd, uint256 assetIndex ); /** * @dev Emitted when rewards of an asset are accrued on behalf of a user. * @param asset The address of the incentivized asset * @param reward The address of the reward token * @param user The address of the user that rewards are accrued on behalf of * @param assetIndex The index of the asset distribution * @param userIndex The index of the asset distribution on behalf of the user * @param rewardsAccrued The amount of rewards accrued */ event Accrued( address indexed asset, address indexed reward, address indexed user, uint256 assetIndex, uint256 userIndex, uint256 rewardsAccrued ); /** * @dev Sets the end date for the distribution * @param asset The asset to incentivize * @param reward The reward token that incentives the asset * @param newDistributionEnd The end date of the incentivization, in unix time format **/ function setDistributionEnd(address asset, address reward, uint32 newDistributionEnd) external; /** * @dev Sets the emission per second of a set of reward distributions * @param asset The asset is being incentivized * @param rewards List of reward addresses are being distributed * @param newEmissionsPerSecond List of new reward emissions per second */ function setEmissionPerSecond( address asset, address[] calldata rewards, uint88[] calldata newEmissionsPerSecond ) external; /** * @dev Gets the end date for the distribution * @param asset The incentivized asset * @param reward The reward token of the incentivized asset * @return The timestamp with the end of the distribution, in unix time format **/ function getDistributionEnd(address asset, address reward) external view returns (uint256); /** * @dev Returns the index of a user on a reward distribution * @param user Address of the user * @param asset The incentivized asset * @param reward The reward token of the incentivized asset * @return The current user asset index, not including new distributions **/ function getUserAssetIndex( address user, address asset, address reward ) external view returns (uint256); /** * @dev Returns the configuration of the distribution reward for a certain asset * @param asset The incentivized asset * @param reward The reward token of the incentivized asset * @return The index of the asset distribution * @return The emission per second of the reward distribution * @return The timestamp of the last update of the index * @return The timestamp of the distribution end **/ function getRewardsData( address asset, address reward ) external view returns (uint256, uint256, uint256, uint256); /** * @dev Calculates the next value of an specific distribution index, with validations. * @param asset The incentivized asset * @param reward The reward token of the incentivized asset * @return The old index of the asset distribution * @return The new index of the asset distribution **/ function getAssetIndex(address asset, address reward) external view returns (uint256, uint256); /** * @dev Returns the list of available reward token addresses of an incentivized asset * @param asset The incentivized asset * @return List of rewards addresses of the input asset **/ function getRewardsByAsset(address asset) external view returns (address[] memory); /** * @dev Returns the list of available reward addresses * @return List of rewards supported in this contract **/ function getRewardsList() external view returns (address[] memory); /** * @dev Returns the accrued rewards balance of a user, not including virtually accrued rewards since last distribution. * @param user The address of the user * @param reward The address of the reward token * @return Unclaimed rewards, not including new distributions **/ function getUserAccruedRewards(address user, address reward) external view returns (uint256); /** * @dev Returns a single rewards balance of a user, including virtually accrued and unrealized claimable rewards. * @param assets List of incentivized assets to check eligible distributions * @param user The address of the user * @param reward The address of the reward token * @return The rewards amount **/ function getUserRewards( address[] calldata assets, address user, address reward ) external view returns (uint256); /** * @dev Returns a list all rewards of a user, including already accrued and unrealized claimable rewards * @param assets List of incentivized assets to check eligible distributions * @param user The address of the user * @return The list of reward addresses * @return The list of unclaimed amount of rewards **/ function getAllUserRewards( address[] calldata assets, address user ) external view returns (address[] memory, uint256[] memory); /** * @dev Returns the decimals of an asset to calculate the distribution delta * @param asset The address to retrieve decimals * @return The decimals of an underlying asset */ function getAssetDecimals(address asset) external view returns (uint8); /** * @dev Returns the address of the emission manager * @return The address of the EmissionManager */ function EMISSION_MANAGER() external view returns (address); /** * @dev Returns the address of the emission manager. * Deprecated: This getter is maintained for compatibility purposes. Use the `EMISSION_MANAGER()` function instead. * @return The address of the EmissionManager */ function getEmissionManager() external view returns (address); }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; interface ITransferStrategyBase { event EmergencyWithdrawal( address indexed caller, address indexed token, address indexed to, uint256 amount ); /** * @dev Perform custom transfer logic via delegate call from source contract to a TransferStrategy implementation * @param to Account to transfer rewards * @param reward Address of the reward token * @param amount Amount to transfer to the "to" address parameter * @return Returns true bool if transfer logic succeeds */ function performTransfer(address to, address reward, uint256 amount) external returns (bool); /** * @return Returns the address of the Incentives Controller */ function getIncentivesController() external view returns (address); /** * @return Returns the address of the Rewards admin */ function getRewardsAdmin() external view returns (address); /** * @dev Perform an emergency token withdrawal only callable by the Rewards admin * @param token Address of the token to withdraw funds from this contract * @param to Address of the recipient of the withdrawal * @param amount Amount of the withdrawal */ function emergencyWithdrawal(address token, address to, uint256 amount) external; }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.12; import {ITransferStrategyBase} from '../interfaces/ITransferStrategyBase.sol'; import {IEACAggregatorProxy} from '../../misc/interfaces/IEACAggregatorProxy.sol'; library RewardsDataTypes { struct RewardsConfigInput { uint88 emissionPerSecond; uint256 totalSupply; uint32 distributionEnd; address asset; address reward; ITransferStrategyBase transferStrategy; IEACAggregatorProxy rewardOracle; } struct UserAssetBalance { address asset; uint256 userBalance; uint256 totalSupply; } struct UserData { // Liquidity index of the reward distribution for the user uint104 index; // Amount of accrued rewards for the user since last user index update uint128 accrued; } struct RewardData { // Liquidity index of the reward distribution uint104 index; // Amount of reward tokens distributed per second uint88 emissionPerSecond; // Timestamp of the last reward index update uint32 lastUpdateTimestamp; // The end of the distribution of rewards (in seconds) uint32 distributionEnd; // Map of user addresses and their rewards data (userAddress => userData) mapping(address => UserData) usersData; } struct AssetData { // Map of reward token addresses and their data (rewardTokenAddress => rewardData) mapping(address => RewardData) rewards; // List of reward token addresses for the asset mapping(uint128 => address) availableRewards; // Count of reward tokens for the asset uint128 availableRewardsCount; // Number of decimals of the asset uint8 decimals; } }
{ "compilerPath": "/Users/esmeevankant/Library/Caches/hardhat-nodejs/compilers-v2/zksolc/zksolc-v1.3.13", "experimental": {}, "libraries": { "@aave/core-v3/contracts/protocol/libraries/logic/BorrowLogic.sol": { "BorrowLogic": "0x07c9C19a4823f7F89eE63cb0d89AEF55F4D61f71" }, "@aave/core-v3/contracts/protocol/libraries/logic/BridgeLogic.sol": { "BridgeLogic": "0xeb3A0D513F497cE6E61278B628bb56470f7b357f" }, "@aave/core-v3/contracts/protocol/libraries/logic/ConfiguratorLogic.sol": { "ConfiguratorLogic": "0xC504e8FB2f8D76fef6Ce251A3760a507837E38f5" }, "@aave/core-v3/contracts/protocol/libraries/logic/EModeLogic.sol": { "EModeLogic": "0x3733D1faE7965b573C018c4e65Bc4a1389cD4393" }, "@aave/core-v3/contracts/protocol/libraries/logic/FlashLoanLogic.sol": { "FlashLoanLogic": "0x24Bb7d14Aad51Cbf4f187a27EF72C77231E9e5f0" }, "@aave/core-v3/contracts/protocol/libraries/logic/LiquidationLogic.sol": { "LiquidationLogic": "0xC2ec0e44a0F8262757f569942bE474e70411a85c" }, "@aave/core-v3/contracts/protocol/libraries/logic/PoolLogic.sol": { "PoolLogic": "0x969a8A5a56B82914775F5c704348594327e28EF5" }, "@aave/core-v3/contracts/protocol/libraries/logic/SupplyLogic.sol": { "SupplyLogic": "0x55fA0fC04500D04ea7fAe122ae4603b937D8E5A2" } }, "optimizer": { "enabled": true, "mode": "3" } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"reward","type":"address"},{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"EmissionAdminUpdated","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":[{"components":[{"internalType":"uint88","name":"emissionPerSecond","type":"uint88"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint32","name":"distributionEnd","type":"uint32"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"reward","type":"address"},{"internalType":"contract ITransferStrategyBase","name":"transferStrategy","type":"address"},{"internalType":"contract IEACAggregatorProxy","name":"rewardOracle","type":"address"}],"internalType":"struct RewardsDataTypes.RewardsConfigInput[]","name":"config","type":"tuple[]"}],"name":"configureAssets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reward","type":"address"}],"name":"getEmissionAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardsController","outputs":[{"internalType":"contract IRewardsController","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":"address","name":"user","type":"address"},{"internalType":"address","name":"claimer","type":"address"}],"name":"setClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"reward","type":"address"},{"internalType":"uint32","name":"newDistributionEnd","type":"uint32"}],"name":"setDistributionEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reward","type":"address"},{"internalType":"address","name":"admin","type":"address"}],"name":"setEmissionAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address[]","name":"rewards","type":"address[]"},{"internalType":"uint88[]","name":"newEmissionsPerSecond","type":"uint88[]"}],"name":"setEmissionPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reward","type":"address"},{"internalType":"contract IEACAggregatorProxy","name":"rewardOracle","type":"address"}],"name":"setRewardOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"setRewardsController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"reward","type":"address"},{"internalType":"contract ITransferStrategyBase","name":"transferStrategy","type":"address"}],"name":"setTransferStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100023328ab2e7f5556296fd5733c45409b5d404b907b494f970789c1b33fb100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000b76f765a785eca438e1d95f594490088afaf9acc
Deployed Bytecode
0x000300000000000200020000000103550000006001100270000001ff0010019d000100000000001f0000008001000039000000400010043f0000000101200190000000250000c13d0000000001000031000000040110008c0000013c0000413d0000000201000367000000000101043b000000e001100270000002060210009c000000660000a13d000002070210009c000000860000a13d000002080210009c000000ba0000213d0000020b0210009c000000ca0000613d0000020c0110009c0000013c0000c13d0000000001000416000000000101004b0000013c0000c13d000000000100003107f8018d0000040f07f802e10000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d00000000010000310000009f02100039000000200300008a000000000232016f000002000320009c000000340000413d000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400020043f0000001f0210018f00000002030003670000000504100272000000420000613d00000000050000190000000506500210000000000763034f000000000707043b000000800660003900000000007604350000000105500039000000000645004b0000003a0000413d000000000502004b000000510000613d0000000504400210000000000343034f00000003022002100000008004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f00000000002404350000020102000041000000200310008c000000000300001900000000030240190000020101100197000000000401004b000000000200a019000002010110009c00000000010300190000000001026019000000000101004b0000013c0000c13d000000800100043d000002020210009c0000013c0000213d07f8013e0000040f0000002001000039000001000010044300000120000004430000020301000041000007f90001042e000002100210009c000000a80000213d000002140210009c000000d60000613d000002150210009c000000e50000613d000002160110009c0000013c0000c13d0000000001000416000000000101004b0000013c0000c13d000000040100008a00000000011000310000020102000041000000000301004b000000000300001900000000030240190000020101100197000000000401004b000000000200a019000002010110009c00000000010300190000000001026019000000000101004b0000013c0000c13d07f802b20000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000020d0210009c000000f10000613d0000020e0210009c000000fd0000613d0000020f0110009c0000013c0000c13d0000000001000416000000000101004b0000013c0000c13d000000040100008a00000000011000310000020102000041000000000301004b000000000300001900000000030240190000020101100197000000000401004b000000000200a019000002010110009c00000000010300190000000001026019000000000101004b0000013c0000c13d0000000201000039000000000101041a0000020201100197000000400200043d0000000000120435000001ff01000041000001ff0320009c0000000001024019000000400110021000000217011001c7000007f90001042e000002110210009c000001090000613d000002120210009c000001240000613d000002130110009c0000013c0000c13d0000000001000416000000000101004b0000013c0000c13d000000000100003107f801a20000040f07f8076b0000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e000002090210009c000001300000613d0000020a0110009c0000013c0000c13d0000000001000416000000000101004b0000013c0000c13d000000000100003107f802620000040f07f805f50000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f801a20000040f07f804130000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f8018d0000040f07f807da0000040f0000020201100197000000400200043d0000000000120435000001ff01000041000001ff0320009c0000000001024019000000400110021000000217011001c7000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f801a20000040f07f804ae0000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f8018d0000040f07f807bd0000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f802450000040f07f805490000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000040100008a00000000011000310000020102000041000000000301004b000000000300001900000000030240190000020101100197000000000401004b000000000200a019000002010110009c00000000010300190000000001026019000000000101004b0000013c0000c13d000000000100041a0000020201100197000000400200043d0000000000120435000001ff01000041000001ff0320009c0000000001024019000000400110021000000217011001c7000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f801bb0000040f07f803290000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000416000000000101004b0000013c0000c13d000000000100003107f801a20000040f07f806df0000040f000001ff01000041000000400200043d000001ff0320009c00000000010240190000004001100210000007f90001042e0000000001000019000007fa000104300005000000000002000400000001001d000000000100041a00000218011001970000000006000411000300000001001d000000000161019f000000000010041b000000400400043d000001ff010000410000000002000414000001ff0320009c0000000002018019000001ff0340009c000200000004001d00000000010440190000004003100210000000c001200210000100000003001d000000000131019f00000219011001c70000800d0200003900000003030000390000021a040000410000000005000019000500000006001d07f807ee0000040f0000000101200190000001790000613d0000000505000029000000040100002900000202061001980000017b0000613d000000400100043d000001ff020000410000000003000414000001ff0430009c0000000003028019000001ff0410009c00000000010280190000004001100210000000c002300210000000000112019f00000219011001c70000800d0200003900000003030000390000021a04000041000400000006001d07f807ee0000040f0000000101200190000001790000613d00000003010000290000000402000029000000000121019f00000005020000290000021802200197000000000121019f000000000010041b000000000001042d0000000001000019000007fa00010430000000020300002900000064013000390000021b02000041000000000021043500000044013000390000021c0200004100000000002104350000002401300039000000260200003900000000002104350000021d01000041000000000013043500000004013000390000002002000039000000000021043500000001010000290000021e011001c7000007fa00010430000000040110008a00000201020000410000001f0310008c000000000300001900000000030220190000020101100197000000000401004b0000000002008019000002010110009c00000000010300190000000001026019000000000101004b000001a00000613d00000004010000390000000201100367000000000101043b000002020210009c000001a00000213d000000000001042d0000000001000019000007fa00010430000000040110008a00000201020000410000003f0310008c000000000300001900000000030220190000020101100197000000000401004b0000000002008019000002010110009c00000000010300190000000001026019000000000101004b000001b90000613d00000002020003670000000401200370000000000101043b000002020310009c000001b90000213d0000002402200370000000000202043b000002020320009c000001b90000213d000000000001042d0000000001000019000007fa00010430000000040210008a00000201030000410000001f0420008c000000000400001900000000040320190000020102200197000000000502004b0000000003008019000002010220009c00000000020400190000000002036019000000000202004b0000023d0000613d00000002020003670000000403200370000000000303043b0000021f0430009c0000023d0000213d00000023043000390000020105000041000000000614004b0000000006000019000000000605801900000201071001970000020104400197000000000874004b0000000005008019000000000474013f000002010440009c00000000040600190000000004056019000000000404004b0000023d0000c13d0000000404300039000000000242034f000000000502043b000002000250009c0000023f0000813d00000005025002100000003f02200039000000200400008a000000000442016f000000400200043d0000000004420019000000000624004b000000000600001900000001060040390000021f0740009c0000023f0000213d00000001066001900000023f0000c13d000000400040043f0000000000520435000000e0645000c900000024033000390000000004430019000000000614004b0000023d0000213d000000000505004b0000023b0000613d000000000502001900000000063100490000020107000041000000e00860008c000000000800001900000000080740190000020106600197000000000906004b000000000700a019000002010660009c00000000060800190000000006076019000000000606004b0000023d0000c13d000000400600043d000002200760009c0000023f0000213d000000e007600039000000400070043f0000000207300367000000000707043b000002210870009c0000023d0000213d000000000776043600000020083000390000000208800367000000000808043b000000000087043500000040073000390000000207700367000000000707043b000001ff0870009c0000023d0000213d0000004008600039000000000078043500000060073000390000000207700367000000000707043b000002020870009c0000023d0000213d0000006008600039000000000078043500000080073000390000000207700367000000000707043b000002020870009c0000023d0000213d00000080086000390000000000780435000000a0073000390000000207700367000000000707043b000002020870009c0000023d0000213d000000a0086000390000000000780435000000c0073000390000000207700367000000000707043b000002020870009c0000023d0000213d0000002005500039000000c00860003900000000007804350000000000650435000000e003300039000000000643004b000001f80000413d0000000001020019000000000001042d0000000001000019000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000040110008a00000201020000410000005f0310008c000000000300001900000000030220190000020101100197000000000401004b0000000002008019000002010110009c00000000010300190000000001026019000000000101004b000002600000613d00000002030003670000000401300370000000000101043b000002020210009c000002600000213d0000002402300370000000000202043b000002020420009c000002600000213d0000004403300370000000000303043b000001ff0430009c000002600000213d000000000001042d0000000001000019000007fa00010430000000040210008a00000201030000410000005f0420008c000000000400001900000000040320190000020102200197000000000502004b0000000003008019000002010220009c00000000020400190000000002036019000000000202004b000002b00000613d00000002040003670000000402400370000000000602043b000002020260009c000002b00000213d0000002402400370000000000202043b0000021f0320009c000002b00000213d00000023032000390000020105000041000000000713004b0000000007000019000000000705801900000201081001970000020103300197000000000983004b0000000005008019000000000383013f000002010330009c00000000030700190000000003056019000000000303004b000002b00000c13d0000000403200039000000000334034f000000000303043b0000021f0530009c000002b00000213d000000240220003900000005053002100000000005250019000000000515004b000002b00000213d0000004405400370000000000705043b0000021f0570009c000002b00000213d00000023057000390000020108000041000000000915004b00000000090000190000000009088019000002010a1001970000020105500197000000000ba5004b00000000080080190000000005a5013f000002010550009c00000000050900190000000005086019000000000505004b000002b00000c13d0000000405700039000000000454034f000000000504043b0000021f0450009c000002b00000213d000000240470003900000005075002100000000007470019000000000117004b000002b00000213d0000000001060019000000000001042d0000000001000019000007fa000104300001000000000002000000400100043d000000000200041a000100000002001d00000202052001970000000002000411000000000225004b000002cf0000c13d000001ff020000410000000003000414000001ff0430009c0000000003028019000001ff0410009c00000000010280190000004001100210000000c002300210000000000112019f00000219011001c70000800d0200003900000003030000390000021a04000041000000000600001907f807ee0000040f0000000101200190000002df0000613d00000001010000290000021801100197000000000010041b000000000001042d0000004402100039000002220300004100000000003204350000021d02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa000104300000000001000019000007fa000104300002000000000002000000000300041a00000202053001970000000002000411000000000225004b000003020000c13d000200000003001d000000400200043d0000020206100198000003130000613d000001ff010000410000000003000414000001ff0430009c0000000003018019000001ff0420009c00000000010240190000004001100210000000c002300210000000000112019f00000219011001c70000800d0200003900000003030000390000021a04000041000100000006001d07f807ee0000040f0000000101200190000003270000613d000000020100002900000218011001970000000102000029000000000121019f000000000010041b000000000001042d000000400100043d0000004402100039000002220300004100000000003204350000021d02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa0001043000000064012000390000021b03000041000000000031043500000044012000390000021c0300004100000000003104350000002401200039000000260300003900000000003104350000021d010000410000000000120435000000040120003900000020030000390000000000310435000001ff01000041000001ff0320009c000000000102401900000040011002100000021e011001c7000007fa000104300000000001000019000007fa000104300006000000000002000500000001001d0000000021010434000400000002001d000000000101004b000003570000613d0000000101000039000300000001001d0000801001000039000200000001001d0000000001000411000100000001001d0000000002000019000600000002001d000000050120021000000004020000290000000001120019000000000101043300000080011000390000000001010433000002020110019700000000001004350000000301000029000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000000020200002907f807f30000040f0000000102200190000003d30000613d000000000101043b000000000101041a00000202011001970000000102000029000000000121004b0000000501000029000003d50000c13d000000060200002900000001022000390000000001010433000000000112004b000003360000413d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000600000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f0000000102200190000003d30000613d000000000101043b000000000101004b000003d30000613d000000400800043d0000022801000041000000000018043500000004018000390000002002000039000000000021043500000005070000290000000002070433000000240180003900000000002104350000004401800039000000000302004b0000039d0000613d0000000003000019000000200770003900000000040704330000000065040434000002210550019700000000055104360000000006060433000000000065043500000040054000390000000005050433000001ff05500197000000400610003900000000005604350000006005400039000000000505043300000202055001970000006006100039000000000056043500000080054000390000000005050433000002020550019700000080061000390000000000560435000000a00540003900000000050504330000020205500197000000a0061000390000000000560435000000c00440003900000000040404330000020204400197000000c0051000390000000000450435000000e0011000390000000103300039000000000423004b000003790000413d00000000060004140000000602000029000000040320008c000003a30000c13d0000000104000031000003ba0000013d0000000001810049000001ff03000041000001ff0480009c000000000403001900000000040840190000004004400210000001ff0510009c00000000010380190000006001100210000000000141019f000001ff0460009c0000000003064019000000c003300210000000000131019f000600000008001d07f807ee0000040f000000060800002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000003ed0000613d0000001f01400039000000200200008a000000000221016f0000000001820019000000000221004b000000000200001900000001020040390000021f0310009c000003e70000213d0000000102200190000003e70000c13d000000400010043f00000201010000410000000102000031000000000302004b000000000300001900000000030140190000020102200197000000000402004b000000000100a019000002010220009c000000000103c019000000000101004b000003d30000c13d000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002250300004100000000003204350000002402100039000000130300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000003fa0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000003f20000413d000000000503004b000004090000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300003000000000002000200000002001d0000020201100197000300000001001d00000000001004350000000101000039000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f00000001022001900000046e0000613d000000000101043b000000000101041a00000202011001970000000002000411000000000112004b000004700000c13d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000100000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f00000001022001900000046e0000613d000000000101043b000000000101004b0000046e0000613d00000002010000290000020201100197000000400500043d000000240250003900000000001204350000022901000041000000000015043500000004015000390000000302000029000000000021043500000000010004140000000102000029000000040320008c0000044e0000c13d0000000104000031000004610000013d000001ff04000041000001ff0310009c0000000001048019000001ff0350009c000000000304001900000000030540190000004003300210000000c001100210000000000131019f0000022a011001c7000300000005001d07f807ee0000040f000000030500002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000004880000613d0000001f01400039000000200200008a000000000221016f0000000001520019000000000221004b000000000200001900000001020040390000021f0310009c000004820000213d0000000102200190000004820000c13d000000400010043f000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002250300004100000000003204350000002402100039000000130300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000004950000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000048d0000413d000000000503004b000004a40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300003000000000002000200000002001d0000020201100197000300000001001d00000000001004350000000101000039000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f0000000102200190000005090000613d000000000101043b000000000101041a00000202011001970000000002000411000000000112004b0000050b0000c13d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000100000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f0000000102200190000005090000613d000000000101043b000000000101004b000005090000613d00000002010000290000020201100197000000400500043d000000240250003900000000001204350000022b01000041000000000015043500000004015000390000000302000029000000000021043500000000010004140000000102000029000000040320008c000004e90000c13d0000000104000031000004fc0000013d000001ff04000041000001ff0310009c0000000001048019000001ff0350009c000000000304001900000000030540190000004003300210000000c001100210000000000131019f0000022a011001c7000300000005001d07f807ee0000040f000000030500002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000005230000613d0000001f01400039000000200200008a000000000221016f0000000001520019000000000221004b000000000200001900000001020040390000021f0310009c0000051d0000213d00000001022001900000051d0000c13d000000400010043f000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002250300004100000000003204350000002402100039000000130300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000005300000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000005280000413d000000000503004b0000053f0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300004000000000002000200000003001d000400000001001d0000020201200197000300000001001d00000000001004350000000101000039000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f0000000102200190000005b50000613d000000000101043b000000000101041a00000202011001970000000002000411000000000112004b000005b70000c13d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000100000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f0000000102200190000005b50000613d000000000101043b000000000101004b000005b50000613d0000000201000029000001ff01100197000000400500043d000000440250003900000000001204350000002401500039000000030200002900000000002104350000022c010000410000000000150435000000040100002900000202011001970000000402500039000000000012043500000000010004140000000102000029000000040320008c000005890000c13d00000001040000310000059c0000013d000001ff04000041000001ff0310009c0000000001048019000001ff0350009c000000000304001900000000030540190000004003300210000000c001100210000000000131019f00000223011001c7000400000005001d07f807ee0000040f000000040500002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000005cf0000613d0000001f01400039000000200200008a000000000221016f0000000001520019000000000221004b000000000200001900000001020040390000021f0310009c000005c90000213d0000000102200190000005c90000c13d000000400010043f00000201010000410000000102000031000000000302004b000000000300001900000000030140190000020102200197000000000402004b000000000100a019000002010220009c000000000103c019000000000101004b000005b50000c13d000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002250300004100000000003204350000002402100039000000130300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000005dc0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000005d40000413d000000000503004b000005eb0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300009000000000002000600000005001d000100000004001d000800000003001d0000000004020019000200000001001d000000000103004b000700000004001d000006250000613d0000000001000411000300000001001d0000000101000039000500000001001d0000801001000039000400000001001d0000000002000019000900000002001d000000050120021000000000014100190000000201100367000000000101043b0000022d0210009c0000069f0000813d00000000001004350000000501000029000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000000040200002907f807f30000040f0000000704000029000000080300002900000001022001900000069f0000613d000000000101043b000000000101041a00000202011001970000000302000029000000000121004b000006a10000c13d00000009020000290000000102200039000000000132004b000006050000413d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000900000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f0000000707000029000000080600002900000001022001900000069f0000613d000000000101043b000000000101004b0000069f0000613d000000400800043d0000002401800039000000600200003900000000002104350000022e0100004100000000001804350000006401800039000000000061043500000002010000290000020201100197000000040280003900000000001204350000008401800039000000000306004b000006540000613d00000000030000190000000204700367000000000404043b000002020540009c0000069f0000213d000000000141043600000020077000390000000103300039000000000463004b0000064b0000413d00000000022100490000004403800039000000000023043500000006020000290000000001210436000000000202004b0000000104000029000006690000613d000000000200001900000000050400190000000203400367000000000303043b000002210430009c0000069f0000213d00000000013104360000000004050019000000200440003900000001022000390000000603000029000000000332004b0000065d0000413d00000000060004140000000902000029000000040320008c0000066f0000c13d0000000104000031000006860000013d0000000001810049000001ff03000041000001ff0480009c000000000403001900000000040840190000004004400210000001ff0510009c00000000010380190000006001100210000000000141019f000001ff0460009c0000000003064019000000c003300210000000000131019f000900000008001d07f807ee0000040f000000090800002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000006b90000613d0000001f01400039000000200200008a000000000221016f0000000001820019000000000221004b000000000200001900000001020040390000021f0310009c000006b30000213d0000000102200190000006b30000c13d000000400010043f00000201010000410000000102000031000000000302004b000000000300001900000000030140190000020102200197000000000402004b000000000100a019000002010220009c000000000103c019000000000101004b0000069f0000c13d000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002250300004100000000003204350000002402100039000000130300003900000000003204350000021d020000410000000000210435000000040210003900000020030000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000006c60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000006be0000413d000000000503004b000006d50000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300003000000000002000200000002001d000300000001001d000000000100041a00000202011001970000000002000411000000000121004b0000072e0000c13d0000000201000039000000000101041a000002260200004100000000002004390000020201100197000100000001001d0000000400100443000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000227011001c7000080020200003907f807f30000040f00000001022001900000072c0000613d000000000101043b000000000101004b0000072c0000613d00000002010000290000020201100197000000400500043d000000240250003900000000001204350000022f010000410000000000150435000000030100002900000202011001970000000402500039000000000012043500000000010004140000000102000029000000040320008c0000070c0000c13d00000001040000310000071f0000013d000001ff04000041000001ff0310009c0000000001048019000001ff0350009c000000000304001900000000030540190000004003300210000000c001100210000000000131019f0000022a011001c7000300000005001d07f807ee0000040f000000030500002900000000030100190000006003300270000101ff0030019d000001ff043001970000000102200190000007450000613d0000001f01400039000000200200008a000000000221016f0000000001520019000000000221004b000000000200001900000001020040390000021f0310009c0000073f0000213d00000001022001900000073f0000c13d000000400010043f000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002220300004100000000003204350000021d02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002040100004100000000001004350000004101000039000000040010043f0000020501000041000007fa00010430000000400200043d0000001f0340018f0000000504400272000007520000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000074a0000413d000000000503004b000007610000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000001ff010000410000000103000031000001ff0430009c0000000003018019000001ff0420009c000000000102401900000040011002100000006002300210000000000112019f000007fa000104300003000000000002000300000002001d000000000200041a00000202022001970000000003000411000000000232004b000007ac0000c13d0000020201100197000200000001001d00000000001004350000000101000039000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f0000000102200190000007aa0000613d000000000101043b000000000101041a000100000001001d000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f0000000102200190000007aa0000613d00000003020000290000020207200197000000000101043b000000000201041a0000021802200197000000000272019f000000000021041b000000400100043d000001ff020000410000000003000414000001ff0430009c0000000003028019000001ff0410009c00000000010280190000004001100210000000c002300210000000000112019f0000000102000029000002020620019700000219011001c70000800d0200003900000004030000390000023004000041000000020500002907f807ee0000040f0000000101200190000007aa0000613d000000000001042d0000000001000019000007fa00010430000000400100043d0000004402100039000002220300004100000000003204350000021d02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000000000200041a00000202022001970000000003000411000000000232004b000007c90000c13d00000202011001970000000202000039000000000302041a0000021803300197000000000113019f000000000012041b000000000001042d000000400100043d0000004402100039000002220300004100000000003204350000021d02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001ff02000041000001ff0310009c0000000001028019000000400110021000000223011001c7000007fa00010430000002020110019700000000001004350000000101000039000000200010043f000001ff010000410000000002000414000001ff0320009c0000000001024019000000c00110021000000224011001c7000080100200003907f807f30000040f0000000102200190000007ec0000613d000000000101043b000000000101041a0000020201100197000000000001042d0000000001000019000007fa00010430000007f1002104210000000102000039000000000001042d0000000002000019000000000001042d000007f6002104230000000102000039000000000001042d0000000002000019000000000001042d000007f800000432000007f90001042e000007fa00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000100000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000400000010000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000000bee36bb200000000000000000000000000000000000000000000000000000000e15ac62200000000000000000000000000000000000000000000000000000000f5cf673a00000000000000000000000000000000000000000000000000000000f5cf673b00000000000000000000000000000000000000000000000000000000f996868b00000000000000000000000000000000000000000000000000000000e15ac62300000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000bee36bb300000000000000000000000000000000000000000000000000000000c5a7b53800000000000000000000000000000000000000000000000000000000de262738000000000000000000000000000000000000000000000000000000008da5cb5a000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000955c2ad700000000000000000000000000000000000000000000000000000000a286c6b400000000000000000000000000000000000000000000000000000000529b1e87000000000000000000000000000000000000000000000000000000005453ba1000000000000000000000000000000000000000000000000000000000715018a60000000000000000000000000000000000000020000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e064647265737300000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f206108c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffff1f000000000000000000000000000000000000000000ffffffffffffffffffffff4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000006400000000000000000000000002000000000000000000000000000000000000400000000000000000000000004f4e4c595f454d495353494f4e5f41444d494e000000000000000000000000001806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000955c2ad700000000000000000000000000000000000000000000000000000000e15ac6230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000005453ba1000000000000000000000000000000000000000000000000000000000c5a7b538000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000f996868b00000000000000000000000000000000000000000000000000000000f5cf673b00000000000000000000000000000000000000000000000000000000da40ea421dd7e42cf8be71255facac4fdc12a3f70f4d5fd373cb16cec4cb53840000000000000000000000000000000000000000000000000000000000000000c0c7766a7e31ddc9744a58129f07fd1027b6e988db0723da6224ce5f716fd8b0
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0x000000000000000000000000b76f765a785eca438e1d95f594490088afaf9acc
-----Decoded View---------------
Arg [0] : owner (address): 0xb76F765A785eCa438e1d95f594490088aFAF9acc
-----Encoded View---------------
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.