VRF7
HomeGuides › Is My Token Safe? A Pre-Launch Security Checklist

Is My Token Safe? A Pre-Launch Security Checklist

Updated 2026-06-18 · VRF7 Security Guides

Launching an ERC-20 or similar token without a structured security review is one of the most common ways projects lose funds or credibility within hours of going live. Exploits, rug-pull vectors, and accidental bugs are rarely exotic — they are almost always one of a small set of well-known patterns that a systematic checklist would have caught. This guide walks through each of those patterns so you can answer the question is my token safe before your users have to ask it for you.

1. Ownership and Access Control

The owner or equivalent privileged address is the most powerful attack surface in most token contracts. Ask the following questions about every privileged function in your contract.

Who can call sensitive functions?

Is ownership renounced or transferred to a multisig?

Renouncing ownership removes all admin capabilities permanently. This reassures holders that no one can mint extra supply or change fees after launch. If you need ongoing admin ability — for example, to set treasury addresses — transfer ownership to a multi-signature wallet such as Safe (formerly Gnosis Safe) rather than leaving it on an EOA.

// Vulnerable: single EOA owns a mint function
function mint(address to, uint256 amount) external onlyOwner {
    _mint(to, amount);
}

// Safer: ownership held by a 3-of-5 multisig and mint is capped
function mint(address to, uint256 amount) external onlyOwner {
    require(totalSupply() + amount <= MAX_SUPPLY, "Cap exceeded");
    _mint(to, amount);
}

2. Mint Caps and Supply Controls

Unlimited minting is a critical rug-pull vector. Even if the current owner is trustworthy, a compromised private key gives an attacker the same power.

3. Upgradeability Risks

Upgradeable proxy patterns (UUPS, Transparent Proxy, Beacon) add flexibility but also add significant risk surface. For most simple tokens they are unnecessary.

Do you actually need upgradeability?

If your token is a standard ERC-20 with no novel logic, an immutable deployment is safer and simpler. Upgradeability introduces storage collision risks, uninitialized implementation contracts, and a privileged upgradeTo function that can replace your entire contract logic.

If you do use a proxy

// Uninitialized implementation — attacker can call initialize() directly
contract TokenV1 is Initializable, ERC20Upgradeable {
    function initialize(string memory name, string memory symbol) public initializer {
        __ERC20_init(name, symbol);
    }
}

// Fixed: disable initializers on the implementation
constructor() {
    _disableInitializers();
}

4. Fee and Transfer Mechanics

Custom transfer logic is a frequent source of both bugs and deliberate traps.

5. Liquidity Locks

Technical contract security and economic security are separate concerns, but both matter to token holders. A technically clean contract can still be rugged by pulling liquidity.

6. Standard Vulnerability Classes to Check

Beyond token-specific concerns, your contract is still subject to the full landscape of Solidity vulnerabilities. Before launch, verify that your contract is free from the following common issues. For a deeper treatment of each, see our guide on how to audit an ERC-20 token contract.

7. Run an Automated Scan Before You Deploy

Reading a checklist is a useful starting point, but automated tools can systematically traverse every execution path in your bytecode in ways a manual review of this kind cannot. Before deployment, run an automated scan against your contract to surface findings from multiple analysis engines simultaneously. A scan that runs Slither, Mythril, Aderyn, Semgrep, Solhint, SMTChecker, and Echidna in parallel will catch many of the issues described above — misuse of access control, unchecked arithmetic in unchecked blocks, unprotected initializers — and attribute each finding to the specific tool that detected it so you can prioritize remediation.

Automated scanning is not a substitute for a full manual audit by experienced auditors, particularly for novel or complex token mechanics. For guidance on when each approach is appropriate, see automated scanners vs manual audits: what is the difference? If you are weighing the cost of a professional audit, our breakdown of smart contract audit costs explains what drives pricing and what you get at each tier.

Pre-Launch Security Checklist Summary

  1. All privileged functions are gated by onlyOwner or a role modifier.
  2. Ownership is transferred to a multisig or renounced before public launch.
  3. A hard supply cap is enforced on-chain in every mint path.
  4. No hidden mint functions exist in inherited contracts.
  5. Upgradeability is either absent or protected by timelock and multisig.
  6. If using a proxy, the implementation contract has initializers disabled.
  7. Fee parameters are capped in code and cannot be raised to a harmful level post-launch.
  8. Blacklist and pause functions, if present, are documented and access-controlled.
  9. LP tokens are locked in a verifiable on-chain locker for a meaningful duration.
  10. The contract has been scanned with at least one automated static analysis tool.
  11. All critical and high findings from the scan have been remediated or documented with a rationale for acceptance.
  12. A re-scan has been run after remediation to confirm fixes did not introduce new issues.

No checklist or automated tool guarantees a contract is free of all vulnerabilities, but systematically working through these items before launch significantly reduces the most common and most costly failure modes. The goal is to make your token as difficult to exploit as possible before real funds are at stake.

Scan your contract before you ship

Run an automated, transparent security scan — seven industry tools in parallel, every finding labeled with its source tool. It is not a substitute for a full manual audit, but it is a fast first line of defense.

Scan a contract

Frequently asked questions

Should I renounce ownership of my token contract?

It depends on your roadmap. Renouncing ownership permanently removes all admin capabilities, which is the strongest signal to holders that no one can mint extra tokens or change parameters. If you need ongoing admin functions — such as updating a treasury address or pausing in an emergency — transfer ownership to a reputable multi-signature wallet instead of a single EOA. The worst outcome is leaving ownership on a hot wallet that can be compromised.

What is the difference between a hard supply cap and a soft cap?

A hard cap is enforced by the smart contract itself: a require statement inside the mint function checks that total supply after the mint will not exceed a constant maximum. A soft cap is an off-chain or documentation-based promise that the owner will not mint beyond a certain amount. Soft caps provide no on-chain security guarantee — a compromised or malicious owner can ignore them entirely. Always implement the cap in code.

Can an automated scan tell me definitively that my token is safe?

No. Automated scanners systematically check for known vulnerability patterns across all execution paths, which makes them faster and more consistent than a quick manual read-through. However, they cannot evaluate business logic correctness, economic attack surfaces, or novel exploit patterns that have not been codified into detector rules. An automated scan is an essential first step and a useful complement to a manual audit, but it does not replace one for high-value or complex contracts.

Do I need to lock liquidity if I plan to add more liquidity later?

Yes. The initial liquidity lock is the most critical one because it covers the period immediately after launch when your token price is most volatile and investor trust is lowest. You can lock additional liquidity tranches as they are added. The lock should cover LP tokens representing a meaningful portion of the total liquidity pool, and the lock duration should be long enough that holders can reasonably trade and exit before the lock expires.

What are the biggest risks with upgradeable token contracts?

The main risks are: an uninitialized implementation contract that an attacker can initialize and exploit; storage layout collisions between implementation versions that corrupt state variables silently; and a privileged upgrade function that, if controlled by a single EOA, allows the entire contract logic to be replaced without community consent. If upgradeability is genuinely necessary, use OpenZeppelin's audited libraries, disable initializers on the implementation, and protect upgrade functions with a timelock and multisig.