AAVE

Ethereum ERC-20 Token

0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9

Proxy implementation: 0x5d4aa78b08bc7c530e21bf7447988b1be7991322

Solidity v0.8.20+commit.a1b79de6

Fungible token following the ERC-20 standard.

🤖
Query this contract from your AI
Reference: aave-eth 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
Sample prompt: “Tell me the current state of aave-eth”
No AI wired up yet? → mcp.smarts.md

Admin & Risk

Who can change the rules?

Detected upgradeable controls from the verified ABI.

Upgradeable

Current controls

Implementation
0x5d4aa78b08bc7c530e21bf7447988b1be7991322 ↗ Etherscan → smarts proxy

Recent governance

117 privileged events loaded. Latest: DelegateChanged at block #25,138,175.

Overview

Read Functions
18
Write Functions
11
Events
4

Read Functions

Block #25,169,803 · just now
DELEGATE_BY_TYPE_TYPEHASH() view → 0x6e77642f8f60cdece0498bfeeb2f06ccfef0e8f86d28a1b6255c5e48f1d72a03

Returns the EIP-712 type hash used for delegateByType signature construction.✨ AI

Returns

Name Type Description
bytes32 The bytes32 EIP-712 typehash constant for the delegateByType function signatures.✨ AI
DELEGATE_TYPEHASH() view → 0xd46e8b93b5190df6403875402a5c13897b72d2a576da5d1bfea20a63638d216e

Returns the EIP-712 typehash used when creating signed delegation messages.✨ AI

Returns

Name Type Description
bytes32 The bytes32 EIP-712 typehash for the Delegation struct used in signed delegation messages.✨ AI
DOMAIN_SEPARATOR() view → 0x3164404b05fe2af07131d621d03271b4ed40bef429770f09f62624dcca86b9d5

Return the EIP-712 domain separator used for signing typed data like permits.✨ AI

dev: Domain separator per EIP-712; may change if chainId or domain fields (e.g., name, version) change.✨ AI

Returns

Name Type Description
bytes32 The domain separator (bytes32) used to build EIP-712 typed-data hashes for signature verification.✨ AI
PERMIT_TYPEHASH() view → 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9

Returns the EIP-2612 permit typehash used for permit signatures.✨ AI

Returns

Name Type Description
bytes32 keccak256 hash (bytes32) of the permit struct type used in EIP-2612 permit signatures.✨ AI
POWER_SCALE_FACTOR() view → 10,000,000,000

Returns the constant scaling factor used by the contract for power-related fixed-point math.✨ AI

Returns

Name Type Description
uint256 The uint256 constant scaling factor used to scale values for power and fixed-point math operations.✨ AI
REVISION() view → 4

Get the contract revision number used to identify this implementation.✨ AI

Returns

Name Type Description
uint256 The numeric revision identifier of the contract implementation.✨ AI
_nonces(address) view

Returns the current permit nonce for the given address.✨ AI

Parameters

Name Type Description
address

Returns

Name Type Description
uint256 Current nonce (uint256) for the address, used to prevent replay of signed messages.✨ AI
allowance(owner: address, spender: address) view

Return the remaining number of tokens that spender is allowed to transfer from owner.✨ AI

dev: Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.

Parameters

Name Type Description
owner address Address of the token holder who granted the allowance.✨ AI
spender address Address permitted to spend tokens on behalf of the owner.✨ AI

Returns

Name Type Description
uint256 Remaining allowance as a uint256 value (token smallest units) that spender can transfer from owner.✨ AI
balanceOf(account: address) view

Returns the token balance of the specified account.✨ AI

dev: Returns the amount of tokens owned by `account`.

Parameters

Name Type Description
account address Address to query the token balance for.✨ AI

Returns

Name Type Description
uint256 The token balance of the account as a uint256, expressed in the token's smallest unit.✨ AI
decimals() view → 18

Returns the number of decimals used by the token for user representation and calculations.✨ AI

dev: Returns the decimals places of the token.

Returns

Name Type Description
uint8 The token's decimals as an unsigned 8-bit integer indicating number of decimal places.✨ AI
eip712Domain() view → 0x0f, Aave token V3, 2, 1, 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9, 0x0000000000000000000000000000000000000000000000000000000000000000, []

Return the EIP-712 domain components used to sign typed data for this token.✨ AI

dev: See {EIP-5267}. _Available since v4.9._

Returns

Name Type Description
fields bytes1 EIP-712 domain fields marker or bitmap represented as a single byte.✨ AI
name string Human-readable name included in the EIP-712 domain (token name).✨ AI
version string Version string included in the EIP-712 domain (protocol/contract version).✨ AI
chainId uint256 Chain ID where the contract is deployed, used in the domain separator.✨ AI
verifyingContract address Address of the verifying contract included in the domain separator.✨ AI
salt bytes32 Optional domain salt value as a 32-byte bytes32 for uniqueness.✨ AI
extensions uint256[] Array of uint256 extension values included in the domain, if any.✨ AI
getDelegateeByType(delegator: address, delegationType: uint8) view

Get the delegatee address that a delegator set for a specific delegation type.✨ AI

dev: returns the delegatee of an user

Parameters

Name Type Description
delegator address the address of the delegator
delegationType uint8 the type of delegation (VOTING, PROPOSITION)

Returns

Name Type Description
address address of the specified delegatee
getDelegates(delegator: address) view

Return the two current delegate addresses for the given delegator.✨ AI

dev: returns delegates of an user

Parameters

Name Type Description
delegator address the address of the delegator

Returns

