ENS

Ethereum ERC-20 Token Browse chains

0xc18360217d8f7ab5e7c516566761ea12ce7f9d72

Solidity v0.8.7+commit.e28d00a7

Fungible token following the ERC-20 standard.

🤖
Query this contract from your AI
Reference: ens-eth 0xc18360217d8f7ab5e7c516566761ea12ce7f9d72
Sample prompt: "Tell me the current state of ens-eth"
No AI wired up yet? → mcp.smarts.md · Browse chains

Admin & Risk

Who can change the rules?

Block #25,493,360

Detected mintable and ownable controls from the verified ABI.

Mintable Ownable

Current controls

Owner
0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7 wallet.ensdao.eth ↗ Etherscan → smarts

Recent governance

1569 privileged events loaded. Latest: DelegateVotesChanged at block #25,492,704.

Overview

Read Functions
21
Write Functions
14
Events
7

Read Functions

Block #25,493,360 · just now
DOMAIN_SEPARATOR() view → 0x3172a7257acc6467eb985cfb1d52917228ac18e308bae31d65407e0983bd10a2

Returns the EIP-712 domain separator used to sign and verify typed data for off-chain signatures.✨ AI

Returns

Name Type Description
bytes32 The 32-byte EIP-712 domain separator for this contract, used when hashing and verifying typed data signatures.✨ AI
allowance(owner: address, spender: address) view

Returns the remaining number of tokens that spender is allowed to spend on behalf of owner.✨ AI

dev: See {IERC20-allowance}.

Parameters

Name Type Description
owner address Address that owns the tokens.✨ AI
spender address Address allowed to spend the owner's tokens.✨ AI

Returns

Name Type Description
uint256 Remaining number of tokens spender is allowed to transfer from owner.✨ AI
balanceOf(account: address) view

Returns the ENSToken balance for the specified account.✨ AI

dev: See {IERC20-balanceOf}.

Parameters

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

Returns

Name Type Description
uint256 The token balance of the account as a uint256.✨ AI
checkpoints(account: address, pos: uint32) view

Return the checkpoint for an account at the given index.✨ AI

dev: Get the `pos`-th checkpoint for `account`.

Parameters

Name Type Description
account address Address whose checkpoints are queried.✨ AI
pos uint32 Zero-based index of the checkpoint to retrieve.✨ AI

Returns

Name Type Description
tuple Block number (uint32) when the checkpoint was recorded.✨ AI
claimPeriodEnds() view → 1,651,622,400

Get the Unix timestamp when the current token claim period ends.✨ AI

Returns

Name Type Description
uint256 Unix timestamp (seconds) marking the end of the current claim period.✨ AI
decimals() view → 18

Return the number of decimal places the token uses.✨ AI

dev: Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.

Returns

Name Type Description
uint8 The number of decimal places used to display token balances (uint8).✨ AI
delegates(account: address) view

Return the current delegate address for the given account.✨ AI

dev: Get the address `account` is currently delegating to.

Parameters

Name Type Description
account address Address of the token holder whose delegate you want to query.✨ AI

Returns

Name Type Description
address Address currently authorized to vote on behalf of the account, or the zero address if no delegate is set.✨ AI
getPastTotalSupply(blockNumber: uint256) view

Get the total token supply at a past block.✨ AI

dev: Retrieve the `totalSupply` at the end of `blockNumber`. Note, this value is the sum of all balances. It is but NOT the sum of all the delegated votes! Requirements: - `blockNumber` must have been already mined

Parameters

Name Type Description
blockNumber uint256 Block number to query the total supply for.✨ AI

Returns

Name Type Description
uint256 Total token supply at the specified past block.✨ AI
getPastVotes(account: address, blockNumber: uint256) view

Return the number of votes held by account at the end of blockNumber.✨ AI

dev: Retrieve the number of votes for `account` at the end of `blockNumber`. Requirements: - `blockNumber` must have been already mined

Parameters

Name Type Description
account address Address whose prior voting power to retrieve.✨ AI
blockNumber uint256 Block number at which to read the voting power.✨ AI

Returns

