NFT smart contract audit
An NFT contract decides who owns each token and where its royalties go. A game adds rewards and an economy players will farm. Guardian audits both, from Yuga Labs’ cross-chain NFT Shadows to DN404.
Smart contract audits for




Jupiter

Olympus
Limit Break
Dolomite
Onchain · NFT and Gaming Audit
What an NFT audit covers, from mint to marketplace.
- Mints and sale phases Price times quantity, supply caps, per-wallet limits, owner reserves, and mints that still work after a sale is paused or closed.
- Allowlists and Merkle claims What each leaf commits to, per-user limits, chain IDs in leaves, and root updates that strand earlier claims.
- Randomness and reveals Block values a validator can steer, VRF callbacks, reveal timing, and draws that land on a token that does not exist yet.
- Royalties and payment splits ERC-2981 set on the contract that marketplaces actually read, splitter reentrancy, permissionless claims, and income counted twice.
- Marketplaces, bids and listings Bid griefing, overwritten names and listings, approvals that outlive a sale, and bait-and-switch through token ordering.
- ERC-721 and ERC-1155 standards Safe-transfer callbacks that hand control to the receiver, ERC-721C transfer validators, interface support, and the events indexers rely on.
- ERC-404 and DN404 hybrids ERC-20 balances and ERC-721 ownership kept in step: burn pools, ID wrapping, skip-NFT flags and unit math.
- Cross-chain NFTs and delegation Lock and mirror flows, message channels a single revert can block, reorgs, and delegate registry rights.
- Game economies and rewards Emissions per epoch, staked NFTs, forfeited rewards, compounding loops, and allocations split between players and LPs.
- Signatures and replay EIP-712 domains, nonces, expiry and chain IDs on signed mints, claims and game actions.
- Metadata and token URIs tokenURI and contractURI served from the right contract, existence checks, ERC-4906 refresh events and ERC-7572.
- Upgrades and admin keys Initializers, storage gaps, and owner powers to mint, withdraw, set prices and change metadata.
Covers NFT collections and minters, ERC-7631 hybrids such as DN404, name and NFT marketplaces, cross-chain NFT systems and onchain games on Ethereum, L2s and other EVM chains. Game servers and APIs are tested separately, in an API Pentest or WebApp Pentest.
Public findings
What Guardian has found in NFT and game contracts.
Each card links a finding in a public Guardian report. All were resolved.
-
C-01Yuga Labs TORCH · Critical
Each original minter of the Club NFT got a royalty splitter that paid three recipients in turn. The first recipient could reenter withdraw() and take most, if not all, of the royalties owed to the other two.
Royalties Read the finding C-01 in the Yuga Labs TORCH report
-
C-01Yuga Labs NFT Shadows · Critical
The ownership read reverted for an NFT locked on the target chain. LayerZero’s DVNs could not verify it, which blocked every later read on that channel and stopped ownership syncing.
Cross-chain NFTs Read the finding C-01 in the Yuga Labs NFT Shadows report
-
NFTR-1NFTR Marketplace · Critical
Moving a name onto an NFT that already had one left the old name pointing at it too. A buyer who paid for “Bob” could receive “Alice”.
Marketplaces Read the finding NFTR-1 in the NFTR Marketplace report
-
C-01Bigcoin · Critical
Tokens launched through the mining game could finalize once a liquidity cap was met. Donating Bigcoin past the cap let an attacker finalize at once and take the whole miners’ supply.
Game economies Read the finding C-01 in the Bigcoin Protocol Review report
-
H-01DN404 · High
_mintNext minted IDs still sitting in the burn pool without removing them. The next regular mint reissued those IDs, taking the NFT from the user who held it.
ERC-404 hybrids Read the finding H-01 in the DN404 report
-
H-01Footium · High
The general minter checked payment against the price of one NFT, whatever the quantity. A buyer could mint several and pay for one.
Mints Read the finding H-01 in the Footium Protocol Review report
-
H-02Yuga Labs NFT Shadows · High
After an NFT was bridged back to Ethereum, a three-block reorg on the other chain could restore its old shadow owner. One user held an irredeemable shadow while another held the real NFT outside the protocol.
Reorgs Read the finding H-02 in the Yuga Labs NFT Shadows report
-
H-01NFT Shadows, Round 2 · High
Ownership reads processed against stale state moved delegation from the same old owner twice. Two later owners kept delegation rights, and one could not be revoked.
Delegation Read the finding H-01 in the Yuga Labs NFT Shadows, Round 2 report
-
H-02INT DAO · High
An NFT burned while boosts were disabled kept its rewards until someone called sync. In between, anyone could mint the same token ID and collect rewards that should have been forfeited.
Rewards Read the finding H-02 in the INT DAO BoostManager, PickCallbackV2 and NftDistributorV2 report
-
H-01PleasrDAO · High
purchaseWithUSDC lacked the onlyLive modifier, so mints paid in USDC still went through after the contract was disabled.
Sale controls Read the finding H-01 in the PleasrDAO Shaolin Album Tokenization report
-
C-02Yuga Labs TORCH · Critical
TheSplit’s claimYugaLabs() and claimMachine() were permissionless and paid whatever address the caller passed. Anyone could send the accumulated Yuga Labs and machine splits to themselves.
Payment splits Read the finding C-02 in the Yuga Labs TORCH report
Onchain · How it runs
Two teams, and ownership written as code.
-
01 / Two teams
Two independent teams, one scope.
Team A pairs expert manual review with the fuzzing suite. Team B runs Helix across every corner. Each cross-checks the other.
- Expert manual review
- Competitive incentives
- Cross-checked findings
-
02 / Helix AI Auditor
Helix, the leading AI Auditor.
Hundreds of parallel agents spend billions of tokens across the entire codebase. Only human-verified findings reach the report.
- Billions of tokens
- Human-guided context
- Human-triaged findings
-
03 / Invariant fuzzing
An invariant suite around ownership.
Core safety properties become executable invariants, fuzzed across every reachable state. On an NFT, those say who owns each token and how many exist.
- Owned NFTs sum to total supply
- Mints never reuse burned IDs
- No mints while the sale is off
-
04 / Integrations and deployment
The standards and chains you rely on.
Marketplaces, royalty standards, delegate registries and messaging settings are read against how your contracts use them. On NFT Shadows, that included the deployment scripts and LayerZero configuration.
- Marketplace and royalty standards
- Delegation and messaging config
- Deployment scripts
The suite stays with your code for every later change. DN404’s report lists 46 invariants, each fuzzed at least 1,000,000 times. Four failed, among them “Mint Next Does Not Overlap With Burned Pool” and “_ownerAt(id) Is Always The Same As NFT Holder”. In PleasrDAO’s report, “Intervals should not be reduced when mint is not live” failed.
Published work
NFT and web3 game audits you can read.
- Case studyYuga Labs NFT ShadowsCross-chain ownership and delegation: 51 findings, including 1 Critical and 4 Highs.
- ReportsYuga LabsBoth NFT Shadows reviews, and TORCH’s royalty splits.
- ReportsDN404The ERC-7631 reference implementation: 2 Highs and 46 invariants.
- ReportsPleasrDAOOnce Upon a Time in Shaolin, tokenized with DN404.
- ReportsFootiumA football management game with NFT clubs and players.
- ReportsNFTRA name registry shared across collections, and its marketplace.
- ReportsBigcoinA Bitcoin mining game on Abstract that launches tokens.
- ReportsINT DAOA weekly onchain lottery with ticket NFTs and revenue-sharing NFTs.
Recent incidents
How web3 games have been drained.
All three ran through keys, not contract bugs. The audit checks what each privileged key can mint or move; an OpSec Audit checks who holds it.
-
$624MRonin (Axie Infinity)
Axie Infinity’s sidechain bridge fell to five of nine validator keys. A phished former Sky Mavis employee’s credentials reached four, and an Axie DAO allowlist entry never revoked gave the fifth.
-
$290MPlayDapp
Using what is believed to be a stolen private key, an attacker minted over 1.79 billion PLA on the gaming platform. The $290M is their market value: Elliptic said they could only be sold far below it, if at all.
-
$216MGala Games
An attacker took a GALA minter account unused for 180 days and minted 5 billion GALA, nominally $216 million. They sold $21.8 million before Gala blocklisted the account; the funds came back the next day.
May 2024 Our coverage of the Gala Games mint
“The Guardian team is incredibly knowledgeable, thorough, and mindful. They caught issues that required extensive knowledge of dependencies. I would recommend anybody work with Guardian!”
0xQuitYuga Labs“10/10. Fast, thorough and cost effective”
Core TeamFootiumResource Hub
Before you book an NFT audit.
- ResearchDN404 vulnerabilitiesHow the burn pool let NFTs be stolen, and the bait-and-switch.
- FindingsSix audit findings explainedBid griefing on a name marketplace and an off-by-one mint.
- ExplainerReentrancy attacksEvery type, including through ERC-721 safe transfers.
- GuideFinality by chainHow many confirmations to wait, with the NFT Shadows reorg case.
- ExplainerInitializer vulnerabilitiesOpen implementations, with Footium and Ginza Gaming examples.
- GuideOpenZeppelin v4 to v5Where ERC-721 and ERC-1155 transfer hooks went.
- ExplainerSignature malleabilityHow one ECDSA signature becomes two, and the fix.
- GuideChoosing an auditorWhat to check before you sign.
Questions
NFT and web3 game audit questions
What does an NFT smart contract audit cover?
The collection, minter, marketplace, royalty splitter, staking and reward contracts, admin roles, and the scripts that deploy them. Yuga Labs’ second NFT Shadows review verified system integrations, reorg handling, deployment scripts and ERC standard compliance, and the ERC-721C and ERC-4906 gaps it found were fixed.
How long does an NFT audit take?
It depends on the code in scope. Yuga Labs’ NFT Shadows took two one-week engagements with five auditors each. The DN404 review ran from April 23 to May 3, 2024, and PleasrDAO’s album tokenization took one week with six auditors. Here is how audit length is estimated.
Do you audit ERC-404 and DN404 tokens?
Yes. Guardian reviewed DN404 itself, the reference implementation of ERC-7631, and later PleasrDAO’s DN404 tokenization of the Wu-Tang Clan album Once Upon a Time in Shaolin. DN404 keeps the pair in two linked contracts, one ERC-20 and one ERC-721, each fully compatible with its standard, unlike the original ERC404.
What if the bug is already in live contracts?
When DN404’s two Highs were found, its code was already public and in use. Guardian searched onchain for vulnerable integrations. The two largest, Asterix’s Anomalies and Red Bull Racing’s Velocity Pass, were safe, and no other deployed contract was found vulnerable. The fixes shipped as version 0.0.17.
Do you test game servers and backends?
Not inside the smart contract audit. Game servers, APIs and reward backends are offchain, so they get an API Pentest or WebApp Pentest, scoped separately. Vanguard runs the same two-team audit, then adds offchain coverage and six months of update review.
Which chains do your NFT and game reports cover?
Ethereum (Yuga Labs, NFTR and PleasrDAO), Arbitrum (Footium), Base (INT DAO), Blast (Ginza Gaming), Abstract (Bigcoin) and Fantom (Ultimate Fantoms and Ice Bear Society). NFT Shadows mirrors ownership of Ethereum NFTs onto other chains through LayerZero reads and messages.
Smart Contract Audit
Other engagements
- Featured · Onchain Vanguard Audit A security audit designed to protect onchain teams facing unprecedented cyber risk. Explore Vanguard
- Managed services Managed Security Dedicated response team, red team, 24/7 attack and defense across every surface you run, onchain and off. Explore Managed Security
- OnchainSmart Contract AuditTwo competing teams, Helix AI and invariant fuzzing.
- OnchainSolidity AuditAccess control, reentrancy, math, upgrades and assembly.
- OnchainCross-Chain Bridge AuditOFTs, DVNs, peers, shared decimals, replay and compose flows.
- OnchainToken Launchpad AuditBonding curves, graduation, fee splits, anti-snipe guards, vesting and claims.
- OnchainLending Protocol AuditInterest math, liquidations, oracles, bad debt, forks and credit.
- OnchainPrediction Market AuditResolution, disputes, bonds, payout math and outcome tokens.
- OnchainSolana AuditRust and Anchor programs: accounts, PDAs, CPIs and Token-2022.
- OnchainDeFi Protocol AuditAccounting, oracles, liquidations and integrations.
- OffchainAPI PentestREST, GraphQL and gRPC, key scoping and endpoints that move funds.
- OffchainWebApp PentestAuth, transfer flows, business logic and client-side attacks.
- OffchainOpSec AuditKeys, signers, privileged roles, and critical operations.
- Penetration testingAll pentestsEvery offchain engagement, and how Guardian runs them.
Start now