Skip to content

[High] Anti-Griefing Controls for Accept-Without-Fill Behaviour #453

Description

@james2177

Description:
Detect and penalise solvers that repeatedly accept intents without filling (locking user funds for the fill window) via escalating cooldowns, capacity reductions, and reputation impact.

Problem Statement & Context:
A griefing solver can accept many intents to block competitors and users, paying at most one slash per intent. Pre-slash controls are needed to limit the blast radius.

Scope & Acceptance Criteria:

  • Rolling unfilled-accept ratio per solver; thresholds trigger cooldown (no accepts for T), then reduced concurrency cap, then suspension.
  • Controls enforced at accept time with clear error codes; all actions audited.
  • Parameters configurable; dashboard metrics per solver.
  • Out of scope: on-chain penalties beyond existing slashing.

Implementation Guidelines:

  1. Key Files/Modules: src/intents/intents.controller.ts (accept), src/solvers/solvers.service.ts, src/intents/intents-sweeper.service.ts.
  2. Design/Architecture: Policy engine object evaluated in the accept critical section.
  3. Edge Cases/Constraints: Legitimate failures due to chain outages should be excludable by admin incident flag.
  4. Testing: Simulation tests with a griefing solver; fairness tests with honest solvers.

Definition of "Done": Common DoD.

Resources:

  • Design reference: N/A (backend-only)
  • src/intents/intents.service.ts (getAcceptedCountBySolver)

Common Definition of "Done" (applies in addition to the criteria above):

  • Code written, tested, and documented (TSDoc on public APIs, README/runbook/ADR updates where behaviour changes).
  • All acceptance criteria met; npm run lint, npm run typecheck, npm test, npm run test:e2e pass in CI.
  • PR follows .github/PULL_REQUEST_TEMPLATE, uses a Conventional Commit title (enforced by commitlint), includes test output / metrics screenshots, and references the issue.
  • New env vars are added to .env.example variants and src/config/env.validation.ts (the check:env-drift script must pass).
  • Reviewed and approved by at least one CODEOWNER.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave program

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions