---
title: "Fair Draw — Fair Play"
description: "Who has priority when a drop is contested — the public ladder of collecting on PD — and what happens to bots, wallet armies, and their infrastructure."
category: "fair-draw"
keywords: ["priority", "collector standing", "bots", "sybil", "wallet army", "fair play", "the sweep", "voided"]
last_updated: "2026-10-12"
---

# Fair Play

Two different problems hide inside a contested drop, and PD treats them very differently.

**Real collectors competing for scarce Outputs** is healthy — it's what a good drop looks like. It gets a transparent, published priority policy and an equal-odds draw.

**Bots and wallet armies impersonating collectors** is the disease that has killed platforms. It gets no policy document — it gets removed.

## The public ladder

When a contested draw runs, entries are prioritized in bands, and the policy is stated plainly. Every input is fixed before the drop exists:

- **Pieces you hold on PD come first.** Outputs your wallet holds on PD Projects, read from Ethereum at the block before the drop's Project was created. Sold Outputs stop counting when they leave your wallet.
- **What you've spent minting on PD.** The ETH your wallet paid into primary mints on PD Projects, read from Ethereum at that same block. Buying on the secondary market counts through the pieces you hold, not here. Mints on your own Projects don't count.
- **Time on PD.** How long your account has existed. This one comes from PD's own record, not the chain: it is the one input PD supplies. To keep it honest, PD writes every account that exists when the log starts to Arweave once, in one list signed by PD's storage key; the first such list is the only one that counts, so a later one can never replace it. Time on PD counts only in drops that open after that first list has settled on Arweave. PD writes each day's new accounts there the day after, paid from the storage fee minters pay. Every drop's check holds each entry's start date to that log, so it can't be backdated. If a day's list ever reaches Arweave late, the record says so: those start dates count as proven only from the day the list arrived.

Within a band, the draw is a pure coin flip — equal odds, no further weighting. An exact tie is never split: a tied group that straddles a band's edge all takes the lower band, so nothing about a wallet's address helps. Newcomers aren't shut out: every drop that doesn't go contested (most of them) is identical for everyone, and every Output you collect raises your standing for the next contested one, permanently.

This ladder can afford to be public because gaming it is indistinguishable from being a real collector. The only way to climb is to buy and hold art — which pays artists, which is the platform working exactly as intended. One rung can still be bought cheaply, and we say so: an artist who mints their own Project holds those Outputs and pays only the storage fee for them. Those mints never count as spend; the pieces do count as held. The band boundaries aren't fixed numbers: each drop cuts its own entrants into bands, and its record shows how many landed in each.

<svg viewBox="0 0 720 322" role="img" aria-labelledby="fd-bands-title" style="width:100%;height:auto;display:block;margin:14px 0">
<title id="fd-bands-title">The public ladder: pieces held, minting spend and time on PD set your standing before the drop; standing sorts entrants into bands; the whole of Band 0 draws before Band 1; inside a band every entrant has exactly equal odds.</title>
<g font-family="'Courier New', Courier, monospace" font-size="13" font-weight="bold">
<rect x="10" y="14" width="300" height="188" fill="var(--stat-bg)" stroke="currentColor" stroke-width="1.5"/>
<text x="160" y="42" fill="currentColor" text-anchor="middle">YOUR STANDING</text>
<text x="160" y="62" fill="currentColor" text-anchor="middle" font-size="12" font-weight="normal">set before the drop — never in it</text>
<text x="38" y="100" fill="currentColor" text-anchor="middle" font-size="15">①&#xFE0E;</text>
<text x="56" y="100" fill="currentColor" text-anchor="start">pieces held on PD</text>
<text x="38" y="136" fill="currentColor" text-anchor="middle" font-size="15">②&#xFE0E;</text>
<text x="56" y="136" fill="currentColor" text-anchor="start">spent minting ◊</text>
<text x="38" y="172" fill="currentColor" text-anchor="middle" font-size="15">③&#xFE0E;</text>
<text x="56" y="172" fill="currentColor" text-anchor="start">time on PD</text>
<text x="355" y="112" fill="currentColor" text-anchor="middle" font-size="20">→</text>
<rect x="400" y="14" width="310" height="230" fill="var(--stat-bg)" stroke="currentColor" stroke-width="1.5"/>
<text x="555" y="40" fill="currentColor" text-anchor="middle" font-size="12" font-weight="normal">the draw fills seats top-down</text>
<rect x="416" y="52" width="278" height="42" fill="var(--stat-bg)" stroke="currentColor" stroke-width="2.5"/>
<text x="555" y="78" fill="currentColor" text-anchor="middle">BAND 0 — draws first</text>
<rect x="416" y="104" width="278" height="42" fill="var(--stat-bg)" stroke="currentColor" stroke-width="1.5"/>
<text x="555" y="130" fill="currentColor" text-anchor="middle">BAND 1 — then, whole</text>
<rect x="416" y="156" width="278" height="42" fill="var(--stat-bg)" stroke="currentColor" stroke-width="1.5" stroke-dasharray="5 4"/>
<text x="555" y="182" fill="currentColor" text-anchor="middle">BAND 2 — then…</text>
<text x="555" y="226" fill="currentColor" text-anchor="middle" font-size="12" font-weight="normal">the cuts: set by each drop's entrants</text>
<text x="416" y="40" fill="currentColor" text-anchor="middle" font-size="15">④&#xFE0E;</text>
<rect x="10" y="262" width="700" height="46" fill="var(--stat-bg)" stroke="currentColor" stroke-width="1.5"/>
<text x="360" y="290" fill="currentColor" text-anchor="middle">inside a band: a pure coin flip — exactly equal odds</text>
<text x="30" y="290" fill="currentColor" text-anchor="middle" font-size="15">⑤&#xFE0E;</text>
</g>
</svg>

- **①&#xFE0E; Pieces held** — Outputs your wallet holds on PD at the block before the drop; the first rung, and sold Outputs stop counting.
- **②&#xFE0E; Spent minting** — what your wallet paid into primary mints on PD by that block, read from Ethereum.
- **③&#xFE0E; Time on PD** — your account's age: PD's own record, anchored on Arweave every day.
- **④&#xFE0E; Bands, in order** — every entrant in Band 0 is drawn before anyone in Band 1, whole band before the next.
- **⑤&#xFE0E; Equal odds inside a band** — no further weighting of any kind: no streaks, no activity scores, nothing hidden. The transcript proves it.

## What happens to bots

The detection side is deliberately undocumented — describing the tripwires is a gift to the people they catch. What is policy, and permanent:

- **Void.** Entries identified as scripted, or as one operator wearing many wallets, are voided before the list is locked. They can press the button; the button doesn't care. The public record still lists them, marked voided with no reason given, and counts them ("k of n voided by PD"). A voided entry keeps its place in the ranking, so voiding it moves nobody else across a band's edge.
- **Infrastructure burns.** PD's memory is permanent, and so are @names. Wallets, funding trails, and hardware tied to a voided network stay tainted forever. Every attempt costs the operator the expensive part of their setup — the aged wallets and clean identities that took months or money to build — and buys them nothing.

## Why the race stays fun

Every anti-bot system before this one worked by slowing the drop down — raffles held open for hours, auctions that stretch the moment into a day. That killed the thing collectors actually love, and it didn't even work: given hours, one person can calmly enter fifty wallets one after another.

PD's defense runs the other way. The drop stays a *moment* — everyone present, everyone tapping at once — because the compressed moment is itself the defense: one human has one body and one opening window. The sprint to the button isn't something PD protects *despite* the bots. It's how PD beats them.
