Jak straciliśmy 25 tys. dolarów z powodu dziwactwa API perp DEX Intensywnie handlujemy na perp DEX (w czołowej dziesiątce posiadaczy punktów, w czołowej piątce pod względem wolumenu). Okazuje się, że ich punkt końcowy API cancel_order() jest...specjalny. Zawsze zwraca 200 OK. Możesz wywołać cancel_order() z: • Ważnym identyfikatorem zamówienia (13295238234991) • Ważnym identyfikatorem zamówienia klienta • Nieprawidłowym identyfikatorem zamówienia lub identyfikatorem zamówienia klienta • Identyfikatorem zamówienia, które już zostało anulowane • Identyfikatorem zamówienia sprzed 6 miesięcy • Kanapką z szynką • Twoją matką → Nadal 200 OK. To jest w porządku, jeśli wiesz, że to się dzieje i dostosowujesz kod. My nie wiedzieliśmy. Rzeczywisty problem: • Czasami, RTT create_order() wzrasta do 50 ms+ w czasie dużego ruchu. • Wysyłaliśmy zamówienie, a następnie anulowaliśmy je za pomocą identyfikatora zamówienia klienta, zanim zamówienie faktycznie dotarło. • Anulowanie zwraca 200 OK, więc zakładamy, że zamówienie jest martwe i usuwamy je z naszych ksiąg. • Kilka sekund później, zamówienie się realizuje. → Zostajemy zebrani za 10-20 bps za incydent. A co gorsza? Te realizacje były pomieszane z normalnymi realizacjami, więc trudno było je zauważyć. Mieliśmy również działające w tle pętle zamówień przestarzałych, ale są one okresowe i nie zawsze łapały te przed realizacją. Rozwiązanie: • Dla tego DEX, teraz *wymagamy* potwierdzeń anulowania przez websocket, w przeciwnym razie kontynuujemy spamowanie anulowaniem, aż wyczerpiemy nasz maksymalny limit prób. Szkody: • Szacowana strata: 20 tys. - 30 tys. dolarów. Lekcja: • Każde API ma swoje dziwactwa. Zwykle nie są logiczne, czasami nawet niewidoczne, a często kosztowne. • Zawsze weryfikuj, że sukces rzeczywiście oznacza sukces, nie ufaj żadnemu 200.
Tak, prowadzimy również strategie arb taker na tej platformie i prawdopodobnie również "podnosimy się". Ale to wyścig z wszystkimi MM, a nasze progi taker dla DEX-ów perps są zazwyczaj wyższe, więc często nie osiągamy lub nie przekraczamy progu taker przed próbą.
inną dziwną rzeczą jest to, że teraz jestem zmotywowany, aby NIE informować miejsca o tym, ponieważ stało się to moją przewagą.
@0xKeef
Loris
Loris27 lip 2025
inną dziwną rzeczą jest to, że teraz jestem zmotywowany, aby NIE informować miejsca o tym, ponieważ stało się to moją przewagą.
42,63K