USDXT Contract Overview

All XFT tokenized products implement the following ERC-20 token logic.

Features

  • Access Control

  • Rebasing token mechanism

  • Minting and burning functionality

  • Block/Unblock accounts

  • Pausing emergency stop mechanism

  • Reward multiplier system

  • EIP-2612 permit support

  • OpenZeppelin UUPS upgrade pattern

Public and External Functions

  • initialize(string memory name_, string memory symbol_, address owner): Initializes the contract.

  • name(): Returns the name of the token.

  • symbol(): Returns the symbol of the token.

  • decimals(): Returns the number of decimals the token uses.

  • convertToShares(uint256 amount): Converts an amount of tokens to shares.

  • convertToTokens(uint256 shares): Converts an amount of shares to tokens.

  • totalShares(): Returns the total amount of shares.

  • totalSupply(): Returns the total supply.

  • balanceOf(address account): Returns the account blanace.

  • sharesOf(address account): Returns the account shares.

  • mint(address to, uint256 amount): Creates new tokens to the specified address.

  • burn(address from, uint256 amount): Destroys tokens from the specified address.

  • transfer(address to, uint256 amount): Transfers tokens between addresses.

  • blockAccounts(address[] addresses): Blocks multiple accounts at once.

  • unblockAccounts(address[] addresses): Unblocks multiple accounts at once.

  • isBlocked(address account): Checks if an account is blocked.

  • pause(): Pauses the contract, halting token transfers.

  • unpause(): Unpauses the contract, allowing token transfers.

  • setRewardMultiplier(uint256 _rewardMultiplier): Sets the reward multiplier.

  • addRewardMultiplier(uint256 _rewardMultiplierIncrement): Adds the given amount to the current reward multiplier.

  • approve(address spender, uint256 amount): Approves an allowance for a spender.

  • allowance(address owner, address spender): Returns the allowance for a spender.

  • transferFrom(address from, address to, uint256 amount): Moves tokens from an address to another one using the allowance mechanism.

  • increaseAllowance(address spender, uint256 addedValue): Increases the allowance granted to spender by the caller.

  • decreaseAllowance(address spender, uint256 subtractedValue): Decreases the allowance granted to spender by the caller.

  • DOMAIN_SEPARATOR(): Returns the EIP-712 domain separator.

  • nonces(address owner): Returns the nonce for the specified address.

  • permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s): Implements EIP-2612 permit functionality.

Private and Internal Functions

  • _authorizeUpgrade(address newImplementation): Internal function to authorize an upgrade.

  • _mint(address to, uint256 amount): Internal function to mint tokens to the specified address.

  • _burn(address account, uint256 amount): Internal function to burn tokens from the specified address.

  • _beforeTokenTransfer(address from, address to, uint256 amount): Hook that is called before any transfer of tokens.

  • _afterTokenTransfer(address from, address to, uint256 amount): Hook that is called after any transfer of tokens.

  • _transfer(address from, address to, uint256 amount): Internal function to transfer tokens between addresses.

  • _blockAccount(address account): Internal function to block account.

  • _unblockAccount(address account): Internal function to unblock an account.

  • _setRewardMultiplier(uint256 _rewardMultiplier): Internal function to set the reward multiplier.

  • _spendAllowance(address owner, address spender, uint256 amount): Internal function to spend an allowance.

  • _useNonce(address owner): Increments and returns the current nonce for a given address.

  • _approve(address owner, address spender, uint256 amount): Internal function to approve an allowance for a spender.

Events

  • Transfer(from indexed addr, to uint256, amount uint256): Emitted when transferring tokens.

  • RewardMultiplier(uint256 indexed value): Emitted when the reward multiplier has changed.

  • Approval(address indexed owner, address indexed spender, uint256 value): Emitted when the allowance of a spender for an owner is set.

  • AccountBlocked(address indexed addr): Emitted when an address is blocked.

  • AccountUnblocked(address indexed addr): Emitted when an address is removed from the blocklist.

  • Paused(address account): Emitted when the pause is triggered by account.

  • Unpaused(address account): Emitted when the unpause is triggered by account.

  • Upgraded(address indexed implementation): Emitted when the implementation is upgraded.

Roles

  • DEFAULT_ADMIN_ROLE: Grants the ability to grant roles.

  • MINTER_ROLE: Grants the ability to mint tokens.

  • BURNER_ROLE: Grants the ability to burn tokens.

  • BLOCKLIST_ROLE: Grants the ability to manage the blocklist.

  • ORACLE_ROLE: Grants the ability to update the reward multiplier.

  • UPGRADE_ROLE: Grants the ability to upgrade the contract.

  • PAUSE_ROLE: Grants the ability to pause/unpause the contract.

Application Binary Interface (ABI)

Last updated