StablecoinV2

Ethereum ERC-20 Token Browse chains

0x694aa534bdef8ed63244eb902e7914e527891f08

Solidity v0.8.24+commit.e11b9ed9

Fungible token following the ERC-20 standard.

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

Admin & Risk

Who can change the rules?

Block #25,291,619

Detected mintable, pausable, freezable, and ownable controls from the verified ABI.

Mintable Pausable Freezable Ownable

Current controls

Paused
false
Owner
0x0000000000000000000000000000000000000000 (none)

Overview

Read Functions
19
Write Functions
23
Events
17

Read Functions

Block #25,291,619 · just now
CANCEL_AUTHORIZATION_TYPEHASH() view → 0x158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429

Return the EIP-712 typehash used to validate cancelAuthorization signatures.✨ AI

Returns

Name Type Description
bytes32 bytes32 EIP-712 typehash for the cancelAuthorization struct used in signature verification✨ AI
DOMAIN_SEPARATOR() view → 0xad5aa9fc0ad0c485a6238d3ce29e6821f2ab1ecbd9fe07dd31b5130d857b9708

Returns the current EIP-712 domain separator used to sign typed data for this token.✨ AI

Returns

Name Type Description
bytes32 The EIP-712 domain separator (bytes32) used in permit and other typed-data signatures for this token.✨ AI
RECEIVE_WITH_AUTHORIZATION_TYPEHASH() view → 0xd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8

Returns the EIP-712 typehash used to encode receiveWithAuthorization authorization messages.✨ AI

Returns

Name Type Description
bytes32 The keccak256 typehash (bytes32) for the receiveWithAuthorization struct used in signed authorizations.✨ AI
TRANSFER_WITH_AUTHORIZATION_TYPEHASH() view → 0x7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267

Return the EIP-712 typehash used to build and verify transferWithAuthorization signatures.✨ AI

Returns

Name Type Description
bytes32 The bytes32 EIP-712 typehash for the TransferWithAuthorization struct used to verify signatures.✨ AI
allowance(owner: address, spender: address) view

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

dev: See {IERC20-allowance}.

Parameters

Name Type Description
owner address Address that owns the tokens.✨ AI
spender address Address authorized to spend tokens on behalf of the owner.✨ AI

Returns

Name Type Description
uint256 Remaining allowance expressed in the token's smallest unit (uint256).✨ AI
authorizationState(authorizer: address, nonce: bytes32) view

Returns the state of an authorization

dev: Nonces are randomly generated 32-byte data unique to the authorizer's address

Parameters

Name Type Description
authorizer address Authorizer's address
nonce bytes32 Nonce of the authorization

Returns

Name Type Description
bool True if the nonce is used
balanceOf(account: address) view

Returns the token balance of the given account.✨ AI

dev: See {IERC20-balanceOf}.

Parameters

Name Type Description
account address Account address whose token balance is being queried.✨ AI

Returns

Name Type Description
uint256 Current token balance of the account as an unsigned 256-bit integer.✨ AI
decimals() view → 18

Returns the number of decimals the token uses for user displays and calculations.✨ 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 default value returned by this function, unless it's 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 uint8 number of decimal places the token reports (e.g., 18).✨ AI
eip712Domain() view → 0x0f, , , 1, 0x694aa534bdef8ed63244eb902e7914e527891f08, 0x0000000000000000000000000000000000000000000000000000000000000000, []

Returns the EIP-712 domain fields used to sign and verify typed data.✨ AI

dev: returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.

Returns

Name Type Description
fields bytes1 Domain fields bitmap or type indicator encoded as a single byte (bytes1).✨ AI
name string Human-readable domain name (string).✨ AI
version string Domain version string (string).✨ AI
chainId uint256 Chain identifier where the domain is valid (uint256).✨ AI
verifyingContract address Address of the contract that verifies EIP-712 signatures (address).✨ AI
salt bytes32 Domain salt for additional uniqueness (bytes32).✨ AI
extensions uint256[] Array of extension field identifiers or values for the domain (uint256[]).✨ AI
frozen(address) view

Checks whether the given account is frozen and prevented from transferring tokens.✨ AI

Parameters

Name Type Description
address

Returns

Name Type Description
bool True if the account is frozen and cannot transfer tokens; false otherwise.✨ AI
name() view

Return the ERC-20 token name.✨ AI

dev: Returns the name of the token.

Returns

Name Type Description
string The token's human-readable name as a string.✨ AI
nonces(owner: address) view

Get the current permit nonce for an owner used to prevent replay of signed permits.✨ AI

dev: Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.

Parameters

Name Type Description
owner address Address whose permit nonce is returned.✨ AI

Returns

Name Type Description
uint256 The current uint256 nonce for the owner, incremented each time a permit signature is used.✨ AI
owner() view → 0x0000000000000000000000000000000000000000

Returns the address of the contract owner.✨ AI

dev: Returns the address of the current owner.

Returns

Name Type Description
address Address of the owner account that holds administrative privileges.✨ AI
paused() view → false

