CartRevolt

How our giveaway draws pick a winner you can check

How we pick each CartRevolt draw's winner from public randomness, what we publish and when, and how you can check a result yourself on the draw ledger.

CartRevolt team6 min read

A metal bowl piled with green raffle tickets printed with TICKET and serial numbers
Photo: Obi, Unsplash License

A giveaway's only fair if nobody can steer it, and that includes the people who run it. We built CartRevolt's draws so the winner follows from public information, and anyone, you included, can repeat the math after the close.

The short version

  1. For a draw with a real prize, we publish a commitment at least 24 hours before entries close: the rules, the settings and the exact public randomness the draw will use. Practice draws publish one too, with a shorter lead.
  2. At 7:00 PM Central time on the draw's day, entries close, and we freeze the list of entries and publish it as a fingerprint (a hash).
  3. Seconds later, a public randomness service called drand releases a new random value that nobody could know in advance.
  4. We compute the winner from that value and the frozen list, and we publish the proof for anyone to check.

Before entries close: the commitment

When we schedule a draw, we pin its terms: the rules version, the draw type, the close time and the minimum number of entries. In the same step we publish a commitment. It names the exact drand round that'll decide the result, plus 2 backup rounds in case drand is late, and it includes a hash of everything above. A hash is a short code that changes completely if a single character of the input changes. That's why nobody can quietly edit the terms later.

The draw type is fixed here too. In an Everyone draw, every eligible member has one entry. In a Community supporters draw, if you've got points from the last 30 days, you get 1 ticket for entering plus 1 for every 10 points, up to 5. The draw page tells you which type it is before you enter.

At 7:00 PM Central: entries close

Each draw closes at 7:00 PM in the America/Chicago time zone, and the page shows that time with its zone and offset. There isn't necessarily a draw every day. When none is scheduled, the page tells you when the next prize is announced, and entries stay closed. It's free to enter and there's no purchase needed. You can enter if you're 18 or older, live in one of the 50 states or DC, and have a verified email. For prizes worth more than $5,000, New York, Florida and Rhode Island are left out. The official rules list the rest.

Within seconds of the close, we check eligibility one last time, count each entrant's tickets, and write down and hash the final list. The list never shows names. Each entrant appears as a random-looking token with a ticket count, and your entry receipt shows your own token so you can find yourself in it. We publish the hash of that list before the deciding random value even exists.

The randomness comes from drand

drand is a public randomness service run by the League of Entropy, a group of independent organizations that includes Cloudflare, EPFL and Protocol Labs. At regular intervals the group produces a new random value together. Each value takes a minimum number of members cooperating, and the project's documentation explains that a smaller group can neither predict nor bias it. Every value comes with a signature that you or anyone else can check against the network's public key.

Our draws use drand's quicknet network, which publishes a new round every 3 seconds. We use the first round published at least 30 seconds after the close. Our server fetches it from 2 separate drand relays, requires them to match, and checks the signature before using it.

How the winner is computed

We combine the drand value, the hash of the entry list, the hash of the commitment and the draw's id into one seed. From that seed, a fixed public procedure picks the winner and 5 alternates in order. Your chance is your tickets divided by all tickets. There's no secret number of ours mixed in. No admin screen or setting can choose, change or hide a winner, either. You'll usually see the result 1 to 3 minutes after the close.

If the winner doesn't claim the prize within 72 hours, we offer it to the next person in that published order. There's no second draw. If a draw ends with fewer entries than its minimum, nobody's picked. We publish the reason, and a new draw for the same prize opens with every entry carried over. That can happen up to 3 times. After the third, the draw is cancelled for good.

Check it yourself

The draw ledger lists every draw we've published, newest first, with its commitment, the entry list hash, the drand round, the result and its status. It also shows the latest hash of our audit log. Every draw event in that log is chained to the one before it, so an edited entry would break the chain.

On a finished draw, open Verify. Then your browser does the work itself:

  1. Recomputes the commitment hash and compares it with the one published before the close.
  2. Checks that the close time and the drand round follow the 30-second rule above.
  3. Recomputes the entry list hash.
  4. Checks drand's signature and random value.
  5. Recomputes the seed, reruns the picks and compares every one.
  6. Checks the audit log entries and the latest hash.
  7. If you entered, confirms your token and ticket count are in the list.

Each step shows passed or failed, with the values it compared. Some draws are practice draws. They run the same way, with the same proof, but there's no prize, and they're labelled Practice draw, no prize.

Read the official draw rules

Open the draw ledger

Sources

Facts here come from these pages, as of November 8, 2026. Stores change their policies, so check the page before you rely on it.

Keep reading