Hoe we $25k verloren door een quirk in de perp DEX API We handelen veel op een perp DEX (top 10 puntenhouder, top 5 op volume). Blijkt dat hun cancel_order() API-eindpunt... speciaal is. Het retourneert altijd 200 OK. Je kunt cancel_order() aanroepen met: • Een geldig order-ID (13295238234991) • Een geldig klantorder-ID • Een ongeldig order-ID of klantorder-ID • Een order-ID die al is geannuleerd • Een order-ID van 6 maanden geleden • Een ham sandwich • Je moeder → Nog steeds 200 OK. Dit is prima als je weet dat het gebeurt en eromheen codeert. Dat deden wij niet. Het werkelijke probleem: • Af en toe spikes de create_order() RTT naar 50ms+ tijdens drukke tijden. • We zouden een order plaatsen en deze vervolgens annuleren met het klantorder-ID voordat de order daadwerkelijk was geland. • Annuleren retourneert 200 OK, dus we gaan ervan uit dat de order dood is en verwijderen deze uit onze boeken. • Een paar seconden later wordt deze gevuld. → We worden gepakt voor 10-20 bps per incident. De kicker? Deze fills waren gemengd met normale fills, dus het was moeilijk te spotten. We hadden ook achtergrondloops voor verouderde orders draaien, maar die zijn periodiek en vingen deze niet altijd op voordat ze gevuld werden. Oplossing: • Voor deze DEX vereisen we nu *websocket annulering bevestigingen* of we blijven de annulering spammen totdat onze maximale retry-limiet is uitgeput. Schade: • Geschatte verlies: $20K-$30K. Les: • Elke API heeft quirks. Ze zijn meestal niet logisch, soms zelfs niet zichtbaar, en vaak duur. • Verifieer altijd dat succes daadwerkelijk succes betekent, vertrouw nooit op 200.
Ja, we voeren ook arb taker strategieën uit op deze locatie en we waren waarschijnlijk ook "onszelf aan het oppikken". Maar het is een race tegen alle MM en onze taker drempels voor perps DEXs zijn over het algemeen hoger, dus vaak zouden we de taker drempel missen of niet bereiken voordat we het proberen.
het andere soort f'ed up ding is dat ik nu gestimuleerd ben om de locatie hier niet over te vertellen, aangezien het een voordeel voor mij is geworden
@0xKeef
Loris
Loris27 jul 2025
het andere soort f'ed up ding is dat ik nu gestimuleerd ben om de locatie hier niet over te vertellen, aangezien het een voordeel voor mij is geworden
42,63K