Reporting An Advertiser
This page explains how ads can be reported, flagged, and—when necessary—removed from the network. It also covers the economic incentives that discourage abuse while rewarding honest moderation.
1. Purpose
The reporting system protects users and the platform by providing a community-driven mechanism to flag ads that violate policy during an active rental period. It balances three goals:
Fast reaction to harmful content.
Economic deterrence against malicious or frivolous reports.
Fair remediation for advertisers who are incorrectly flagged.
2. Key Variables (Admin-Configurable)
Variable
Description
Report Fee
Small fee paid per report to discourage spam.
Report Threshold
Number of reports required before an ad can be forcibly removed.
Removal Deposit
Stake the reporter must lock when calling removeFlaggedAd. Ensures only confident reporters act.
Successful Removal Reward
Bonus paid to a reporter when a valid removal is confirmed.
All four values are on-chain variables that can be adjusted through an adminSetConfig instruction.
3. Lifecycle Overview
flowchart LR
A[Advertiser wins auction & starts rental period] --> B[reportCount = 0]
B --> C[Users may submit reports (pay Report Fee)]
C -->|reportCount ≥ threshold| D[removeFlaggedAd may be invoked <br> (reporter locks Removal Deposit)]
D --> E{Admin review}
E -->|Ad OK| F[Return full escrow + Removal Deposit to Advertiser]
E -->|Ad violates| G[Return Removal Deposit + Reward to Reporter]\nSend remaining escrow to Treasury4. Detailed Workflow
4.1 Rental Period Begins
The advertiser wins an auction and sends rental payment to an escrow account.
reportCount for that advertiser’s slot is reset to 0.
4.2 Submitting Reports
Any wallet can call reportAd(adSlot).
The caller pays the Report Fee (burned or sent to treasury).
On success, reportCount += 1 for the current rental period.
4.3 Reaching the Threshold
When reportCount ≥ Report Threshold, the ad becomes flagged.
Flagged status alone does not remove the ad; it only unlocks the next step.
4.4 Initiating Removal
Any wallet may now call removeFlaggedAd(adSlot).
The caller must attach the Removal Deposit.
If the instruction is accepted:
The remaining rental time is forfeited.
A new auction for that slot begins immediately.
Remaining escrowed funds from the original rental are moved to a holding escrow controlled by the admin.
4.5 Admin Review
The admin periodically batches flagged ads for manual review:
Outcome
Funds to Advertiser
Funds to Reporter
Funds to Treasury
Ad wrongfully removed
100 % of remaining escrow + Removal Deposit
—
—
Ad legitimately removed
—
Removal Deposit + Successful Removal Reward
Remaining escrow
5. Economic Rationale
Report Fee deters low-effort spam but is small enough not to block genuine users.
Removal Deposit ensures only reporters confident in a clear violation will escalate.
Successful Removal Reward motivates community policing and covers gas costs.
Escrow Forfeiture penalizes advertisers for policy violations, offsetting the cost of disrupted inventory.
6. Edge Cases & Notes
Threshold Reset – reportCount resets to 0 automatically at the start of every new rental period (i.e., when an auction is won).
Multiple Removals – If multiple users race to call removeFlaggedAd, only the first successful transaction locks the Removal Deposit; others fail.
Admin Failure to Review – Until an admin decision is recorded, funds remain safely in the holding escrow.
7. Instruction Reference
Instruction
Signers
Key Arguments
Description
reportAd
reporter
adSlot
Submit a single report and pay Report Fee.
removeFlaggedAd
reporter
adSlot
Escalate a flagged ad by staking Removal Deposit.
adminSetConfig
admin
reportFee, removalDeposit, removalReward, reportThreshold
Update any economic parameter.
adminResolveRemoval
admin
adSlot, decision
Finalize funds flow after manual review.
8. Example Timeline
T0 – Advertiser A wins Slot #1 for 7 days.
T+1 d – 3 users each call reportAd. reportCount = 3 (threshold).
T+1 d 5 min – User X calls removeFlaggedAd and stakes 1 SOL deposit.
T+1 d 5 min – Slot #1 auction restarts; Y wins it later.
T+3 d – Admin reviews and confirms ad violation.
Outcome – User X receives 1 SOL deposit + 0.2 SOL reward; treasury keeps remaining escrow.
9. FAQ
Q: Can advertisers dispute a removal before admin review?
Not on-chain—their funds are already isolated. They may reach out off-chain to supply extra context for the admin decision.
Q: Why not automate the review?
Content violations often require human judgment. Manual review minimizes false positives.
Intended design (based on your description):
✅ Suspending user puts up ad_removal_deposit
✅ All advertiser's remaining funds go to suspension escrow
✅ Admin moderator decides: funds → advertiser (wrongful) or treasury (justified)
✅ If justified: treasury gets advertiser funds + suspender gets deposit back + reward
✅ If wrongful: advertiser gets funds back + suspender's deposit
Security: Fixed critical vulnerability where ads could be suspended without meeting report thresholds
Financial Model: No more incorrect refunds - proper deposit/escrow system with admin review
Open Bounty: Anyone can suspend (not just group members) if they pay deposit and threshold met
Immediate Reset: Auction resets immediately for new cycle - no state preservation needed
Proper Compensation: Suspenders get rewarded for justified suspensions, advertisers get compensated for wrongful ones
Last updated

