GUNZscope Field Note · Off The Grid · 26 Aug 2026

The serial is not
the mint number

People are paying premiums for low serial numbers on Off The Grid items, believing they mark the earliest mints and are locked to the blockchain. Neither is true. Here is one item, pulled apart, so you can see exactly why — and what to check instead.

The short version

The serial number is a field in Gunzilla's database, served from their web server. The mint number is a position in GunzChain's transaction history. Only one of those two things is on the blockchain, and it isn't the one being priced.

Exhibit A · ERC-721 token 38684952

Tacoma Pioneer, “Serial #0”

An Epic SMG on the Game Item contract. Its metadata carries "Serial Number": "0" — and it is the only Tacoma Pioneer of 369 that does. A zero-serial, one of one. It reads like the genesis piece. So let's ask the chain.

What the serial implies

#0

The first one ever made. Unique across the whole item — no other Tacoma Pioneer carries a zero. Served to every wallet, marketplace and explorer that renders this token.

Sourcemetadata.gunzchain.io
StoredOff-chain database
MutableYes — silently

What the chain records

#369 / 369

The most recent Tacoma Pioneer ever minted. Not the first — the last. It arrived roughly ten months after mint #368, alone, long after the item's main run had finished.

Mint block19,457,844
Mint time2026-05-28 12:05 UTC
Minted to0x69AbF3d6…8f68
MutableNo — consensus data
Evidence · 369 of 369 serials resolved

The two numbers are unrelated

This isn't one odd token. I pulled the serial for every Tacoma Pioneer in true chain-mint order. There is no correlation at all — and the serials run higher than the item's entire mint count, which is impossible for anything that's actually counting mints.

Tacoma Pioneer — chain mint order vs. metadata serial
Chain mintToken IDSerialReading
#1549347The genuine first mint carries a mid-range serial
#2139110
#318299Serial goes down as mint order goes up
#4217494
#1011054139247
#3014489077551Serial 551 on an item with 369 mints on chain — see the note below
#3686914171225
#369386849520The last mint holds the “first” serial
Evidence · a second item, same pattern, worse

Where it gets indefensible

Tacoma Pioneer could almost be dismissed as one weird token. So here is Sack the Ripper #1 — 240 lifetime mints — which starts out looking like an honest counter and then falls apart completely.

Sack the Ripper #1 — 240 mints, serials read in chain order
Chain mintToken IDSerialReading
#11253609000000001Starts honest — which is exactly what makes it convincing
#191255391300000021Already drifted by two
#201255726400000023Serial 00000022 not yet on chain
#1001263121000000107Drift widening
#2321831580600000250Serial 250 on an item with 240 mints on chain
#23318319785IRE5GA8YStops being a number at all
#23518368787ZF70KAFM
#2404643901200000022The skipped low serial — handed to the final mint, 221 mints later

And this scales. RIPPER has 50,047 mints; its last two mints carry the serials 9ZK4JR71 and GGC3I8X1. If your item's “serial number” can be a random alphanumeric string, it is not a mint counter, and it was never meant to be one.

Addendum · boxes mint on open

Why the serials drift

A question from holders on X after this went out: are HEX box contents minted when the box drops, or when you open it? The chain answers that one cleanly. Independence skins from the July 4 event, first minted April 2025, are still minting at roughly a thousand a day as of 30 August 2026. Trick, Treat or Die items from October 2025 minted as recently as 26 August 2026. Boxes mint on open, not on drop.

That explains every strange row above. The serial appears to be assigned when the item is generated, server-side. The mint fires when a player opens the box. Serial 22 was not skipped and reissued — it sat in an unopened box for 221 mints. Serial 551 on an item with 369 mints is not an error — there are more Tacoma Pioneers generated than opened, and the unopened ones have no mint position at all.

Which sharpens the point rather than softening it. Mint position is the order items were opened, ordered on chain and fixed. The serial is the order they were generated, off-chain and editable. Neither tells you who the “early adopter” is. Only one of them can’t be changed after the fact.

