What Are Centralized Stablecoins?
Centralized stablecoins are digital assets controlled by a single entity that manages their issuance and redemption. These tokens are backed by real-world assets, such as fiat currency or treasury bonds, which can be liquidated when necessary. However, users must trust the issuer since there is no 100% on-chain way to verify the actual reserves.
Watch this video to deploy and interact with a Centralized Stablecoin.
Why Do Dollar-Pegged Stablecoins Maintain Their Peg?
The vast majority of stablecoins are pegged to the U.S. dollar. This allows users to rely on a familiar and widely accepted unit of value. While there are stablecoins pegged to other assets such as the euro, bitcoin, or stocks, still the dollar-pegged stablecoins dominate the market.
Centralized dollar-pegged stablecoins are able to maintain a tight peg to their underlying asset. This is because issuers can directly redeem stablecoins for fiat at a 1:1 ratio, ensuring price stability.

Centralized stablecoins like USDT maintain a strong peg to the USD compared to decentralized and algorithmic-based alternatives. This is known as market efficiency. Source: stablecoins.wtf
Additionally, centralized stablecoin issuers must comply with strict regulations. This often results in features that contradict core decentralization principles, such as blacklisting addresses and pausing transactions.
Developing a Centralized Stablecoin Smart Contract
In order to ensure the circulating supply accurately reflects off-chain reserves, centralized stablecoins have to implement functions for token creation and destruction:
Issuance (mint): The issuer generates new tokens when reserves increase. Redemption (burn): The issuer destroys tokens when reserves decrease.
Issuers also introduce regulatory features, such as:
Blacklisting (blacklist): Prevents sanctioned addresses from transacting. Pausing (pause): Temporarily halts all transactions.
Here’s an example implementation using Solidity:
// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0.0
pragma solidity ^0.8.22;
// DO NOT USE THIS IN PRODUCTION! This smart contract has not been audited and is meant to educational purposes only
// OpenZeppelin libraries provide a prebuilt ERC-20 token implementation, allowing us to build on a secure and well-tested foundation.
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
// ERC20 compatible smart contract with centralized features such as mint, burn, pause and blacklist
contract FiatBackedStablecoin is ERC20, ERC20Burnable, ERC20Pausable, Ownable {
constructor()
ERC20("Centralized Stablecoin", "CS")
Ownable(msg.sender)
{}
// All accounts marked ad blacklasted cannot transact
mapping (address account => bool isBlacklisted) blacklist;
// When the contract is paused no one can transact
function pause() public onlyOwner {
_pause();
}
function unpause() public onlyOwner {
_unpause();
}
// Adds an account to the blacklist, preventing it from transacting
function addToBlackList(address account) public onlyOwner {
blacklist[account] = true;
}
// The contract owner can control the supply of tokens by minting and burning
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
function burn(uint256 amount) public override onlyOwner {
_burn(owner(), amount);
}
// _update is an internal function that is called on every transaction, this is the perfect place to check if an address is blacklisted
function _update(address from, address to, uint256 value)
internal
override(ERC20, ERC20Pausable)
{
// If an account is blacklisted it is prevented from transacting
require(!blacklist[from], "Sender is blacklisted");
super._update(from, to, value);
}
}
Exploring Stablecoins Live on Ethereum
The two largest stablecoins by market capitalization are USDT and USDC. Let’s explore their features.

USDT and USDC dominate the stablecoin market. Source: DeFiLlama
USDT
USDT is issued by Tether and has a market capitalization exceeding $130 billion. It follows a standard centralized stablecoin model with minting and burning features:
- Issue (minting)
- Redeem (burning)
- Pause transactions
- Blacklist addresses
- Burn blacklisted funds
- Transaction fees (currently disabled)
More details:
USDC (Circle)
USDC is issued by Circle and is widely used in DeFi. Like USDT, it implements the most common structure in stablecoins: minting, burning, blacklisting, and pausing transactions.
More details:
Thanks for reading this article! Dollar-pegged stablecoins hold the top spot in the stablecoin space, by providing price stability and ease of use. However, an alternative exists that removes reliance on a central issuer, and that is overcollateralized debt stablecoins. Check out our next article to learn more!
More Content
Create an AI Agent with Guardrails using EZKL.
Learn ZK by Deploying a Battle Tested Project.
Keep users' data safe by generating proofs in the browser, on Javascript.
Get familiar with the ERC20 format.
Learn how to build chance-based contracts using verifiable randomness provided by Anyrand (powered by drand)