- 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
- version
- 1.0.4
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:
- 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 withseller,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 withfrom_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 house
Detection 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:
- If any Pattern 1, 2, or 3 matches →
wash_trade_confirmedregardless of other patterns - If no Pattern 1, 2, or 3 matches, sum the confidence scores of all matched patterns:
- Combined confidence ≥ 60 → wash_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 names
- 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.
- 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)
- 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.