Usual Tech Docs
Usual WebsiteGeneral DocsContract DeploymentsAuditsAccess dApp
  • 🚀GM GM
    • Usual Tech Hub
  • 🔭Overview
    • Usual Protocol Primer
    • Features
      • Mint & Redeem Engine
      • USD0
      • USD0++
      • USUAL
      • USUAL*
      • USUALx (USUAL staking)
      • USUAL distribution
      • USUAL Airdrop
      • Usual USD0++ Investment Vault
    • Architecture
      • Role Management
      • USUAL Distribution Model
  • ⛓️Smart Contracts
    • Protocol Contracts
      • DaoCollateral
      • Swapper Engine
      • USUAL staking
      • USUAL* Vested Allocation Staking
      • USUAL Distribution
        • Distribution Module
        • Yield Module
      • Airdrop Module
    • Token Contracts
      • USD0
      • USD0++
      • USUAL
      • USUAL*
      • USUALx
      • Usual USD0++ Investment Vault
        • VaultRouter
    • Utility Contracts
      • ClassicalOracle
      • Abstract Oracle
      • Chainlink Oracles
      • Pyth Oracles
      • RedStone Oracles
    • Real World Assets
      • USYC (by Hashnote)
      • M (by M0)
        • UsualM
      • USDtb
    • Contract Deployments
  • 🛡️Security & Audits
    • Security Practices
    • Testing Framework
    • Monitoring Framework
    • Audits
    • Bug Bounty
  • 🧩Integrations
    • Integrate USD0++
      • Reward redistribution by integration partner
      • Claim Address Redirect
      • Daily Distribution powered by Brevis (coming soon)
  • 📚Resources
    • Community & Support
    • References
  • 📖Support
    • FAQ
    • Glossary
  • ⚖️Legal
    • Terms of Services
    • Legal Notice
    • Privacy Policy
Powered by GitBook
On this page
  • High-Level Overview
  • Contract Summary
  • Functionality Breakdown
  • Functions Description
  • Constants
  • Safeguards Implementation

Was this helpful?

  1. Smart Contracts
  2. Token Contracts

USUAL*

PreviousUSUALNextUSUALx

Last updated 5 months ago

Was this helpful?

High-Level Overview

This section provides an overview of the UsualS smart contract. The UsualS contract is designed to manage the USUALS ERC20 token, implementing essential functionalities for minting, burning, and transferring tokens, along with additional layers of control and security. The contract integrates role-based access control through a registry system, ensuring that only authorized entities can perform sensitive operations such as pausing the contract or blacklisting addresses

Contract Summary

Inherited Contracts

  • ERC20PausableUpgradeable: Extends ERC20 to support pausability

  • ERC20PermitUpgradeable: Extends ERC20 to support gasless transactions through signed approvals.

ERC20PausableUpgradeable

Standard OpenZeppelin Implementation.

ERC20PermitUpgradeable

Standard OpenZeppelin Implementation.

Functionality Breakdown

SC-Flows

Key Functionalities

  • Minting: Tokens can be minted to an address, subject to role checks.

  • Burning: Tokens can be burned from an address, also subject to role checks.

  • Transfers: Tokens can be sent or receive. Will revert if blacklisted.

Functions Description

Public/External Functions

  • pause(): Pauses all token transfer operations; callable only by the PAUSING_CONTRACTS_ROLE.

  • unpause(): Resumes all token transfer operations; also callable only by the DEFAULT_ADMIN_ROLE.

  • transfer(address to, uint256 amount): Transfers tokens to a non-blacklisted address.

  • transferFrom(address sender, address to, uint256 amount): Transfers tokens from one non-blacklisted address to another.

  • burn(uint256 amount) and burnFrom(address account, uint256 amount): Burns tokens from an address, requiring the USUALS_BURN role.

  • blacklist(address account) and unBlacklist(address account): Those functions allows the admin to blacklist or remove from blacklist malicious users from using this token. Only callable by the BLACKLIST_ROLE.

  • stakeAll() : Sends the total supply of USUALS to the staking contract. Only callable by the USUALSP contract.

  • isBlacklisted(): Returns true if the account is blacklisted.

Constants

  • CONTRACT_REGISTRY_ACCESS: Registry access contract address.

  • DEFAULT_ADMIN_ROLE: Default admin role.

  • PAUSING_CONTRACTS_ROLE: Role required to pause the contract.

  • BLACKLIST_ROLE: Role required to blacklist an address.

  • USUALS_BURN: Role required to burn tokens.

Safeguards Implementation

  • Pausability: Ensures that token transfers can be halted in case of emergency.

  • Role-Based Access Control: Restricts sensitive actions to addresses with appropriate roles.

  • Blacklist Enforcement: Ensures that unauthorized addresses can't participate in the token economy.

⛓️