Skip to content
Request a Demo

USDC Issuance

Stablecoins constitute a critical cornerstone within the cryptocurrency landscape, playing a pivotal role in enhancing financial stability and facilitating digital asset transactions. These stablecoins exhibit a diverse array of underlying mechanisms. Some are algorithmically pegged to the value of the US dollar, others are collateralized through debt positions, some are backed by a diversified portfolio of assets, while a subset is directly issued in a 1:1 ratio to the issuer's dollar holdings.

It is imperative to underscore that each stablecoin variant possesses unique characteristics, and these mechanics significantly influence the dynamics of the crypto space. They introduce trade-offs encompassing aspects such as centralization, collateralization requirements, and overall reliability.

Today, our focus lies on USDC, a stablecoin issued by Circle. USDC maintains a steadfast 1:1 peg to the US dollar, meaning one USDC token consistently represents one US dollar. Notably, USDC's issuance is exclusive to Circle, rendering it a centralized stablecoin.

Let's delve into the intricacies of the USDC issuance process as delineated in its smart contract.

The primary function responsible for minting USDC is outlined below:

function mint(address _to, uint256 _amount)
    external
    whenNotPaused
    onlyMinters
    notBlacklisted(msg.sender)
    notBlacklisted(_to)
    returns (bool)
{
    require(_to != address(0), "FiatToken: mint to the zero address");
    require(_amount > 0, "FiatToken: mint amount not greater than 0");

    uint256 mintingAllowedAmount = minterAllowed[msg.sender];
    require(
        _amount <= mintingAllowedAmount,
        "FiatToken: mint amount exceeds minterAllowance"
    );

    totalSupply_ = totalSupply_.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    minterAllowed[msg.sender] = mintingAllowedAmount.sub(_amount);
    emit Mint(msg.sender, _to, _amount);
    emit Transfer(address(0), _to, _amount);
    return true;
}


Of note is the 'onlyMinters' modifier within the function, which restricts USDC minting privileges to trusted Circle addresses. This safeguard ensures the stability and integrity of the stablecoin ecosystem. Furthermore, the function verifies that the recipient's wallet is not blacklisted before increasing the total USDC supply by the specified amount.

Next, let's examine the 'Burn' function, which serves the purpose of removing USDC from the blockchain for redemption in USD:

function burn(uint256 _amount)
    external
    whenNotPaused
    onlyMinters
    notBlacklisted(msg.sender)
{
    uint256 balance = balances[msg.sender];
    require(_amount > 0, "FiatToken: burn amount not greater than 0");
    require(balance >= _amount, "FiatToken: burn amount exceeds balance");

    totalSupply_ = totalSupply_.sub(_amount);
    balances[msg.sender] = balance.sub(_amount);
    emit Burn(msg.sender, _amount);
    emit Transfer(msg.sender, address(0), _amount);
}


Similarly, this function employs modifiers that grant exclusive burning rights to trusted Circle addresses, while also ensuring that the redeemer's address is not blacklisted. The burning process effectively reduces the total token issuance.

With a foundational understanding of USDC issuance, let's shift our attention to the historical trends of USDC issuance on the Ethereum blockchain. Analyzing USDC issuance enables us to gauge the influx of new capital into the blockchain, providing insights into on-chain adoption and liquidity compared to previous market cycles.

The historical data reveals that peak USDC supply on-chain was observed in the spring of 2022, reaching nearly $50 billion USD. The USDC supply commenced a gradual decline through 2022. In March 2023, the collapse of SVB resulted in USDC losing its 1:1 peg to the US dollar, prompting a sharp reduction in supply as holders sought to redeem their USD equivalents.

 

Presently, USDC supply has not fully recovered to 2022 levels and continues to exhibit a downward trend. At the time of writing, USDC supply on the Ethereum Mainnet stands at approximately $22 billion USD, with daily net issuance displaying negative figures.

It is worth noting that USDC issuance on other Layer 1 (L1) and Layer 2 (L2) blockchains remains relatively modest in comparison to Ethereum. The current USDC supply on various chains is summarized below:

Chain

Current USDC Supply

Ethereum 

$22,506,232,600.07

Solana

$846,210,759.62

Avalanche

$240,486,589.21

BASE

$177,530,802.68

Polygon

$129,208,939.79


In conclusion, USDC issuance serves as a significant driver of sentiment within the crypto space and offers valuable insights into dry powder and liquidity levels. In subsequent discussions, we will delve into the issuance of DAI, an over-collateralized decentralized stablecoin. For further exploration of USDC data, you may refer to the provided code resources.