USDT0

Polygon PoS ERC-20 Token Browse chains

0xc2132d05d31c914a87c6611c10748aeb04b58e8f

Proxy implementation: 0x90040487a6c9f949c4f07cadcfb0f3b8eeab4229

Solidity v0.6.6+commit.6c089d02

Fungible token following the ERC-20 standard.

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

Admin & Risk

Who can change the rules?

Detected upgradeable, mintable, and role based controls from the verified ABI.

Upgradeable Mintable Role Based

Current controls

Implementation
0x90040487a6c9f949c4f07cadcfb0f3b8eeab4229 ↗ Polygonscan → smarts proxy

Overview

Read Functions
24
Write Functions
24
Events
14

Read Functions

Block #88,260,572 · just now
BLOCK_ROLE() view → 0xefe866497efea00aa7574b13e86f62ebb584dfdf8dd4654ccc38107eb91840b8

Returns the bytes32 identifier for the BLOCK_ROLE used to check or grant blocking permissions.✨ AI

Returns

Name Type Description
bytes32 bytes32 role identifier representing the BLOCK_ROLE constant used for access-control checks✨ AI
DEFAULT_ADMIN_ROLE() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns the role identifier used as the contract's default admin role.✨ AI

Returns

Name Type Description
bytes32 Bytes32 identifier for the DEFAULT_ADMIN_ROLE used for access control.✨ AI
DEPOSITOR_ROLE() view → 0x8f4f2da22e8ac8f11e15f9fc141cddbb5deea8800186560abb6e68c5496619a9

Return the role identifier constant for the DEPOSITOR_ROLE used by contract access control.✨ AI

Returns

Name Type Description
bytes32 The bytes32 role identifier constant for DEPOSITOR_ROLE, used in AccessControl permission checks.✨ AI
DOMAIN_SEPARATOR() view → 0x7b43b7deae87806d0ace67d6c8e9e347fc85db8ad198e756e5c17d126fef9a05

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

Returns

Name Type Description
bytes32 The EIP-712 domain separator (bytes32) used in domain-specific typed data hashing and signature verification.✨ AI
ERC712_VERSION() view → 1

Provides the ERC-712 version string used for typed data signing.✨ AI

Returns

Name Type Description
string ERC-712 version identifier string used when constructing domain separators and signatures.✨ AI
PERMIT_TYPEHASH() view → 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9

Returns the EIP-2612 permit typehash used to compute signed permit digests.✨ AI

Returns

Name Type Description
bytes32 The keccak256 bytes32 type hash for the permit signature structure (EIP-2612).✨ AI
USDT0_VERSION() view → 1

Returns the numeric version identifier of the USDT0 token contract.✨ AI

Returns

Name Type Description
uint256 The uint256 version number representing the contract implementation version.✨ 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 approved to spend tokens from the owner's balance.✨ AI

Returns

Name Type Description
uint256 Remaining token allowance represented as an unsigned 256-bit integer (uint256).✨ AI
balanceOf(account: address) view

Returns the token balance held by the given account.✨ AI

dev: See {IERC20-balanceOf}.

Parameters

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

Returns

Name Type Description
uint256 The account's token balance as an unsigned 256-bit integer.✨ AI
decimals() view → 6

Returns the token's number of decimal places used for display 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 value {ERC20} uses, unless {_setupDecimals} is called. 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 (uint8) the token uses.✨ AI
getChainId() pure → 137

Return the chain identifier for the current network.✨ AI

Returns

Name Type Description
uint256 The chain ID as a uint256 representing the current chain/network identifier.✨ AI
getDomainSeperator() view → 0x7b43b7deae87806d0ace67d6c8e9e347fc85db8ad198e756e5c17d126fef9a05

Retrieve the contract's EIP-712 domain separator used for typed-data signing.✨ AI

Returns

Name Type Description
bytes32 EIP-712 domain separator (bytes32) used to compute typed-data hashes and verify signatures.✨ AI
getNonce(user: address) view

Returns the current nonce for the user's address, used to prevent replay of signed messages.✨ AI

Parameters

Name Type Description
user address Address whose nonce is requested.✨ AI

Returns

Name Type Description
nonce uint256 The current uint256 nonce assigned to the user, incremented to prevent replay.✨ AI
getRoleAdmin(role: bytes32) view

Gets the admin role that controls a specific role.✨ AI

dev: Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

