Marktintegrität
Wash-Trading-, Alt-Account- und Selbstkauf-Erkennung — und warum markierte Trades ausgeschlossen statt blockiert werden.
Gavel v1.0.0Paper · Folia supported1.21 – 1.21.x
Ein Auktionshaus ist eine Geldwäschemaschine, solange niemand hinschaut. Zwei Accounts, die dasselbe Item zu überhöhten Preisen hin- und herhandeln, verschieben Währung zwischen Spielern ohne Papierspur — und vergiften nebenbei jede Preisschätzung auf dem Server.
Genau dafür bewertet Gavel Trades.
Was markiert wird
integrity: enabled: true wash-trading: enabled: true window-hours: 72 min-trades: 4 min-volume: 500000.0 price-multiple: 10.0 shared-address-check: true self-trade-check: true| Signal | Löst aus, wenn |
|---|---|
| Wiederholtes Paar | Dasselbe Verkäufer/Käufer-Paar handelt min-trades (4) Mal oder öfter innerhalb von window-hours (72). |
| Volumen | Dieses Paar bewegt im Fenster mindestens min-volume untereinander. |
| Preisausreißer | Ein Trade liegt price-multiple (10×) oder mehr über dem Median des Items — für sich genommen verdächtig, unabhängig von der Paarhistorie. |
| Geteilte Adresse | Beide Accounts haben sich von derselben IP verbunden. Das stärkste Signal überhaupt. |
| Selbstkauf | Ein Spieler kauft sein eigenes Angebot über einen Zweitaccount. |
Die drei Wash-Trading-Signale verstärken sich: Ein Paar, das häufig und zum Zehnfachen des Medians handelt, liegt weit jenseits dessen, was jedes Signal allein auslösen würde.
Was mit einem markierten Trade passiert
integrity: actions: exclude-from-pricing: true notify-staff: true log-to-file: true block-transaction: false| Aktion | Standard | Wirkung |
|---|---|---|
exclude-from-pricing | an | Der Trade fließt nie in die Preisstichprobe. |
notify-staff | an | Teammitglieder mit gavel.admin.integrity werden benachrichtigt. |
log-to-file | an | Wird nach plugins/Gavel/logs/integrity.log geschrieben. |
block-transaction | aus | Weist den Handel komplett ab. |
Blockieren ist aus gutem Grund aus
Ein Fehlalarm, der einen legitimen Handel blockiert, kostet dich ein Support-Ticket, einen wütenden Spieler und den Ruf eines kaputten Auktionshauses. Ein Fehlalarm, der lediglich einen Verkauf aus einer 30-Tage-Stichprobe ausschließt, kostet gar nichts.
Lass block-transaction: false, bis du dein eigenes Integritäts-Log ein paar Wochen beobachtet hast
und deine Fehlalarmquote kennst.
Warum Ausschluss die eigentliche Verteidigung ist
exclude-from-pricing ist die Einstellung, auf die es ankommt — und sie wirkt auch dann, wenn
niemand das Log liest.
Der Grund, einen Markt zu manipulieren, ist die Verschiebung des Referenzpreises: den Median eines Items hochpumpen und dann den eigenen Bestand zum aufgeblasenen „fairen" Preis an echte Spieler verkaufen, den das Plugin nun anzeigt. Fließen die manipulierten Trades nie in die Stichprobe ein, produziert das ganze Schema nichts als zwei Accounts, die Geld im Kreis reichen.
Deshalb teilen sich Integrität und Preisberechnung ihre Infrastruktur, statt getrennte Features zu sein. Der Detektor existiert, um den Schätzer zu schützen.
Das Log lesen
plugins/Gavel/logs/integrity.logJede Zeile hält den Trade fest, beide Accounts, das Item, den Preis, die ausgelösten Signale und was getan wurde. Es ist Klartext und lässt sich problemlos greppen.
Realistische Muster, die du sehen wirst:
- Zwei Accounts, gleiche IP, handeln Erde für 500.000. Währungstransfer zwischen den eigenen Accounts eines Spielers, oder ein außerhalb des Servers ausgehandelter Verkauf. Einen Blick wert.
- Ein Trade zum 40-Fachen des Medians, einmalig, zwischen Accounts ohne Historie. Meist ein vertippter Preis und ein schneller Käufer, kein Missbrauch.
- Ein Paar handelt achtmal am Tag zu normalen Preisen. Meist zwei Freunde mit einer Shop-Absprache. Rauschen, sofern das Volumen nicht ebenfalls extrem ist.
Feinabstimmung
Beginne mit den Standardwerten und beobachte zwei Wochen. Dann:
| Symptom | Änderung |
|---|---|
| Zu viele Markierungen bei normal handelnden Freunden | min-trades auf 6–8 erhöhen oder min-volume anheben |
| Auf einem großen Server löst nie etwas aus | min-volume senken — der Standard geht von mittelgroßen Wirtschaften aus |
| Legitime Raritäten als Preisausreißer markiert | price-multiple auf 15–20 erhöhen |
| Familienmitglieder an einem Anschluss markiert | shared-address-check abschalten |
Geteilte IPs sind kein Beweis
Geschwister, Wohnheime und geteilte Netze existieren. shared-address-check ist ein starkes Signal,
keine Verurteilung — genau deshalb ist die Standardreaktion, den Trade aus der Statistik zu nehmen,
und nicht, jemanden zu bestrafen.
Datenschutz-Hinweis
Die Adressprüfung vergleicht Verbindungsadressen, die dein Server ohnehin protokolliert. Nichts wird irgendwohin gesendet; der Vergleich passiert in deiner eigenen Datenbank. Wenn du in der EU betreibst und eine Datenschutzerklärung veröffentlichst, gehört das unter deinen bestehenden Punkt zu Server-Logs.