ETH Price: $3,864.99 (-0.10%)

Contract

0x66c812e4b6e889B638ff548C8C02C803F640D6d5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To
Amount

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Method Block
Age
From
To
Amount
View All Internal Transactions
Loading...
Loading
Cross-Chain Transactions

Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AaveGenesisProposalPayload

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 30 : AaveGenesisProposalPayload.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import {IProposalExecutor} from './interfaces/IProposalExecutor.sol';
import {IAaveGenesisExecutor} from './interfaces/IAaveGenesisExecutor.sol';
import {IProxyWithAdminActions} from './interfaces/IProxyWithAdminActions.sol';
import {IERC20} from './interfaces/IERC20.sol';
import {IAssetVotingWeightProvider} from './interfaces/IAssetVotingWeightProvider.sol';
import {IStakedAaveConfig} from './interfaces/IStakedAaveConfig.sol';
/**
* @title AaveGenesisProposalPayload
* @notice Proposal payload to be executed by the Aave Governance contract via DELEGATECALL
* - Transfers ownership of the different proxies to the `AaveGenesisExecutor`
* - Lists AAVE and stkAAVE as voting asset in the Aave Governance
* - Activates the cooldown for the activation of the LEND -> AAVE migration
* @author Aave
**/
contract AaveGenesisProposalPayload is IProposalExecutor {
event ProposalExecuted();
/// @dev Initial emission per second approved by the Aave community: 400 AAVE/day
uint128 public constant EMISSION_PER_SECOND_FOR_STAKED_AAVE = 0.00462962962962963 ether;
/// @dev Delta of blocks from the execution of this payload until the activation of the migration
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IProxyWithAdminActions} from './interfaces/IProxyWithAdminActions.sol';
import {
ILendToAaveMigratorImplWithInitialize
} from './interfaces/ILendToAaveMigratorImplWithInitialize.sol';
import {IAaveTokenImpl} from './interfaces/IAaveTokenImpl.sol';
import {
IAaveIncentivesVaultImplWithInitialize
} from './interfaces/IAaveIncentivesVaultImplWithInitialize.sol';
import {IStakedAaveImplWithInitialize} from './interfaces/IStakedAaveImplWithInitialize.sol';
import {IAaveGenesisExecutor} from './interfaces/IAaveGenesisExecutor.sol';
/**
* @title AaveGenesisExecutor
* @notice Smart contract to trigger the LEND -> AAVE migration and enable the staking Safety Module
* - The Aave Governance, on the payload of the proposal will call `setActivationBlock()` with the block
* number at which the migration and staking starts
* - Once that block number is reached, `startMigration()` will be opened to call by anybody, to execute the
* programmed process
* - As to execute all the operations with proxy contracts this contract needs to be the admin, a `returnAdminsToGovernance()`
* function has be added to return back the admin rights to the Aave Governance if after 1 day of the `activationBlock` the
* ownership of the proxies is still on this contract
* @author Aave
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IProxyWithAdminActions {
function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;
function changeAdmin(address newAdmin) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 30 : ILendToAaveMigratorImplWithInitialize.sol
1
2
3
4
5
6
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface ILendToAaveMigratorImplWithInitialize {
function initialize() external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 30 : IAaveTokenImpl.sol
1
2
3
4
5
6
7
8
9
10
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IAaveTokenImpl {
function initialize(
address migrator,
address distributor,
address aaveGovernance
) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 30 : IAaveIncentivesVaultImplWithInitialize.sol
1
2
3
4
5
6
7
8
9
10
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IAaveIncentivesVaultImplWithInitialize {
function initialize(
address aave,
address stakedAave,
uint256 initialStakingDistribution
) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 30 : IStakedAaveImplWithInitialize.sol
1
2
3
4
5
6
7
8
9
10
11
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IStakedAaveImplWithInitialize {
function initialize(
address aaveGovernance,
string calldata name,
string calldata symbol,
uint8 decimals
) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IAaveGenesisExecutor {
event MigrationProgrammedForBlock(uint256 blockNumber);
event MigrationStarted();
function setActivationBlock(uint256 blockNumber) external;
function startMigration() external;
function returnAdminsToGovernance() external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 30 : IProposalExecutor.sol
1
2
3
4
5
6
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IProposalExecutor {
function execute() external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
* From https://github.com/OpenZeppelin/openzeppelin-contracts
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import "./IERC20.sol";
interface IAssetVotingWeightProvider {
function getVotingWeight(IERC20 _asset) external view returns(uint256);
function setVotingWeight(IERC20 _asset, uint256 _weight) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
interface IStakedAaveConfig {
struct AssetConfigInput {
uint128 emissionPerSecond;
uint256 totalStaked;
address underlyingAsset;
}
function configureAssets(AssetConfigInput[] calldata assetsConfigInput) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IERC20} from './interfaces/IERC20.sol';
import {VersionedInitializable} from './libs/VersionedInitializable.sol';
import {SafeERC20} from './libs/SafeERC20.sol';
/**
* @title AaveIncentivesVault
* @notice Stores all the AAVE kept for incentives, just giving approval to the different
* systems that will pull AAVE funds for their specific use case
* @author Aave
**/
contract AaveIncentivesVault is VersionedInitializable {
using SafeERC20 for IERC20;
uint256 public constant REVISION = 1;
/**
* @dev returns the revision of the implementation contract
*/
function getRevision() internal override pure returns (uint256) {
return REVISION;
}
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 30 : VersionedInitializable.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
/**
* @title VersionedInitializable
*
* @dev Helper contract to support initializer functions. To use it, replace
* the constructor with a function that has the `initializer` modifier.
* WARNING: Unlike constructors, initializer functions must be manually
* invoked. This applies both to deploying an Initializable contract, as well
* as extending an Initializable contract via inheritance.
* WARNING: When used with inheritance, manual care must be taken to not invoke
* a parent initializer twice, or ensure that all initializers are idempotent,
* because this is not dealt with automatically as with constructors.
*
* @author Aave, inspired by the OpenZeppelin Initializable contract
*/
abstract contract VersionedInitializable {
/**
* @dev Indicates that the contract has been initialized.
*/
uint256 internal lastInitializedRevision = 0;
/**
* @dev Modifier to use in the initializer function of a contract.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import {IERC20} from '../interfaces/IERC20.sol';
import {SafeMath} from './SafeMath.sol';
import {Address} from './Address.sol';
/**
* @title SafeERC20
* @dev From https://github.com/OpenZeppelin/openzeppelin-contracts
* Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IERC20} from './interfaces/IERC20.sol';
import {IVoteStrategyToken} from './interfaces/IVoteStrategyToken.sol';
import {SafeMath} from './libs/SafeMath.sol';
/**
* @title AaveVoteStrategyToken
* @notice Wrapper contract to allow fetching aggregated balance of AAVE and stkAAVE from an address,
* used on the AaveProtoGovernance
* @author Aave
**/
contract AaveVoteStrategyToken is IVoteStrategyToken {
using SafeMath for uint256;
IERC20 public immutable AAVE;
IERC20 public immutable STKAAVE;
string internal constant NAME = 'Aave Vote Strategy (Aave Token + Staked Aave)';
string internal constant SYMBOL = 'AAVE + stkAAVE';
uint8 internal constant DECIMALS = 18;
constructor(IERC20 aave, IERC20 stkAave) public {
AAVE = aave;
STKAAVE = stkAave;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
interface IVoteStrategyToken {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function balanceOf(address voter) external view returns (uint256);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IERC20} from './IERC20.sol';
/**
* @dev Interface for ERC20 including metadata
**/
interface IERC20Detailed is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IERC20} from './interfaces/IERC20.sol';
import {IVoteStrategyToken} from './interfaces/IVoteStrategyToken.sol';
import {SafeMath} from './libs/SafeMath.sol';
/**
* @title LendVoteStrategyToken
* @notice Wrapper contract to allow fetching aggregated balance of LEND and aLEND from an address,
* used on the AaveProtoGovernance
* @author Aave
**/
contract LendVoteStrategyToken is IVoteStrategyToken {
using SafeMath for uint256;
IERC20 public immutable LEND;
IERC20 public immutable ALEND;
string internal constant NAME = 'Lend Vote Strategy (EthLend Token + Aave Interest bearing LEND)';
string internal constant SYMBOL = 'LEND + aLEND';
uint8 internal constant DECIMALS = 18;
constructor(IERC20 lend, IERC20 aLend) public {
LEND = lend;
ALEND = aLend;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import './UpgradeabilityProxy.sol';
/**
* @title BaseAdminUpgradeabilityProxy
* @dev This contract combines an upgradeability proxy with an authorization
* mechanism for administrative tasks.
* All external functions in this contract must be guarded by the
* `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
* feature proposal that would enable this to be done automatically.
*/
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
/**
* @dev Emitted when the administration has been transferred.
* @param previousAdmin Address of the previous admin.
* @param newAdmin Address of the new admin.
*/
event AdminChanged(address previousAdmin, address newAdmin);
/**
* @dev Storage slot with the admin of the contract.
* This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
* validated in the constructor.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 23 of 30 : UpgradeabilityProxy.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import './BaseUpgradeabilityProxy.sol';
/**
* @title UpgradeabilityProxy
* @dev Extends BaseUpgradeabilityProxy with a constructor for initializing
* implementation and init data.
*/
contract UpgradeabilityProxy is BaseUpgradeabilityProxy {
/**
* @dev Contract constructor.
* @param _logic Address of the initial implementation.
* @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
*/
constructor(address _logic, bytes memory _data) public payable {
assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
_setImplementation(_logic);
if (_data.length > 0) {
(bool success, ) = _logic.delegatecall(_data);
require(success);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import './Proxy.sol';
import './Address.sol';
/**
* @title BaseUpgradeabilityProxy
* @dev This contract implements a proxy that allows to change the
* implementation address to which it will delegate.
* Such a change is called an implementation upgrade.
*/
contract BaseUpgradeabilityProxy is Proxy {
/**
* @dev Emitted when the implementation is upgraded.
* @param implementation Address of the new implementation.
*/
event Upgraded(address indexed implementation);
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
* validated in the constructor.
*/
bytes32
internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @title Proxy
* @dev Implements delegation of calls to other contracts, with proper
* forwarding of return values and bubbling of failures.
* It defines a fallback function that delegates all calls to the address
* returned by the abstract _implementation() internal function.
*/
abstract contract Proxy {
/**
* @dev Fallback function.
* Implemented entirely in `_fallback`.
*/
fallback() external payable {
_fallback();
}
/**
* @return The Address of the implementation.
*/
function _implementation() internal virtual view returns (address);
/**
* @dev Delegates execution to an implementation contract.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// SPDX-License-Identifier: MIT
pragma solidity 0.6.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 virtual view returns (address payable) {
return msg.sender;
}
function _msgData() internal virtual view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {IERC20} from '../interfaces/IERC20.sol';
import {IERC20Detailed} from '../interfaces/IERC20Detailed.sol';
import {Context} from './Context.sol';
import {SafeMath} from './SafeMath.sol';
/**
* @title ERC20
* @notice Basic ERC20 implementation
* @author Aave
**/
contract ERC20 is Context, IERC20, IERC20Detailed {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
constructor(
string memory name,
string memory symbol,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import './BaseAdminUpgradeabilityProxy.sol';
import './InitializableUpgradeabilityProxy.sol';
/**
* @title InitializableAdminUpgradeabilityProxy
* @dev Extends from BaseAdminUpgradeabilityProxy with an initializer for
* initializing the implementation, admin, and init data.
*/
contract InitializableAdminUpgradeabilityProxy is
BaseAdminUpgradeabilityProxy,
InitializableUpgradeabilityProxy
{
/**
* Contract initializer.
* @param _logic address of the initial implementation.
* @param _admin Address of the proxy administrator.
* @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
*/
function initialize(
address _logic,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import './BaseUpgradeabilityProxy.sol';
/**
* @title InitializableUpgradeabilityProxy
* @dev Extends BaseUpgradeabilityProxy with an initializer for initializing
* implementation and init data.
*/
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
/**
* @dev Contract initializer.
* @param _logic Address of the initial implementation.
* @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
*/
function initialize(address _logic, bytes memory _data) public payable {
require(_implementation() == address(0));
assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
_setImplementation(_logic);
if (_data.length > 0) {
(bool success, ) = _logic.delegatecall(_data);
require(success);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;
import {ERC20} from '../libs/ERC20.sol';
/**
* @title ERC20Mintable
* @dev ERC20 minting logic
*/
contract MintableErc20 is ERC20 {
constructor(
string memory name,
string memory symbol,
uint8 decimals
) public ERC20(name, symbol, decimals) {}
/**
* @dev Function to mint tokens
* @param value The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(uint256 value) public returns (bool) {
_mint(msg.sender, value);
return true;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"metadata": {
"useLiteralContent": false
},
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"evmVersion": "istanbul",
"libraries": {}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"activationBlockDelay","type":"uint256"},{"internalType":"contract IAssetVotingWeightProvider","name":"assetVotingWeightProvider","type":"address"},{"internalType":"contract IAaveGenesisExecutor","name":"aaveGenesisExecutor","type":"address"},{"internalType":"contract IProxyWithAdminActions","name":"lendToAaveMigratorProxy","type":"address"},{"internalType":"contract IProxyWithAdminActions","name":"aaveTokenProxy","type":"address"},{"internalType":"contract IProxyWithAdminActions","name":"aaveIncentivesVaultProxy","type":"address"},{"internalType":"contract IProxyWithAdminActions","name":"stakedAaveProxy","type":"address"},{"internalType":"address","name":"lendVoteStrategyToken","type":"address"},{"internalType":"address","name":"aaveVoteStrategyToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"ProposalExecuted","type":"event"},{"inputs":[],"name":"AAVE_GENESIS_EXECUTOR","outputs":[{"internalType":"contract IAaveGenesisExecutor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AAVE_INCENTIVES_VAULT_PROXY","outputs":[{"internalType":"contract IProxyWithAdminActions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AAVE_TOKEN_PROXY","outputs":[{"internalType":"contract IProxyWithAdminActions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AAVE_VOTE_STRATEGY_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ACTIVATION_BLOCK_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ASSET_VOTING_WEIGHT_PROVIDER","outputs":[{"internalType":"contract IAssetVotingWeightProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EMISSION_PER_SECOND_FOR_STAKED_AAVE","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LEND_TO_AAVE_MIGRATOR_PROXY","outputs":[{"internalType":"contract IProxyWithAdminActions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LEND_VOTE_STRATEGY_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKED_AAVE_PROXY","outputs":[{"internalType":"contract IProxyWithAdminActions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101a060405234801561001157600080fd5b50604051610af3380380610af383398101604081905261003091610087565b6080989098526001600160601b0319606097881b811660c05295871b861660a05293861b851660e05291851b841661010052841b831661012052831b821661014052821b81166101605291901b1661018052610158565b60008060008060008060008060006101208a8c0312156100a5578485fd5b8951985060208a01516100b781610140565b60408b01519098506100c881610140565b60608b01519097506100d981610140565b60808b01519096506100ea81610140565b60a08b01519095506100fb81610140565b60c08b015190945061010c81610140565b60e08b015190935061011d81610140565b6101008b015190925061012f81610140565b809150509295985092959850929598565b6001600160a01b038116811461015557600080fd5b50565b60805160a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6108db610218600039806104a3528061071352508061040252806107ae525080610355528061055f52806105b952806107375250806102d7528061077f52508061015e528061025952508061013a52806101dd52508061018252806103d352806104745250806101b3528061063552806106ef525080610665528061075b52506108db6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063869150ba11610071578063869150ba146100ee5780639f911e5c146100f6578063bef25654146100fe578063e10f51e914610113578063f352a0111461011b578063fee3421c14610130576100a9565b80632348c383146100ae578063332a5e5e146100cc57806338a318f3146100d457806361461954146100dc578063841761a2146100e6575b600080fd5b6100b6610138565b6040516100c391906107f0565b60405180910390f35b6100b661015c565b6100b6610180565b6100e46101a4565b005b6100b66106ed565b6100b6610711565b6100b6610735565b610106610759565b6040516100c3919061089c565b6100b661077d565b6101236107a1565b6040516100c39190610888565b6100b66107ac565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516308f2839760e41b81527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638f283970906102129084906004016107f0565b600060405180830381600087803b15801561022c57600080fd5b505af1158015610240573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250638f28397091506102909084906004016107f0565b600060405180830381600087803b1580156102aa57600080fd5b505af11580156102be573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250638f283970915061030e9084906004016107f0565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250638f283970915061038c9084906004016107f0565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b5050604051632144e77f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634289cefe915061042d907f00000000000000000000000000000000000000000000000000000000000000009060009060040161086f565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b5050604051632144e77f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250634289cefe91506104ce907f00000000000000000000000000000000000000000000000000000000000000009060019060040161086f565b600060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b5050604080516001808252818301909252606093509150816020015b6105206107d0565b81526020019060019003908161051857905050905060405180606001604052806610729fa58404be6001600160801b03168152602001600081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152508160008151811061059757fe5b6020908102919091010152604051635952edfd60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b2a5dbfa906105ee908490600401610804565b600060405180830381600087803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b50506040516346592df960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250638cb25bf2915061068e90437f0000000000000000000000000000000000000000000000000000000000000000019060040161089c565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b50506040517fcf88c657fb0ecbed2a624b6b4c626e2ceda32ea9ed16ea81de6362a6d965bd08925060009150a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6610729fa58404be81565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516060810182526000808252602082018190529181019190915290565b6001600160a01b0391909116815260200190565b602080825282518282018190526000919060409081850190868401855b8281101561086257815180516001600160801b0316855286810151878601528501516001600160a01b03168585015260609093019290850190600101610821565b5091979650505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160801b0391909116815260200190565b9081526020019056fea2646970667358221220b05b8a1084407534cc5bc30c1be5c00f001f83098199391426a26d6b0590321b64736f6c634300060c003300000000000000000000000000000000000000000000000000000000000019640000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a007000000000000000000000000317625234562b1526ea2fac4030ea499c5291de40000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae900000000000000000000000025f2226b597e8f9514b3f68f00f494cf4f2864910000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f50000000000000000000000000671ca7e039af2cf2d2c5e7f1aa261ae78b3ffdf000000000000000000000000a5e83c1a6e56f27f7764e5c5d99a9b8786e3a391

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063869150ba11610071578063869150ba146100ee5780639f911e5c146100f6578063bef25654146100fe578063e10f51e914610113578063f352a0111461011b578063fee3421c14610130576100a9565b80632348c383146100ae578063332a5e5e146100cc57806338a318f3146100d457806361461954146100dc578063841761a2146100e6575b600080fd5b6100b6610138565b6040516100c391906107f0565b60405180910390f35b6100b661015c565b6100b6610180565b6100e46101a4565b005b6100b66106ed565b6100b6610711565b6100b6610735565b610106610759565b6040516100c3919061089c565b6100b661077d565b6101236107a1565b6040516100c39190610888565b6100b66107ac565b7f000000000000000000000000317625234562b1526ea2fac4030ea499c5291de481565b7f0000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae981565b7f0000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa81565b6040516308f2839760e41b81527f000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a007906001600160a01b037f000000000000000000000000317625234562b1526ea2fac4030ea499c5291de41690638f283970906102129084906004016107f0565b600060405180830381600087803b15801561022c57600080fd5b505af1158015610240573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f0000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9169250638f28397091506102909084906004016107f0565b600060405180830381600087803b1580156102aa57600080fd5b505af11580156102be573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f00000000000000000000000025f2226b597e8f9514b3f68f00f494cf4f286491169250638f283970915061030e9084906004016107f0565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b50506040516308f2839760e41b81526001600160a01b037f0000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f5169250638f283970915061038c9084906004016107f0565b600060405180830381600087803b1580156103a657600080fd5b505af11580156103ba573d6000803e3d6000fd5b5050604051632144e77f60e11b81526001600160a01b037f0000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa169250634289cefe915061042d907f0000000000000000000000000671ca7e039af2cf2d2c5e7f1aa261ae78b3ffdf9060009060040161086f565b600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b5050604051632144e77f60e11b81526001600160a01b037f0000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa169250634289cefe91506104ce907f000000000000000000000000a5e83c1a6e56f27f7764e5c5d99a9b8786e3a3919060019060040161086f565b600060405180830381600087803b1580156104e857600080fd5b505af11580156104fc573d6000803e3d6000fd5b5050604080516001808252818301909252606093509150816020015b6105206107d0565b81526020019060019003908161051857905050905060405180606001604052806610729fa58404be6001600160801b03168152602001600081526020017f0000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f56001600160a01b03168152508160008151811061059757fe5b6020908102919091010152604051635952edfd60e11b81526001600160a01b037f0000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f5169063b2a5dbfa906105ee908490600401610804565b600060405180830381600087803b15801561060857600080fd5b505af115801561061c573d6000803e3d6000fd5b50506040516346592df960e11b81526001600160a01b037f000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a007169250638cb25bf2915061068e90437f0000000000000000000000000000000000000000000000000000000000001964019060040161089c565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b50506040517fcf88c657fb0ecbed2a624b6b4c626e2ceda32ea9ed16ea81de6362a6d965bd08925060009150a15050565b7f000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a00781565b7f000000000000000000000000a5e83c1a6e56f27f7764e5c5d99a9b8786e3a39181565b7f0000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f581565b7f000000000000000000000000000000000000000000000000000000000000196481565b7f00000000000000000000000025f2226b597e8f9514b3f68f00f494cf4f28649181565b6610729fa58404be81565b7f0000000000000000000000000671ca7e039af2cf2d2c5e7f1aa261ae78b3ffdf81565b604080516060810182526000808252602082018190529181019190915290565b6001600160a01b0391909116815260200190565b602080825282518282018190526000919060409081850190868401855b8281101561086257815180516001600160801b0316855286810151878601528501516001600160a01b03168585015260609093019290850190600101610821565b5091979650505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160801b0391909116815260200190565b9081526020019056fea2646970667358221220b05b8a1084407534cc5bc30c1be5c00f001f83098199391426a26d6b0590321b64736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000019640000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a007000000000000000000000000317625234562b1526ea2fac4030ea499c5291de40000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae900000000000000000000000025f2226b597e8f9514b3f68f00f494cf4f2864910000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f50000000000000000000000000671ca7e039af2cf2d2c5e7f1aa261ae78b3ffdf000000000000000000000000a5e83c1a6e56f27f7764e5c5d99a9b8786e3a391

-----Decoded View---------------
Arg [0] : activationBlockDelay (uint256): 6500
Arg [1] : assetVotingWeightProvider (address): 0x5aC493b8C2cEf1F02F117B9BA2797e7DA95574aa
Arg [2] : aaveGenesisExecutor (address): 0xA133459B2502B0137E85A446FA8D4e300877A007
Arg [3] : lendToAaveMigratorProxy (address): 0x317625234562B1526Ea2FaC4030Ea499C5291de4
Arg [4] : aaveTokenProxy (address): 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9
Arg [5] : aaveIncentivesVaultProxy (address): 0x25F2226B597E8F9514B3F68F00f494cF4f286491
Arg [6] : stakedAaveProxy (address): 0x4da27a545c0c5B758a6BA100e3a049001de870f5
Arg [7] : lendVoteStrategyToken (address): 0x0671CA7E039af2cF2D2c5e7F1Aa261Ae78B3ffDF
Arg [8] : aaveVoteStrategyToken (address): 0xA5E83c1a6E56f27F7764E5C5d99A9B8786e3a391

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000001964
Arg [1] : 0000000000000000000000005ac493b8c2cef1f02f117b9ba2797e7da95574aa
Arg [2] : 000000000000000000000000a133459b2502b0137e85a446fa8d4e300877a007
Arg [3] : 000000000000000000000000317625234562b1526ea2fac4030ea499c5291de4
Arg [4] : 0000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
Arg [5] : 00000000000000000000000025f2226b597e8f9514b3f68f00f494cf4f286491
Arg [6] : 0000000000000000000000004da27a545c0c5b758a6ba100e3a049001de870f5
Arg [7] : 0000000000000000000000000671ca7e039af2cf2d2c5e7f1aa261ae78b3ffdf
Arg [8] : 000000000000000000000000a5e83c1a6e56f27f7764e5c5d99a9b8786e3a391


Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

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.