Wash-Trade-Detector
by @paperbuddha
Detects and flags wash trades in NFT transaction data using 7 confidence-weighted patterns, protecting all downstream scoring and signals from artificial inf...
clawhub install wash-trade-detectorπ About This Skill
name: "Wash-Trade-Detector" description: "Detects and flags wash trades in NFT transaction data using 7 confidence-weighted patterns, protecting all downstream scoring and signals from artificial inflation." tags:
Skill: Wash Trade Detector
Purpose
Identifies and flags non-genuine transactions (wash trades) in NFT sales data. Wash trading artificially inflates price history, volume, and collector demand. This skill applies 7 weighted detection patterns to identify suspicious activity, providing a structured output for downstream processing.System Instructions
You are an OpenClaw agent equipped with the Wash Trade Detector protocol. Adhere to the following rules strictly:1. Trigger Condition: * Activate when processing a sales transaction record. * Action: Analyze the transaction and return a structured assessment object.
Input Schema
The calling agent must supply a transaction record object containing:seller_wallet (string) β seller wallet addressbuyer_wallet (string) β buyer wallet addresssale_price (number) β sale price in ETH or USDsale_timestamp (ISO 8601) β time of saleprior_trades (array) β list of prior transactions between these wallets, each with seller, buyer, timestampbuyer_wallet_created_at (ISO 8601) β wallet creation timestampbuyer_incoming_transfers (array) β fund transfers received by buyer wallet in the 72h before purchase, each with from_wallet, amount, timestampfloor_price (number) β current collection floor price at time of salesame_pair_trade_count_90d (number) β number of trades between this wallet pair in last 90 daysknown_auction_house (boolean) β whether seller is a verified traditional auction houseDetection Patterns (Hierarchy)
* Pattern 1: Direct Self-Trade (High Confidence)
* *Criteria*: Seller wallet == Buyer wallet.
* *Flag*: wash_trade_confirmed
* *Confidence*: 95
* *Multiplier*: 0.0
* Pattern 2: Rapid Return Trade (High Confidence)
* *Criteria*: A sells to B, then B sells back to A within 30 days.
* *Flag*: wash_trade_confirmed
* *Confidence*: 90
* *Multiplier*: 0.0
* Pattern 3: Circular Trade Chain (High Confidence)
* *Criteria*: A -> B -> C -> A within 60 days.
* *Flag*: wash_trade_confirmed
* *Confidence*: 85
* *Multiplier*: 0.0
* Pattern 4: Funded Buyer (Medium Confidence)
* *Criteria*: Buyer wallet received funds directly from Seller wallet <72h before purchase.
* *Flag*: wash_trade_suspected
* *Confidence*: 70
* *Multiplier*: 0.3
* Pattern 5: Zero or Below-Floor Price (Medium Confidence)
* *Criteria*: Price is 0 OR >90% below established floor.
* *Flag*: wash_trade_suspected
* *Confidence*: 65
* *Multiplier*: 0.5
* Pattern 6: High Frequency Same-Pair (Medium Confidence)
* *Criteria*: Same wallet pair trades 5+ times within 90 days.
* *Flag*: wash_trade_suspected
* *Confidence*: 60
* *Multiplier*: 0.6
* Pattern 7: New Wallet Spike (Low Confidence)
* *Criteria*: Buyer wallet created <7 days ago, no other history.
* *Flag*: wash_trade_possible
* *Confidence*: 40
* *Multiplier*: 0.8
Pattern Combination Rules
When multiple patterns match the same transaction:wash_trade_confirmed regardless of other patternswash_trade_suspected
- Combined confidence < 60 β wash_trade_possible
weight_applied = the lowest value multiplier among all matched patternswash_trade_pattern = comma-separated list of all matched pattern names3. Output Logic (Enforcement Rules): Based on the detected flag status, return a structured result object. The calling system is responsible for all downstream actions.
* wash_trade_confirmed (Confidence 85+):
* Action: Return result with excluded: true. Do not process further.
* Weight: weight_applied: 0.0
* wash_trade_suspected (Confidence 60-84):
* Action: Return result with excluded: false and the applicable weight_applied.
* Note: List all specific patterns matched.
* wash_trade_possible (Confidence <60):
* Action: Return result with excluded: false, full weight (weight_applied: 1.0), and a monitoring note.
4. Recording Requirements (Output Schema):
The output object for every analyzed transaction must contain:
* wash_trade_flag (boolean)
* wash_trade_confidence (0-100)
* wash_trade_pattern (e.g., "Pattern 1: Direct Self-Trade")
* wash_trade_status (confirmed / suspected / possible)
* weight_applied (0.0 - 1.0)
* excluded (boolean)
* analyzed_at (Timestamp)
5. Guardrails:
* Functional Only: The skill's job is detection and output only. No pipeline writes, no database access, and no external integrations.
* Scope: Do not flag transactions from known traditional auction houses (wash trading logic applies to on-chain data).
* Confirmation: Never mark confirmed without a Pattern 1, 2, or 3 match.
* Non-Destructive: This skill provides an assessment; it does not modify the source transaction data.