Name Type Description
uint256 Voting power (number of votes) account had at the end of the given block.✨ AI
getVotes(account: address) view

Return the current voting power for the specified account.✨ AI

dev: Gets the current votes balance for `account`

Parameters

Name Type Description
account address Address whose delegated voting power is being queried.✨ AI

Returns

Name Type Description
uint256 The current number of votes (uint256) assigned to the account.✨ AI
isClaimed(index: uint256) view

Checks whether the claim at the given index has already been made.✨ AI

dev: Returns true if the claim at the given index in the merkle tree has already been made.

Parameters

Name Type Description
index uint256 The index into the merkle tree.

Returns

Name Type Description
bool True if the claim at the index was already claimed; otherwise false.✨ AI
merkleRoot() view → 0xaca22207fc31a4c3ecd6ab11ce2df3db64b8afeba4f31db2b9aeb76f1dada659

Return the current Merkle root used to validate claim or allocation proofs.✨ AI

Returns

Name Type Description
bytes32 The stored bytes32 Merkle root used by the contract to verify Merkle proofs for claims or allocations.✨ AI
minimumMintInterval() view → 31,536,000

Return the minimum required time interval between successive mint operations.✨ AI

Returns

Name Type Description
uint256 Minimum time interval in seconds that must elapse between two mint calls.✨ AI
mintCap() view → 200

Returns the maximum number of tokens that can be minted by the contract.✨ AI

Returns

Name Type Description
uint256 The mint cap as a uint256 representing the maximum total supply allowed to be minted.✨ AI
name() view → Ethereum Name Service

Returns the token's name.✨ AI

dev: Returns the name of the token.

Returns

Name Type Description
string The token name as a string.✨ AI
nextMint() view → 1,667,336,117

Return the amount of tokens scheduled for the next mint operation.✨ AI

Returns

Name Type Description
uint256 Number of tokens that will be minted by the next mint call, expressed in the token's smallest unit.✨ AI
nonces(owner: address) view

Returns the current nonce for an address used to prevent replay of permit or meta-transaction signatures.✨ AI

dev: See {IERC20Permit-nonces}.

Parameters

Name Type Description
owner address Address whose nonce is returned; used to validate and prevent replay of signatures.✨ AI

Returns

Name Type Description
uint256 The current nonce for the owner address; increments each time a signature-consuming operation is performed.✨ AI
numCheckpoints(account: address) view

Return the number of voting checkpoints recorded for an account.✨ AI

dev: Get number of checkpoints for `account`.

Parameters

Name Type Description
account address Account to query for checkpoint count.✨ AI

Returns

Name Type Description
uint32 Number of checkpoints (uint32) recorded for the account.✨ AI
owner() view → 0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7

Returns the contract owner's address.✨ AI

dev: Returns the address of the current owner.

Returns

Name Type Description
address The address of the contract owner who holds administrative privileges.✨ AI
symbol() view → ENS

Returns the token's symbol.✨ AI

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

Returns

Name Type Description
string The token's short, human-readable symbol (for example: "ENS").✨ AI
totalSupply() view → 100,000,000 ENS

Returns the total number of ENSToken units in existence.✨ AI

dev: See {IERC20-totalSupply}.

Returns

Name Type Description
uint256 Total supply of tokens as a uint256, expressed in the token's smallest indivisible unit.✨ AI

Write Functions

approve(spender: address, amount: uint256) nonpayable

Approve spender to transfer up to amount tokens from the caller's account.✨ AI

dev: See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address Address allowed to spend the caller's tokens.✨ AI
amount uint256 Maximum number of tokens the spender may transfer.✨ AI

Returns

Name Type Description
bool True if the approval was successful.✨ AI
claimTokens(amount: uint256, delegate: address, merkleProof: bytes32[]) nonpayable

Claim allocated ENS tokens by proving entitlement with a Merkle proof and optionally set a delegate.✨ AI

dev: Claims airdropped tokens.

Parameters

Name Type Description
amount uint256 The amount of the claim being made.
delegate address The address the tokenholder wants to delegate their votes to.
merkleProof bytes32[] A merkle proof proving the claim is valid.
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable

Decrease the ERC-20 allowance for spender by subtractedValue.✨ AI