Returns true when the contract is paused, disabling transfers and other restricted actions.✨ AI

dev: Returns true if the contract is paused, and false otherwise.

Returns

Name Type Description
bool True if the contract is currently paused; false otherwise.✨ AI
pendingOwner() view → 0x0000000000000000000000000000000000000000

Returns the address designated to become the contract owner if they accept ownership.✨ AI

dev: Returns the address of the pending owner.

Returns

Name Type Description
address The address currently set as the pending owner who can accept ownership.✨ AI
renounceOwnership() view reverted

Call the disabled renounceOwnership function; it does not change contract ownership.✨ AI

dev: Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.
symbol() view

Returns the token's short symbol used to identify the token in user interfaces.✨ AI

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

Returns

Name Type Description
string The token symbol string (e.g., "USDC").✨ AI
totalSupply() view → 0

Get the total supply of the token.✨ AI

dev: See {IERC20-totalSupply}.

Returns

Name Type Description
uint256 Total number of tokens in existence as a uint256 (total minted minus burned).✨ AI
version() view → 2

Returns the contract version number for client display and compatibility checks.✨ AI

Returns

Name Type Description
uint8 Protocol version number as a uint8, where a larger value indicates a newer contract revision.✨ AI

Write Functions

acceptOwnership() nonpayable

Finalize a pending ownership transfer by making the caller the contract owner.✨ AI

dev: The new owner accepts the ownership transfer.
approve(spender: address, amount: uint256) nonpayable

Set the allowance for an address to spend tokens on the caller's behalf.✨ AI

dev: See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address Address allowed to spend tokens from the caller's balance.✨ AI
amount uint256 Maximum token amount the spender is allowed to transfer, expressed in the token's smallest units.✨ AI

Returns

Name Type Description
bool True if the allowance was successfully set.✨ AI
batchCancelAuthorization(_authorizerList: address[], _nonceList: bytes32[], _vList: uint8[], _rList: bytes32[], _sList: bytes32[], _ignoreErrors: bool) nonpayable

Attempt to cancel multiple authorizations

dev: Malformed signatures do not bypass signature validation; they are treated as invalid entries and either return `false` or revert depending on `_ignoreErrors`.

Parameters

Name Type Description
_authorizerList address[] Authorizer addresses
_nonceList bytes32[] Authorization nonces
_vList uint8[] v values of the signatures
_rList bytes32[] r values of the signatures
_sList bytes32[] s values of the signatures
_ignoreErrors bool True to continue past entries that fail the cancellability check without reverting

Returns

Name Type Description
_didCancelList bool[] _didCancelList Boolean results indicating which authorizations were canceled by this call
burn(amount: uint256) nonpayable

Destroy tokens from the caller's balance and reduce the total supply.✨ AI

dev: See {ERC20-_burn}.

Parameters

Name Type Description
amount uint256 Burn amount

Returns

