Criteria on the wall first.
List sealed after.
Never the other way.
Xeroxdrop runs token distributions in one fixed order: you write the rule set, its keccak256 hash goes on-chain together with the block that will be snapshotted, then holdings are read at that block. After that: a merkle tree, a claim contract with no owner and no upgrade path, and a claim page that already exists. Anyone can run the CLI, replay from public chain data, and compare the root. We do not prove your rules are fair — we prove the list matches the rules you pinned to the wall before opening the door.
We never hold your tokens. One fee per drop, tiered by wallets on the list.
Meme segment, right now
live from CoinGeckoWhat is actually enforced
RulesAnchor.anchor() reverts when the snapshot block is already in the past. The ordering is not a promise in a blog post, it is a require statement.
The engine walks every Transfer event from the token deployment block to the snapshot block and reconstructs balances. Anyone with an RPC URL gets the same root.
After the replay, a deterministic sample of balances is compared against eth_call balanceOf at the same block. A single mismatch voids the run instead of shipping a wrong list.
The distributor has no owner, no pause, no way to change the root, and one destination for unclaimed funds — fixed in an immutable at deployment.
What we don't do
read before you write to us- ✕We do NOT vet your project.
- ✕We do NOT claim your rule set is fair. We only prove the list matches the rule set published beforehand.
- ✕We do NOT decide who is on your list. Your published rule set does, and anyone can replay it.
- ✕We do NOT hold your tokens — they sit in the claim contract; gas and transactions are signed by you.
- ✕We can NOT edit a drop after you anchor the hash. Even if you beg.