Name Type Description
role bytes32 Role identifier as a bytes32 value to query its admin role.✨ AI

Returns

Name Type Description
bytes32 Admin role identifier (bytes32) that can grant or revoke the given role.✨ AI
getRoleMember(role: bytes32, index: uint256) view

Return the address of the account holding the given role at the specified index.✨ AI

dev: Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.

Parameters

Name Type Description
role bytes32 The role identifier (bytes32) to query.✨ AI
index uint256 Zero-based index into the role's member list.✨ AI

Returns

Name Type Description
address Address of the role member at the given index.✨ AI
getRoleMemberCount(role: bytes32) view

Return the number of accounts assigned the given role.✨ AI

dev: Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.

Parameters

Name Type Description
role bytes32 Role identifier as a bytes32 value (typically keccak256 hash of the role name).✨ AI

Returns

Name Type Description
uint256 Number of accounts that currently hold the specified role.✨ AI
hasRole(role: bytes32, account: address) view

Return whether an account has a specific role.✨ AI

dev: Returns `true` if `account` has been granted `role`.

Parameters

Name Type Description
role bytes32 Role identifier as a bytes32 value.✨ AI
account address Address of the account to check for the role.✨ AI

Returns

Name Type Description
bool True if the account has the role, otherwise false.✨ AI
isBlocked(address) view

Checks whether the given address is blocked from token transfers.✨ AI

Parameters

Name Type Description
address

Returns

Name Type Description
bool True if the address is blocked and cannot transact, otherwise false.✨ AI
name() view → USDT0

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
nonces(address) view

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

Parameters

Name Type Description
address

Returns

Name Type Description
uint256 Current uint256 nonce for the address; increments after each signed permit/use.✨ AI
oftContract() view → 0x6ba10300f0dc58b7a1e4c0e41f5dabb7d7829e13

Returns the OFT contract address (the address with DEPOSITOR_ROLE)

Returns

Name Type Description
address The address of the OFT contract
supportsInterface(interfaceId: bytes4) view

Return whether the contract implements the interface identified by the provided interfaceId.✨ AI

dev: Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.

Parameters

Name Type Description
interfaceId bytes4 The ERC-165 interface identifier (4-byte) to query for support.✨ AI

Returns

Name Type Description
bool True if the contract implements the specified interfaceId, otherwise false.✨ AI
symbol() view → USDT0

Returns the token's short symbol used by 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 as a string.✨ AI
totalSupply() view → 886,247,296.26 USDT0

Returns the total number of tokens in existence.✨ AI

dev: See {IERC20-totalSupply}.

Returns

Name Type Description
uint256 Total token supply as a uint256, expressed in the token's smallest unit (per decimals).✨ AI

Write Functions

addToBlockedList(_user: address) nonpayable

Add an address to the token contract's blocked list to prevent transfers by that address.✨ AI

Parameters

Name Type Description
_user address Address to mark as blocked; blocked addresses are prevented from transferring tokens.✨ AI
approve(spender: address, amount: uint256) nonpayable

Approve an address (spender) to spend up to amount of your tokens on your behalf.✨ AI

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

Parameters

Name Type Description
spender address Address being approved to transfer tokens from the caller's balance.✨ AI
amount uint256 Maximum number of tokens the spender is allowed to transfer.✨ AI

Returns

Name Type Description
bool True if the approval succeeded, otherwise false.✨ AI
changeName(name_: string) nonpayable

Set the token's public name to the provided string.✨ AI

Parameters

Name Type Description
name_ string The new token name to store and expose via name().✨ AI
changeSymbol(symbol_: string) nonpayable

Change the token's symbol to a new string.✨ AI

Parameters

Name Type Description
symbol_ string New symbol to assign to the token.✨ AI
crosschainBurn(user: address, amount: uint256) nonpayable

Burn tokens through a crosschain transfer.

Parameters

Name Type Description
user address user address for whom burn is being done
amount uint256 amount of tokens to burn
crosschainMint(user: address, amount: uint256) nonpayable

called when token is deposited on root chain

dev: Should be callable only by OAPP contract

Parameters

Name Type Description
user address user address for whom deposit is being done
amount uint256 amount of tokens to mint
decreaseAllowance(spender: address, subtractedValue: uint256) nonpayable

Decrease the caller's token allowance granted to 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 whose allowance will be decreased.✨ AI
subtractedValue uint256 Amount to subtract from the current allowance, in the token's smallest units.✨ AI

Returns

