What Is a Token Freeze?
A token freeze (also called a transfer pause) is a smart contract function that lets the token owner pause all token transfers. When paused, no one can buy, sell, or transfer the token — every transfer transaction reverts. The owner can unpause at any time, but in a scam, they never do.
This is distinct from a blacklist, which blocks specific wallets. A pause blocks everyone at once. It is the nuclear option — total control over whether holders can exit.
How Transfer Pauses Work
The contract typically uses OpenZeppelin's Pausable pattern or a custom equivalent:
bool public paused;
function pause() external onlyOwner {
paused = true;
}
function _transfer(address from, address to, uint256 amount) internal {
require(!paused, "Transfers are paused");
// ... transfer logic
}When the owner calls pause(), the paused flag is set to true, and every subsequent transfer fails with "Transfers are paused." The owner can callunpause() to re-enable transfers, but in a scam, they never do.
The Freeze-and-Drain Attack
The most common scam pattern using a pause function is:
- The team launches the token with a pause function (but does not mention it).
- They build hype, attract buyers, and the price rises.
- At the peak, they call
pause()— no one can sell. - While transfers are paused, they drain the liquidity pool (since LP withdrawal does not require token transfers).
- They never unpause. Holders are left with tokens they cannot sell, in a pool with no liquidity.
Token Freeze on Solana
On Solana, the equivalent of a pause is freeze authority. If the token team retains freeze authority, they can freeze individual wallet balances — those wallets cannot send or sell their tokens. Unlike an EVM pause (which is all-or-nothing), Solana freeze authority is per-wallet, making it more like a blacklist.
GuavaIntel's Solana honeypot checker verifies whether freeze authority has been renounced via RugCheck.
How to Detect a Pause Function
GuavaIntel's scanner checks for pause functions via GoPlus. To check manually, read the contract source and look for:
pause(),setPaused(),_pause- A
pausedboolean state variable whenNotPausedmodifier on the transfer function- OpenZeppelin
Pausableimport
Frequently Asked Questions
What is the difference between a blacklist and a pause?
A blacklist blocks specific wallets from transferring. A pause blocks ALL wallets from transferring. A blacklist is targeted (the owner picks who to trap), while a pause is blanket (everyone is trapped at once). Both are common in honeypot scams.
Can the owner unpause after pausing?
Yes. A pause function is reversible — the owner can pause and unpause at will. However, in a scam, the owner pauses and never unpauses. The tokens are effectively frozen forever, and the team drains the liquidity pool while no one can sell.
Are pausable tokens always a scam?
No. Some legitimate tokens (like PAXG and some regulated stablecoins) include pause functions as a safety mechanism for emergency response. However, in the context of meme coins and unverified projects, a pause function is a major red flag because it gives the team total control over whether holders can exit.
Related Terms
Check Before You Trade
Run a free security scan on any token across Ethereum, BSC, Base, and Solana.
Scan a Token Now