Name Type Description
bool True if successful Can only be called by the current owner.
cancelAuthorization(authorizer: address, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Attempt to cancel an authorization

Parameters

Name Type Description
authorizer address Authorizer's address
nonce bytes32 Nonce of the authorization
v uint8 v of the signature
r bytes32 r of the signature
s bytes32 s of the signature
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable

Decrease the caller's allowance for spender by subtractedValue and return true if successful.✨ 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 whose allowance will be decreased.✨ AI
subtractedValue uint256 Amount to subtract from the current allowance.✨ AI

Returns

Name Type Description
bool True if the allowance was decreased successfully.✨ AI
drain(_account: address) nonpayable

Moves the full token balance of a frozen account into owner custody.

dev: The transfer bypasses the source-account frozen check only so funds can be recovered from the frozen account, but the destination must still satisfy the normal recipient freeze policy.

Parameters

Name Type Description
_account address The frozen account to drain.
freeze(account: address) nonpayable

Freeze an account to prevent it from transferring tokens.✨ AI

dev: Adds account to frozen state. Can only be called by the current owner.

Parameters

Name Type Description
account address Address to mark as frozen; frozen accounts cannot transfer tokens.✨ AI
increaseAllowance(spender: address, addedValue: uint256) nonpayable

Increases the caller's ERC-20 allowance for a spender by the specified amount.✨ 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.✨ AI

Returns

Name Type Description
bool Boolean indicating whether the allowance increase succeeded.✨ AI
initialize(_initialOwner: address, _name: string, _symbol: string) nonpayable

Initializes the token, setting the owner, token name, and symbol and preparing the contract for use.✨ AI

Parameters

Name Type Description
_initialOwner address Address that will be set as the contract owner and receive initial admin rights.✨ AI
_name string Token name used for display and ERC-20 metadata.✨ AI
_symbol string Token symbol used for display and ERC-20 metadata.✨ AI
initializeV2() nonpayable

Initializes the contract to V2 state and enables upgraded features and settings for the StablecoinV2 token.✨ AI

mint(amount: uint256) nonpayable

Allows an authorized account to create the specified amount of new tokens and adds them to its balance.✨ AI

dev: See {ERC20-_mint}.

Parameters

Name Type Description
amount uint256 Mint amount

Returns

Name Type Description
bool True if successful Can only be called by the current owner.
pause() nonpayable

Pauses all token transfers and other state-changing functions when invoked by an authorized account.✨ AI

dev: Triggers stopped state. Can only be called by the current owner.
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Sets the allowance for spender on behalf of owner using an off-chain EIP-2612 signature and deadline.✨ AI

dev: Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.

Parameters

Name Type Description
owner address Address that signed the permit and grants the allowance.✨ AI
spender address Address being approved to spend the owner's tokens.✨ AI
value uint256 Allowance amount to set for the spender (uint256).✨ AI
deadline uint256 Unix timestamp after which the permit is invalid.✨ AI
v uint8 ECDSA signature recovery v component.✨ AI
r bytes32 ECDSA signature r component (32 bytes).✨ AI
s bytes32 ECDSA signature s component (32 bytes).✨ AI
reallocate(_from: address, _to: address, _amount: uint256) nonpayable

Reallocates tokens from a frozen source account into a replacement account.

dev: The transfer bypasses the source-account frozen check only so funds can be moved out of the frozen source, but the replacement account must still satisfy the normal recipient freeze policy.

Parameters

Name Type Description
_from address The frozen source account.
_to address The replacement account.
_amount uint256 The amount to move, in token base units.
receiveWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Receive a transfer with a signed authorization from the payer

dev: This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. (See security considerations)

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
v uint8 v of the signature
r bytes32 r of the signature
s bytes32 s of the signature
recoverERC20(_token: address, _recipient: address, _amount: uint256) nonpayable

Recovers ERC-20 balances held by the token contract.

dev: If `_token` is this token, recovery uses the contract's normal transfer path and therefore still applies the standard frozen-account checks to the recipient.

Parameters

Name Type Description
_token address The token address to recover.
_recipient address The recipient of the recovered tokens.
_amount uint256 The amount to recover, in the token's base units.
transfer(to: address, amount: uint256) nonpayable

Transfer caller's tokens to a recipient, updating balances and emitting a Transfer event.✨ AI

dev: See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.

Parameters

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

Returns

Name Type Description
bool True if the transfer succeeded; otherwise the call reverts.✨ AI
transferFrom(from: address, to: 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}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.

Parameters

Name Type Description
from address
to address
amount uint256

Returns

Name Type Description
bool
transferOwnership(newOwner: address) nonpayable
dev: Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.

Parameters

Name Type Description
newOwner address
transferWithAuthorization(from: address, to: address, value: uint256, validAfter: uint256, validBefore: uint256, nonce: bytes32, v: uint8, r: bytes32, s: bytes32) nonpayable

Execute a transfer with a signed authorization

Parameters

Name Type Description
from address Payer's address (Authorizer)
to address Payee's address
value uint256 Amount to be transferred
validAfter uint256 The time after which this is valid (unix time)
validBefore uint256 The time before which this is valid (unix time)
nonce bytes32 Unique nonce
v uint8 v of the signature
r bytes32 r of the signature
s bytes32 s of the signature
unfreeze(account: address) nonpayable
dev: Removes account from frozen state. Can only be called by the current owner.

Parameters

Name Type Description
account address
unpause() nonpayable
dev: Returns to normal state. Can only be called by the current owner.

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
AuthorizationCanceled(authorizer: address, nonce: bytes32)
Name Type Indexed Description
authorizer address
nonce bytes32
AuthorizationUsed(authorizer: address, nonce: bytes32)
Name Type Indexed Description
authorizer address
nonce bytes32
Burn(caller: address, from: address, amount: uint256)
Name Type Indexed Description
caller address
from address
amount uint256
EIP712DomainChanged()
ERC20Recovered(caller: address, token: address, recipient: address, amount: uint256)
Name Type Indexed Description
caller address
token address
recipient address
amount uint256
Freeze(caller: address, account: address)
Name Type Indexed Description
caller address
account address
FrozenAccountDrained(caller: address, account: address, amount: uint256)
Name Type Indexed Description
caller address
account address
amount uint256
FrozenFundsReallocated(caller: address, from: address, to: address, amount: uint256)
Name Type Indexed Description
caller address
from address
to address
amount uint256
Initialized(version: uint8)
Name Type Indexed Description
version uint8
Mint(caller: address, to: address, amount: uint256)
Name Type Indexed Description
caller address
to address
amount uint256
OwnershipTransferStarted(previousOwner: address, newOwner: address)
Name Type Indexed Description
previousOwner address
newOwner address
OwnershipTransferred(previousOwner: address, newOwner: address)
Name Type Indexed Description
previousOwner address
newOwner address
Paused(account: address)
Name Type Indexed Description
account address
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256
Unfreeze(caller: address, account: address)
Name Type Indexed Description
caller address
account address
Unpaused(account: address)
Name Type Indexed Description
account address