Wash-Trade-Detector

v1.0.4

Detects and flags wash trades in NFT transaction data using 7 confidence-weighted patterns, protecting all downstream scoring and signals from artificial inf...

0· 288·0 current·0 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (wash trade detection) align with the input schema and the seven detection patterns in SKILL.md. There are no unrelated environment variables, binaries, or install steps requested.
Instruction Scope
Instructions are focused on analyzing a supplied transaction object and returning a structured assessment; they do not instruct reading files, env vars, or external endpoints. Minor ambiguities exist in pattern definitions (e.g., 'no other history' for Pattern 7) and there is no explicit input validation/error-handling described.
Install Mechanism
No install spec and no code files — the skill is instruction-only so nothing is written to disk or downloaded during install.
Credentials
The skill requests no environment variables, credentials, or config paths; this is proportionate to a detection-only skill.
Persistence & Privilege
always:false and default autonomous invocation are used. The SKILL.md explicitly forbids pipeline writes or external integrations. The skill does not request system-wide configuration changes or persistent presence.
Assessment
This skill appears internally consistent and low-risk from a permissions/installation standpoint, but review and testing are still important before production use: 1) Validate that all callers supply the required exact input fields and timestamp formats (timezones, ISO 8601) and that 'floor_price' is computed consistently. 2) Clarify ambiguous pattern language (e.g., Pattern 7's 'no other history') and edge cases (returns, legitimate repeat buyers) to reduce false positives. 3) Do not wire this skill to automatic exclusion without human review — consider logging flagged decisions and sampling for manual confirmation, especially for confirmed/excluded outcomes. 4) Ensure the calling pipeline enforces the stated guardrails (no DB writes or external reporting performed by the skill itself). 5) Test extensively on labeled historical data to measure false-positive/false-negative rates before using the output to block or exclude transactions.

Like a lobster shell, security has layers — review code before you run it.

latestvk976efsvfagvvxpesds21kdnd181y6rp

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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 address
  • buyer_wallet (string) — buyer wallet address
  • sale_price (number) — sale price in ETH or USD
  • sale_timestamp (ISO 8601) — time of sale
  • prior_trades (array) — list of prior transactions between these wallets, each with seller, buyer, timestamp
  • buyer_wallet_created_at (ISO 8601) — wallet creation timestamp
  • buyer_incoming_transfers (array) — fund transfers received by buyer wallet in the 72h before purchase, each with from_wallet, amount, timestamp
  • floor_price (number) — current collection floor price at time of sale
  • same_pair_trade_count_90d (number) — number of trades between this wallet pair in last 90 days
  • known_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_confirmed regardless 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 patterns
  • wash_trade_pattern = comma-separated list of all matched pattern names
  1. 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.
  2. 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)
  3. 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.

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…