UChildUSDT0
Polygon PoS ERC-20 Token0x90040487a6c9f949c4f07cadcfb0f3b8eeab4229
Solidity v0.6.6+commit.6c089d02
Fungible token following the ERC-20 standard.
🤖
Query this contract from your AI
Reference:
0x90040487a6c9f949c4f07cadcfb0f3b8eeab4229
Sample prompt:
“Tell me the current state of polygon/0x90040487a6c9f949c4f07cadcfb0f3b8eeab4229”
No AI wired up yet? →
mcp.smarts.md
Admin & Risk
Who can change the rules?
Detected mintable and role based controls from the verified ABI.
Mintable
Role Based
Overview
Read Functions
24
Write Functions
24
Events
14
Read Functions
Block #87,397,077 · 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
→ 0x0000000000000000000000000000000000000000000000000000000000000000
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
→ 9,999
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
→ 18
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
→ 0x0000000000000000000000000000000000000000000000000000000000000000
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
→
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
→ 0x0000000000000000000000000000000000000000
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
→
dev: Returns the symbol of the token, usually a shorter version of the name.
Returns
| Name | Type | Description |
|---|---|---|
| — | string |
totalSupply()
view
→ 0
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 |