The 13 disqualification rules

Every proof submitted to DASHH runs through a deterministic 13-rule pipeline before any SOL moves. Failing any rule means the proof is rejected, a strike is recorded against the creator's wallet, and the campaign continues without paying out for that proof.

The rules are coded in src/lib/reclaim/verify.ts and described in human terms in src/lib/terms.ts. They are the rules from DISQUALIFICATION_REASONS:

  1. Fabricated or manipulated engagement (bot traffic, view farms, click bots)
  2. Sybil behaviour — using multiple wallets or sock-puppet social accounts
  3. Submitting content you do not own — the post owner in the proof must match your verified social handle
  4. Submitting content published before the campaign started (old/recycled posts)
  5. Deleting, hiding, or privating the content before the campaign ends
  6. Submitting a Reclaim proof that fails cryptographic verification
  7. Impossible view velocity — spikes that exceed realistic human-engagement rates for your follower base
  8. Engagement-ratio mismatch (e.g. views without any likes or comments, indicative of farmed traffic)
  9. Hate speech, harassment, or any content that violates the host platform's ToS
  10. Misrepresenting the brand, product, or campaign terms
  11. Attempting to reverse or challenge a payout after on-chain settlement
  12. Editing the post significantly after the proof is submitted (bait-and-switch)
  13. Coordinating with other wallets to game payment models (e.g. manipulating Split-Top-N ranks)

Severity tiers

The verifier classifies each violation into one of three tiers:

  • warn — proof is flagged for community review but no strike is recorded. Used for borderline cases where a human should look.
  • reject — proof is rejected and 1 strike is recorded. The standard outcome for the majority of rule violations.
  • severe — proof is rejected AND triggers an immediate ban regardless of strike count. Reserved for proof-forgery attempts.

The 3-strike ban policy

  • 3 strikes inside a rolling 90-day window → 90-day wallet ban.
  • Banned wallets cannot join new campaigns, submit proofs, or receive payouts.
  • Bans are wallet-level, not human-level. Sybil attacks (creating a new wallet to dodge a ban) are themselves disqualifying — rule 11 catches self-engagement rings.
  • After 90 days, the ban automatically lifts. The strike counter resets only on the FIRST clean settlement after the ban ends.

Why no human appeals?

DASHH is “peer-to-peer, no admin” on purpose. An appeal mechanism creates a discretionary chokepoint — exactly the thing Web3 advertising is supposed to remove. The trade-off is that the rules must be ruthlessly explicit AND deterministic. We believe that's a feature, not a bug.

What to do if you think you were unfairly disqualified

Open a GitHub issue with the participation id and the specific rule you believe was triggered. If we find a bug in the verifier, we'll fix the bug and the rule will treat past matching cases more leniently going forward — but we will not retroactively reverse paid-out settlements.