Name Type Description
address a tuple of addresses the VOTING and PROPOSITION delegatee
address Address of the proposition delegate the delegator has set.✨ AI
getPowerCurrent(user: address, delegationType: uint8) view

Return the current delegated power balance for a user for the specified delegation type.✨ AI

dev: returns the current voting or proposition power of a user.

Parameters

Name Type Description
user address the user
delegationType uint8 the type of delegation (VOTING, PROPOSITION)

Returns

Name Type Description
uint256 the current voting or proposition power of a user
getPowersCurrent(user: address) view

Return the current power values associated with a user address.✨ AI

dev: returns the current voting or proposition power of a user.

Parameters

Name Type Description
user address the user

Returns

Name Type Description
uint256 the current voting and proposition power of a user
uint256 The user's current delegated power as a uint256.✨ AI
name() view → Aave Token

Get the token's name.✨ AI

dev: Returns the name of the token.

Returns

Name Type Description
string The token's name as a string.✨ AI
symbol() view → AAVE

Returns the token's symbol used to identify this AaveTokenV3.✨ AI

dev: Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
string The token symbol as a string, e.g. "AAVE".✨ AI
totalSupply() view → 16,000,000 AAVE

Returns the total supply of tokens.✨ AI

dev: Returns the amount of tokens in existence.

Returns

Name Type Description
uint256 Total number of tokens in existence as a uint256.✨ AI

Write Functions

approve(spender: address, amount: uint256) nonpayable

Approve spender to transfer up to amount tokens on your behalf.✨ AI

dev: Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.

Parameters

Name Type Description
spender address Address allowed to spend tokens.✨ AI
amount uint256 Maximum number of tokens the spender is allowed to use.✨ AI

Returns

Name Type Description
bool True if the approval succeeded.✨ AI
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable

Decrease the caller's allowance for a spender by a specified amount.✨ AI

Parameters

Name Type Description
spender address The address allowed to spend the tokens.✨ AI
subtractedValue uint256 The amount to subtract from the current allowance.✨ AI

Returns

Name Type Description
bool true if the allowance was decreased successfully.✨ AI
delegate(delegatee: address) nonpayable

Delegate the caller's voting power to the given address.✨ AI

dev: delegates all the governance powers to a specific user

Parameters

Name Type Description
delegatee address the user to which the powers will be delegated
delegateByType(delegatee: address, delegationType: uint8) nonpayable

Delegate a specific type of governance power to a delegatee address.✨ AI

dev: delegates the specific power to a delegatee

Parameters

Name Type Description
delegatee address the user which delegated power will change
delegationType uint8 the type of delegation (VOTING, PROPOSITION)
increaseAllowance(spender: address, addedValue: uint256) nonpayable

Increases the token allowance for a spender by a specified amount.✨ AI

Parameters

Name Type Description
spender address Address allowed to spend tokens on the caller's behalf.✨ AI
addedValue uint256 Amount to add to the spender's current allowance.✨ AI

Returns

Name Type Description
bool True if the allowance was increased successfully.✨ AI
initialize() nonpayable

Initializes the AaveTokenV3 token contract and configures its initial state for operation.✨ AI

dev: initializes the contract upon assignment to the InitializableAdminUpgradeabilityProxy
metaDelegate(delegator: address, delegatee: address, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Allow a delegator to set a delegatee using an off-chain signature.✨ AI

dev: implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md

Parameters

Name Type Description
delegator address the owner of the funds
delegatee address the user to who delegator delegates his voting and proposition governance power
deadline uint256 the deadline timestamp, type(uint256).max for no deadline
v uint8 signature param
r bytes32 signature param
s bytes32 signature param
metaDelegateByType(delegator: address, delegatee: address, delegationType: uint8, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Delegate a specific type of voting power from a delegator to a delegatee using an off-chain signature before deadline.✨ AI

dev: implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md

Parameters

Name Type Description
delegator address the owner of the funds
delegatee address the user to who owner delegates his governance power
delegationType uint8 the type of governance power delegation (VOTING, PROPOSITION)
deadline uint256 the deadline timestamp, type(uint256).max for no deadline
v uint8 signature param
r bytes32 signature param
s bytes32 signature param
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Approve spender using owner's EIP-2612 signature (permit) before the deadline.✨ AI

dev: implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md

Parameters

Name Type Description
owner address the owner of the funds
spender address the spender
value uint256 the amount
deadline uint256 the deadline timestamp, type(uint256).max for no deadline
v uint8 signature param
r bytes32 signature param
s bytes32 signature param
transfer(to: address, amount: uint256) nonpayable

Transfer tokens from your account to the specified recipient.✨ AI

dev: Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

Name Type Description
to address Recipient address that will receive the tokens.✨ AI
amount uint256 Amount of tokens to transfer, denominated in the token's smallest unit.✨ AI

Returns

Name Type Description
bool True if the transfer succeeded.✨ AI
transferFrom(from: address, to: address, amount: uint256) nonpayable

Transfer tokens from one address to another using the caller's approved allowance.✨ AI

dev: Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

Name Type Description
from address Address to debit tokens from.✨ AI
to address Address to credit tokens to.✨ AI
amount uint256 Number of tokens to transfer.✨ AI

Returns

Name Type Description
bool True if the transfer succeeded and balances and allowance were updated.✨ AI

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
DelegateChanged(delegator: address, delegatee: address, delegationType: uint8)
Name Type Indexed Description
delegator address the user which delegated governance power
delegatee address the delegatee
delegationType uint8 the type of delegation (VOTING, PROPOSITION)
EIP712DomainChanged()
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256