dev: Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.

Parameters

Name Type Description
spender address Address approved to spend tokens on behalf of the caller.✨ AI
subtractedValue uint256 Amount to subtract from the spender's 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 specified address.✨ AI

dev: Delegate votes from the sender to `delegatee`.

Parameters

Name Type Description
delegatee address Address that will receive the caller's delegated voting power.✨ AI
delegateBySig(delegatee: address, nonce: uint256, expiry: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Allow an account to set a delegate for its voting power via an off-chain signature.✨ AI

dev: Delegates votes from signer to `delegatee`

Parameters

Name Type Description
delegatee address Address to receive delegated voting power.✨ AI
nonce uint256 Unique number to prevent signature replay for the signer.✨ AI
expiry uint256 Timestamp after which the signature is invalid.✨ AI
v uint8 ECDSA recovery byte v from the signer's signature.✨ AI
r bytes32 ECDSA signature r value.✨ AI
s bytes32 ECDSA signature s value.✨ AI
increaseAllowance(spender: address, addedValue: uint256) nonpayable

Increase the caller's ERC-20 allowance for a spender by addedValue.✨ AI

dev: Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address Address that will be allowed to spend the caller's tokens.✨ AI
addedValue uint256 Amount of tokens to add to the existing allowance for spender.✨ AI

Returns

Name Type Description
bool True if the allowance was increased successfully.✨ AI
mint(dest: address, amount: uint256) nonpayable

Mints new tokens to the specified address, increasing the total supply.✨ AI

dev: Mints new tokens. Can only be executed every `minimumMintInterval`, by the owner, and cannot exceed `mintCap / 10000` fraction of the current total supply.

Parameters

Name Type Description
dest address The address to mint the new tokens to.
amount uint256 The quantity of tokens to mint.
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Allow spender to spend tokens on behalf of owner using an off-chain EIP-2612 signature before the deadline.✨ AI

dev: See {IERC20Permit-permit}.

Parameters

Name Type Description
owner address Token holder address that signed the permit.✨ AI
spender address Address being approved to spend the tokens.✨ AI
value uint256 Number of tokens to approve.✨ AI
deadline uint256 Unix timestamp when the permit expires.✨ AI
v uint8 Signature recovery id (part of the ECDSA signature).✨ AI
r bytes32 First 32 bytes of the ECDSA signature.✨ AI
s bytes32 Second 32 bytes of the ECDSA signature.✨ AI
renounceOwnership() nonpayable

Relinquish ownership of the contract by setting the owner to the zero address.✨ AI

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.
setMerkleRoot(_merkleRoot: bytes32) nonpayable
dev: Sets the merkle root. Only callable if the root is not yet set.

Parameters

Name Type Description
_merkleRoot bytes32 The merkle root to set.
sweep(dest: address) nonpayable
dev: Allows the owner to sweep unclaimed tokens after the claim period ends.

Parameters

Name Type Description
dest address The address to sweep the tokens to.
transfer(recipient: address, amount: uint256) nonpayable
dev: See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.

Parameters

Name Type Description
recipient address
amount uint256

Returns

Name Type Description
bool
transferFrom(sender: address, recipient: address, amount: uint256) nonpayable
dev: See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.

Parameters

Name Type Description
sender address
recipient address
amount uint256

Returns

Name Type Description
bool
transferOwnership(newOwner: address) nonpayable
dev: Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.

Parameters

Name Type Description
newOwner address

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
Claim(claimant: address, amount: uint256)
Name Type Indexed Description
claimant address
amount uint256
DelegateChanged(delegator: address, fromDelegate: address, toDelegate: address)
Name Type Indexed Description
delegator address
fromDelegate address
toDelegate address
DelegateVotesChanged(delegate: address, previousBalance: uint256, newBalance: uint256)
Name Type Indexed Description
delegate address
previousBalance uint256
newBalance uint256
MerkleRootChanged(merkleRoot: bytes32)
Name Type Indexed Description
merkleRoot bytes32
OwnershipTransferred(previousOwner: address, newOwner: address)
Name Type Indexed Description
previousOwner address
newOwner address
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256