← Words
Reflecting on the Mythical Market
| Month | Sales (USD) | Total Txs | Avg Sale (USD) |
|---|---|---|---|
| January, 2023 | $10,189,903.27 | 790,215 | $12.90 |
| February, 2023 | $12,058,501.43 | 944,985 | $12.76 |
| March, 2023 | $21,945,969.38 | 1,464,497 | $14.99 |
| April, 2023 | $31,923,268.59 | 2,154,911 | $14.81 |
| May, 2023 | $36,002,203.31 | 2,115,410 | $17.02 |
| June, 2023 | $28,207,932.81 | 1,689,320 | $16.70 |
| July, 2023 | $20,700,003.82 | 1,785,107 | $11.60 |
| August, 2022 | $26,374,154.77 | 1,900,667 | $13.88 |
| September, 2023 | $33,661,319.03 | 1,791,977 | $18.78 |
| October, 2023 | $38,170,372.68 | 1,844,516 | $20.69 |
| November, 2023 | $26,071,670.59 | 1,400,376 | $18.62 |
| December, 2023 | $22,314,405.51 | 1,153,048 | $19.35 |
First Year Sales (USD): $307,619,705.19 (Monthly Avg. $25,634,975.43)
First Year Total Txs: 19,035,029
First Year Avg Sale (USD): $16.00
Draft — these are my notes; edit freely before publishing.
The Mythical Marketplace protocol (internally, SAGA) facilitated north of $290M in its first year, powering player-to-player trading for games like NFL Rivals, Nitro Nation World Tour, and Blankos Block Party. Here’s the shape of the design and the parts I’d revisit.
The core constraint
A game marketplace is not a DEX. The dominant traffic pattern is a long tail of low-value items traded by players who do not think about gas, nonces, or finality — and should never have to. Every design decision flowed from one rule:
The player should experience a trade, not a transaction.
What held up
- Settlement off the hot path. Listings and matching lived in services over CockroachDB and Redis; the chain was the system of record, not the request path. Players got instant feedback; settlement reconciled behind them.
- One contract surface. A single audited entry point (
SAGAMarketplace) meant the audit boundary was small and the integration story for game teams was “call this.”
// The whole external surface a game integration needed.
function executeOrder(Order calldata order, Signature calldata sig)
external
returns (bytes32 tradeId);
What I’d change
- Idempotency keys from day one. We added them; we should have started with them. Retries across a queue boundary are not optional at this volume.
- Fee policy as data, not code. Several redeploys would have been a config change.
More to come — including the migration to in-house infra without downtime.