Name Type Description
bool True if the allowance was decreased successfully.✨ AI
deposit(user: address, depositData: bytes) nonpayable

Mint tokens to a recipient when tokens are deposited from the root chain.✨ AI

dev: Callable by the root chain manager/predicate; decodes depositData as a uint256 amount and mints to user.✨ AI

Parameters

Name Type Description
user address Recipient address that will receive the minted tokens.✨ AI
depositData bytes ABI-encoded deposit payload, typically the uint256 amount to mint.✨ AI
destroyBlockedFunds(_blockedUser: address) nonpayable

Permanently remove all tokens held by a blocked address and reduce the total token supply.✨ AI

Parameters

Name Type Description
_blockedUser address Address whose token balance will be permanently destroyed.✨ AI
executeMetaTransaction(userAddress: address, functionSignature: bytes, sigR: bytes32, sigS: bytes32, sigV: uint8) payable

Parameters

Name Type Description
userAddress address
functionSignature bytes
sigR bytes32
sigS bytes32
sigV uint8

Returns

Name Type Description
bytes
grantRole(role: bytes32, account: address) nonpayable
dev: Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.

Parameters

Name Type Description
role bytes32
account address
increaseAllowance(spender: address, addedValue: uint256) nonpayable
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
addedValue uint256

Returns

Name Type Description
bool
mint(_destination: address, _amount: uint256) nonpayable

Parameters

Name Type Description
_destination address
_amount uint256
multiTransfer(_recipients: address[], _values: uint256[]) nonpayable

Parameters

Name Type Description
_recipients address[]
_values uint256[]
permit(owner: address, spender: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) nonpayable

Parameters

Name Type Description
owner address
spender address
value uint256
deadline uint256
v uint8
r bytes32
s bytes32
redeem(_amount: uint256) nonpayable

Parameters

Name Type Description
_amount uint256
removeFromBlockedList(_user: address) nonpayable

Parameters

Name Type Description
_user address
renounceRole(role: bytes32, account: address) nonpayable
dev: Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.

Parameters

Name Type Description
role bytes32
account address
revokeRole(role: bytes32, account: address) nonpayable
dev: Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.

Parameters

Name Type Description
role bytes32
account address
setOFTContract(_oftContract: address) nonpayable

Sets the OFT contract address by granting it the DEPOSITOR_ROLE

dev: Can only be called by accounts with DEFAULT_ADMIN_ROLE

Parameters

Name Type Description
_oftContract address The address of the OFT contract
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
upgradeToUSDT0(newAdmin: address, oftContract: address) nonpayable

Parameters

Name Type Description
newAdmin address
oftContract address
withdraw(uint256) nonpayable

Parameters

Name Type Description
uint256

Events

Approval(owner: address, spender: address, value: uint256)
Name Type Indexed Description
owner address
spender address
value uint256
BlockPlaced(_user: address)
Name Type Indexed Description
_user address
BlockReleased(_user: address)
Name Type Indexed Description
_user address
CrosschainBurn(from: address, amount: uint256, sender: address)

Emitted when a crosschain transfer burns tokens.

Name Type Indexed Description
from address Address of the account tokens are being burned from.
amount uint256 Amount of tokens burned.
sender address Address of the caller (msg.sender) who invoked crosschainBurn.
CrosschainMint(to: address, amount: uint256, sender: address)

Emitted when a crosschain transfer mints tokens.

Name Type Indexed Description
to address Address of the account tokens are being minted for.
amount uint256 Amount of tokens minted.
sender address Address of the caller (msg.sender) who invoked crosschainMint.
DestroyedBlockedFunds(_blockedUser: address, _balance: uint256)
Name Type Indexed Description
_blockedUser address
_balance uint256
LogSetOFTContract(oftContract: address)
Name Type Indexed Description
oftContract address
MetaTransactionExecuted(userAddress: address, relayerAddress: address, functionSignature: bytes)
Name Type Indexed Description
userAddress address
relayerAddress address
functionSignature bytes
Mint(_destination: address, _amount: uint256)
Name Type Indexed Description
_destination address
_amount uint256
Redeem(_amount: uint256)
Name Type Indexed Description
_amount uint256
RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32)
Name Type Indexed Description
role bytes32
previousAdminRole bytes32
newAdminRole bytes32
RoleGranted(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
RoleRevoked(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
Transfer(from: address, to: address, value: uint256)
Name Type Indexed Description
from address
to address
value uint256