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
  • Minting USD0
  • Redeeming USD0
  • Regulatory Compliance
  • Collateralization Enforcement
  • Functionality Breakdown
  • Functions Description

Was this helpful?

  1. Smart Contracts
  2. Token Contracts

USD0

PreviousToken ContractsNextUSD0++

Last updated 5 months ago

Was this helpful?

High-Level Overview

The USD0 contract is designed to manage Usuals Stablecoin, the USD0 ERC20 Token, implementing functionalities for minting, burning, and transfer operations while incorporating blacklist checks to restrict these operations to authorized addresses.

The total USD0 supply is collateralized with at minimum 1:1 in USD Real World Assets ( read more )

Contract Summary

USD0 is an ERC-20 compliant token that integrates additional security and access control features to enhance its governance and usability. It inherits functionalities from ERC20PausableUpgradable and ERC20PermitUpgradeable to support permit-based approvals and pausability.

Minting USD0

Users can swap their Real World Assets via the DaoCollateral to mint an equivalent USD amount of USD0. Alternatively, they can deposit USDC into the Swapper Engine for a RWA Provider to exchange their RWA to USD0.

Additionally, as part of the accumulating yield of our underlying Real World Assets, the Usual DAO can mint additional USD0 for any excess collateral above 100% + 21 days of yield.

Redeeming USD0

Users can swap any USD0 back to the underlying Real World Assets at any time via the DaoCollateral contract, burning the USD0 in the process. In order to prevent sandwich oracle attacks on yield, the Usual DAO Treasury charges a redemption fee of0.10%

Regulatory Compliance

The contract includes a blacklist feature to ensure regulatory compliance. Sanctioned addresses are prevented from interacting with the contract, and kept up to date. Usual is enforcing the OFAC Sanctions List:

As well as the FAFT:

Collateralization Enforcement

Minting of USD0 is only possible if the Usual DAO Treasury equals or exceeds the USD Backing Ratio of 1:1 in Real World Assets versus the USD0 totalSupply()

Functionality Breakdown

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: Only not blacklisted addresses can send or receive tokens.

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.

  • mint(address to, uint256 amount): Mints tokens to a non-blacklisted address if the caller has the USD0_MINT role.

  • burn(uint256 amount) and burnFrom(address account, uint256 amount): Burns tokens from an address, requiring the USD0_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.

⛓️
here
https://sanctionslist.ofac.treas.gov/Home/SdnList
https://www.fatf-gafi.org/en/home.html