Economy Integrity · Built on Aurora DSQL

Duplication,
made unrepresentable.

Duped is an economy kernel for online games. It removes item dupes, gold double-spends, and cross-region trade exploits — by making every economic action one atomic, idempotent transaction. The bug that's wrecked game economies for 25 years, gone at the data layer.

▸

We threw 10,000 bots at one legendary sword across two regions. It stayed exactly one — and you can run the SQL proof yourself.

01The Problem

A dupe bug is counterfeiting.

When a player duplicates a legendary or spends the same gold twice, the economy inflates and trust collapses. This isn't a fringe glitch — it has shipped in the biggest games ever made.

New World(2021)

Amazon repeatedly froze all trading and gold transfers to stop item and gold dupes.

Diablo II

Item and gold dupes defined its black market for roughly 20 years.

RuneScape

Dupe incidents forced full economy rollbacks.

Teams of hundreds keep shipping dupes — because the root cause is distributed-systems correctness, not bad luck.

02The Insight

A dupe isn't a game bug. It's a double-commit bug.

Every classic dupe is the same database failure in disguise.

ExploitCorrectness property
✕Trade-window race→Exactly-once — version-guarded transfer
✕Drop-and-relog→Atomicity — all-or-nothing
✕Disconnect mid-trade→Atomic rollback
✕Cross-region dupe→Active-active strong consistency
✕Gold double-spend→Conditional atomic debit

Fix the consistency, and duplication has nowhere to live.

03How It Works

A sword is not money — so we protect them differently.

UNIQUE ITEMS

Every unique item is exactly one row with one owner and a version. Moving it is a conditional UPDATE that must match the current owner + version — two concurrent transfers can't both match, so exactly one wins. “Owned twice” has no representation.

UPDATE item_instances SET owner_id=:to, version=version+1
 WHERE instance_id=:id AND owner_id=:from AND version=:expected;
-- rowCount must be 1
GOLD

Balances are sharded and can't go negative; every transfer writes a balanced double-entry ledger. Supply in = supply out, to the minor unit. No inflation.

balance_minorCHECK ≥ 0
ledger Σ(signed)= 0
supply in= supply out
04The Proof

One query proves it.

No dashboards to trust — the invariants are runnable SQL against the live truth core. Here's the same check the demo runs on camera.

pnpm reconcile
✓legendary count=1
✓gold supply== minted (drift 0)
✓ledger drift=0
✓every txn balanced=true
ALL INVARIANTS PASS
Run it yourself in the live demo ▸
05Built On
Aurora DSQL

Strongly-consistent, active-active multi-region truth core. The single source of authoritative economy state.

DynamoDB

The live world read model — written only by the outbox projector, never inside a trade.

Vercel

Edge deploy with OIDC auth — no credentials in code, from local dev to production.

agents→trade kernel→Aurora DSQL⇄DynamoDB→live world

Ready to make dupes impossible?

▸ Try the live demoRead the docs

Built for the H0 hackathon · Million-Scale Global App (gaming)