Mechanism · why it can be rewritten

Nothing about the serial is on-chain

This is the part most people get wrong. “It's an NFT, so the traits are on the blockchain.” For Off The Grid game items, they are not. Ask the contract what it knows about token 38684952 and it hands back a link:

tokenURI(38684952) https://metadata.gunzchain.io/api/v1/nft/0x9ED9…d271/38684952

That's the whole thing. A URL template — contract address plus token ID. No content hash, no IPFS CID, no traits stored on-chain. The name, the rarity, the image and the serial all live on a server. The chain knows only that the token exists and who holds it.

Lever 1

Edit the database row

The metadata endpoint responds cf-cache-status: DYNAMIC with no content hash — it's generated live per request. Change the stored value and every explorer, wallet and marketplace shows the new serial. No transaction, no event, no block. Nothing to audit against.

Lever 2

Upgrade the contract

The Game Item contract is a TransparentUpgradeableProxy (EIP‑1967). Whoever controls the proxy admin can swap the implementation and repoint metadata resolution wholesale. The implementation is not verified on GunzScan, so its write functions aren't publicly inspectable.

Precedent

Traits already do change

This isn't hypothetical. Hacked items change their rarity trait on tokens that were already minted — we hit this while indexing, when a token's burn attributed to a different item variant than its mint. Live metadata mutation is normal here.

The other side · what is actually immutable

Mint order is consensus data

Mint position isn't stored anywhere either — it's derived, and that's precisely what makes it trustworthy. Every mint is a Transfer event from the zero address. Order them by the block they landed in, then by their position within that block:

// every mint of one item, in true chronological order Transfer(from: 0x0000…0000, to: holder, tokenId) ordered by (blockNumber, logIndex)

Timestamps alone can't do this — many mints share a block and therefore share a timestamp. logIndex separates them, and (txHash, logIndex) is unique. Rewriting a token's mint position would mean rewriting GunzChain's history. That's the asymmetry worth holding onto:

Serial #0 is a database field. Mint #369 of 369 is a fact.

One can be changed by the issuer at any time, without telling anyone. The other can't be changed by anyone at all.

Action · before you pay a premium

What to actually check

01

Mint position, not serial

Where does the token sit in its item's mint chronology — #3 of 240, or #240 of 240? This is the number that survives scrutiny, and it's the one an early-adopter premium is actually supposed to be paying for.

02

Total mints — real scarcity

369 lifetime mints is a collectible. 50,047 is a commodity, and mint order stops meaning much at that scale. Check the item's total before treating any position as rare.

03

Active supply vs. lifetime mints

Burns matter. Sack the Ripper #1 minted 240 but only 224 are still alive. Lifetime mints tell you the ranking denominator; active supply tells you what's actually competing with you on the market.

04

The mint transaction itself

Block number, timestamp and the original recipient are all on-chain and all verifiable. An item minted alone, ten months after its main run, is a different asset from one minted in the original drop — even when the serial says otherwise.

Don't pay for: a low serial, on its own

A low or zero serial is not evidence of an early mint, is not guaranteed unique, is not guaranteed to stay a number, and is not guaranteed to stay the same value. If a listing's entire premium rests on the serial, the premium rests on a mutable field.

Independent verification

Check any of this yourself

Don't take our word for it — the two claims that matter are both checkable in a browser in under a minute.

# 1. Confirm the metadata is off-chain and served live GunzScan Game Item contract Read as Proxy tokenURI(38684952) it returns a metadata.gunzchain.io URL, not trait data # 2. Confirm the real mint order GunzScan the token's Token Transfers tab the transfer from 0x0000...0000 is the mint; note its block number compare against other tokens of the same item

Or run both checks at once: Mint Check compares any token's serial against its true chain position — paste a token ID, a GunzScan link, or an OpenSea listing.

GUNZscope's item pages do the second one for you across an item's whole mint history, which is the part that's tedious by hand once an item has a few hundred mints.