USDT0

Polygon PoS ERC-20 Token

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

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 #87,395,556 · just now
BLOCK_ROLE() view → 0xefe866497efea00aa7574b13e86f62ebb584dfdf8dd4654ccc38107eb91840b8

Returns

Name Type Description
bytes32
DEFAULT_ADMIN_ROLE() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns

Name Type Description
bytes32
DEPOSITOR_ROLE() view → 0x8f4f2da22e8ac8f11e15f9fc141cddbb5deea8800186560abb6e68c5496619a9

Returns

Name Type Description
bytes32
DOMAIN_SEPARATOR() view → 0x7b43b7deae87806d0ace67d6c8e9e347fc85db8ad198e756e5c17d126fef9a05

Returns

Name Type Description
bytes32
ERC712_VERSION() view → 1

Returns

Name Type Description
string
PERMIT_TYPEHASH() view → 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9

Returns

Name Type Description
bytes32
USDT0_VERSION() view → 1

Returns

Name Type Description
uint256
allowance(owner: address, spender: address) view
dev: See {IERC20-allowance}.

Parameters

Name Type Description
owner address
spender address

Returns

Name Type Description
uint256
balanceOf(account: address) view
dev: See {IERC20-balanceOf}.

Parameters

Name Type Description
account address

Returns

Name Type Description
uint256
decimals() view → 6
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
getChainId() pure → 137

Returns

Name Type Description
uint256
getDomainSeperator() view → 0x7b43b7deae87806d0ace67d6c8e9e347fc85db8ad198e756e5c17d126fef9a05

Returns

Name Type Description
bytes32
getNonce(user: address) view

Parameters

Name Type Description
user address

Returns

Name Type Description
nonce uint256
getRoleAdmin(role: bytes32) view
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

Returns

Name Type Description
bytes32
getRoleMember(role: bytes32, index: uint256) view
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
index uint256

Returns

Name Type Description
address
getRoleMemberCount(role: bytes32) view
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

Returns

Name Type Description
uint256
hasRole(role: bytes32, account: address) view
dev: Returns `true` if `account` has been granted `role`.

Parameters

Name Type Description
role bytes32
account address

Returns

Name Type Description
bool
isBlocked(address) view

Parameters

Name Type Description
address

Returns

Name Type Description
bool
name() view → USDT0
dev: Returns the name of the token.

Returns

Name Type Description
string
nonces(address) view

Parameters

Name Type Description
address

Returns

Name Type Description
uint256
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
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

Returns

Name Type Description
bool
symbol() view → USDT0
dev: Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
string
totalSupply() view → 859,072,822.35 USDT0
dev: See {IERC20-totalSupply}.

Returns

Name Type Description
uint256

Write Functions

addToBlockedList(_user: address) nonpayable

Parameters

Name Type Description
_user address
approve(spender: address, amount: uint256) nonpayable
dev: See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.

Parameters

Name Type Description
spender address
amount uint256

Returns

Name Type Description
bool
changeName(name_: string) nonpayable

Parameters

Name Type Description
name_ string
changeSymbol(symbol_: string) nonpayable

Parameters

Name Type Description
symbol_ string
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
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
subtractedValue uint256

Returns

Name Type Description
bool
deposit(user: address, depositData: bytes) nonpayable

Parameters

Name Type Description
user address
depositData bytes
destroyBlockedFunds(_blockedUser: address) nonpayable

Parameters

Name Type Description
_blockedUser address
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