WritingA pre-launch checklist for shipping smart contracts to mainnet — LinkIT
2 min readweb3, smart-contracts, security

A pre-launch checklist for shipping smart contracts to mainnet

The production-minded checks LinkIT runs before any contract touches mainnet — from access control to monitoring and a tested upgrade path.

Before a smart contract launch, review privileged actions, adversarial tests, monitoring, and recovery options. Rehearse the deployed configuration and wallet flow as well as the contract code.

1. Access control is explicit

Every privileged function should answer one question without ambiguity: who can call this, and what happens if that key is compromised?

  • Owner/admin roles are documented and minimized.
  • Multi-sig on anything that can move funds or upgrade logic.
  • No forgotten onlyOwner left on a function that should be public — or vice versa.

2. The tests model real adversaries

Include adversarial cases as well as successful flows:

  • Reentrancy on every external call.
  • Integer edges and rounding direction.
  • Failure modes when a dependency (oracle, bridge, token) misbehaves.

3. There is a monitoring plan before launch

Configure event indexing and alerts before launch. Verify that the responsible team can see and respond to the events the contract emits.

4. The upgrade path is tested, not theoretical

If the contract is upgradeable, the upgrade has been rehearsed on a fork. If it's immutable, the migration story is written down. Either way, "what do we do when we find a bug" has an answer before launch, not after.

5. A human read the wallet UX

Test approvals, gas estimates, and signature requests with a first-time user. The interface should explain the action and show the result or failure clearly.