Cómo perdimos $ 25k debido a una peculiaridad de la API DEX Comerciamos fuertemente con un DEX perp (poseedor de los 10 mejores puntos, top 5 por volumen). Resulta que su punto final de API cancel_order() es.. especial. Siempre devuelve 200 OK. Puede llamar a cancel_order() con: • Un ID de pedido válido (13295238234991) • Un ID de pedido de cliente válido • Un ID de pedido o ID de pedido de cliente no válido • Un ID de pedido que ya se canceló • Un ID de pedido de hace 6 meses • Un sándwich de jamón •Tu madre → todavía 200 OK. Esto está bien si sabe que está sucediendo y codifica en torno a ello. No lo hicimos. El problema real: • Ocasionalmente, el RTT de create_order() aumenta a 50ms+ durante las horas punta. • Disparábamos un pedido y luego lo cancelábamos por ID de pedido del cliente antes de que el pedido llegara realmente. • Cancelar devoluciones 200 OK, por lo que asumimos que el pedido está muerto y lo eliminamos de nuestros libros. • Unos segundos después, se llena. → Nos atrapan por 10-20 pb por incidente. ¿El truco? Estos rellenos se mezclaron con rellenos normales, por lo que era difícil de detectar. También teníamos bucles de fondo de orden obsoleto ejecutándose, pero son periódicos y no siempre los detectamos antes del relleno. Arreglar: • Para este DEX, ahora *requerimos* que websocket cancel confirme o continuamos enviando spam a la cancelación hasta que se agote nuestro límite máximo de reintentos. Daño: • Pérdida estimada: $ 20K- $ 30K. Lección: • Cada API tiene peculiaridades. Por lo general, no son lógicos, a veces ni siquiera visibles y, a menudo, costosos. • Siempre verifique que el éxito realmente signifique éxito, no confíe en 200.
Sí, también estamos ejecutando estrategias de toma de arbitrios en este lugar y probablemente también nos estábamos "eliminando a nosotros mismos". Pero es una carrera contra todos los MM y nuestros umbrales de tomadores para los DEX de perps son generalmente más altos, por lo que a menudo fallamos o no alcanzamos el umbral de tomadores antes de intentarlo
la otra cosa un poco es que ahora estoy incentivado a NO contarle al lugar sobre esto, ya que se ha convertido en una ventaja para mí
@0xKeef
Loris
Loris27 jul 2025
la otra cosa un poco es que ahora estoy incentivado a NO contarle al lugar sobre esto, ya que se ha convertido en una ventaja para mí
42.64K