Coin Listings · How to
How to Pass a Smart Contract Review for Exchange Listing
The most common misunderstanding about contract review is that it looks for a contract with no powers. It does not. It looks for a contract whose powers are declared.
Direct answer
To pass a smart contract review: verify your source code on a public block explorer, enumerate every privileged function and who controls it, disclose them proactively in your application, supply an audit covering the deployed version, and flag any non-standard transfer behaviour — especially fee-on-transfer — before integration begins. Reviewers are assessing whether the contract's behaviour is known and disclosed, not whether it is powerless.
What a reviewer is actually checking
Roughly in order:
- Does source code exist and is it verified against the deployed bytecode?
- Do
name,symbol,decimals, andtotalSupplymatch the application? - What privileged functions exist, and who can call them?
- Does
transferbehave the way a standard implementation behaves? - Is the contract upgradeable, and if so who controls the upgrade?
- Does the audit cover this version?
Step 1 — Verify your source code
An unverified contract cannot be reviewed, only guessed at. Verification publishes the source alongside the bytecode so anyone can confirm the two correspond.
If your contract is unverified, verify it before applying. This is usually a short task and it removes the single largest obstacle to review.
Step 2 — Enumerate privileged functions
Go through the contract and write down every function that an ordinary holder could not call, along with who can. The ones that matter most:
| Function | The question it raises |
|---|---|
mint |
Can supply increase after listing, and who decides? |
burn (privileged) |
Can someone else's balance be destroyed? |
pause / freeze |
Can transfers be halted, and under what circumstances? |
blacklist |
Can a specific address be blocked from transacting? |
| Transfer fee / reflection | Does the recipient receive less than was sent? |
upgradeTo / proxy admin |
Can the implementation be replaced entirely? |
| Ownership transfer | Who is the owner now, and can that change silently? |
For each one that exists, record the controlling address and its type: a single externally-owned account, a multisig, or a timelock. This distinction carries real weight. A mint function behind a 48-hour timelock and a 4-of-7 multisig is a very different risk from the same function behind one hot key.
Step 3 — Disclose proactively
This is the step that determines the outcome.
Privileged functions are not disqualifying. A pause function has saved projects during live exploits. Mint capability is necessary for many legitimate designs. Reviewers see these constantly.
What changes the outcome is how they are found. A disclosed mint function is a technical question: who controls it, under what governance? An undisclosed mint function discovered during review is no longer a technical question — it becomes a question about whether the application was candid, and that is a far harder position to recover from.
Write a short section in your application that says, in plain terms: here is what this contract can do, here is who can do it, here is why it exists.
Step 4 — Handle fee-on-transfer explicitly
If your token takes a fee, reflects, rebases, or otherwise makes the amount received differ from the amount sent, say so prominently and early.
This behaviour breaks an assumption nearly every exchange integration makes: that transferring X results in X arriving. When it does not, deposit crediting and balance reconciliation produce discrepancies, and the mismatch usually surfaces during integration testing rather than review.
Discovering it then means unwinding and redoing integration work. Declaring it up front means the integration is built correctly the first time — or that the exchange tells you early that it cannot support the design, which is still far better than finding out late.
Step 5 — Supply the right audit
An audit helps only when it is checkable:
- Name the auditor. "Audited" without an auditor is not evidence.
- Attach the report, not a badge or a link to a marketing page.
- Confirm it covers the deployed version. If it covers an earlier one, say so — reviewers compare, and a discrepancy you flagged is a footnote while one they find is a problem.
- Address the findings. An audit listing unresolved medium-severity issues is fine if you explain what was done about each. Silence reads as unaddressed.
An audit is not a pass mark. It is evidence that someone competent looked, and a record of what they found.
Common mistakes
- Submitting a proxy address as the token address, or vice versa. Say which is which.
- Leaving ownership at a deployment key and not mentioning it.
- "Ownership renounced" as a blanket claim when a separate admin role retains powers. Renouncing
Ownabledoes not remove other privileged roles. - An audit of a testnet or pre-launch version presented as covering the deployed contract.
- Assuming a reviewer will read the code and figure it out. They will read it — but the disclosure is what is being assessed.
The test to apply
Before submitting, ask: if a reviewer reads this contract line by line, will they find anything I have not already told them?
If the answer is no, the review will be straightforward regardless of how many privileged functions exist. If yes, disclose it now rather than being asked about it later.
Related
- Coin Listing Requirements — where contract disclosure sits among the other requirements.
- Project Review Process — how contract review fits the wider assessment.
- How to Prepare Listing Documents — packaging the audit and tokenomics.
Step-by-step
How to Pass Smart Contract Review
Common findings that block a listing and how to avoid them.
-
Verify source
Publish verified source on the appropriate explorer.
-
Restrict privileged roles
Time-lock or multisig owner functions; document any pause switches.
-
Disclose mint authority
State clearly whether supply is fixed, mintable, or capped.
-
Address auditor findings
Resolve or document every finding from your latest audit.
Related on Coin Listings
-
Coin Listing Requirements
Every category of evidence an exchange asks for maps to a specific way a listing can go wrong. Here is what is requested...
-
Token Listing Glossary
Definitions of the terminology used across CoinDock's listing documentation.
-
Smart Contract Review Basics
Contract review is not a search for a contract with no powers. It is an assessment of whether the powers are known and c...
-
Token Listing Checklist
A checklist you can work through before submitting, ordered so that the items most likely to stop an application come fi...
-
Project Review Process
Submission is the start of a review, not the end of one. Here is what reviewers examine, in what order, and what tends t...
Apply to List Your Coin
Continue your CoinDock journey.
Go