Como perdemos US$ 25 mil por causa de uma peculiaridade da API DEX Negociamos fortemente em um DEX perp (top 10 pontos detentor, top 5 por volume). Acontece que o endpoint da API cancel_order() é.. especial. Ele sempre retorna 200 OK. Você pode chamar cancel_order() com: • Um ID de pedido válido (13295238234991) • Um ID de pedido de cliente válido • Um ID de pedido inválido ou ID de pedido de cliente • Um ID de pedido que já foi cancelado • Um ID de pedido de 6 meses atrás • Um sanduíche de presunto • Sua mãe → ainda 200 OK. Isso é bom se você souber que está acontecendo e codificar em torno disso. Nós não fizemos. O problema real: • Ocasionalmente, o RTT create_order() aumenta para 50ms+ durante os horários de pico. • Disparávamos um pedido e o cancelávamos pelo ID do pedido do cliente antes que o pedido fosse realmente recebido. • Cancelar devoluções 200 OK, então assumimos que o pedido está morto e o removemos de nossos livros. • Alguns segundos depois, ele enche. → Somos escolhidos por 10-20 bps por incidente. O kicker? Esses preenchimentos foram misturados com preenchimentos normais, por isso era difícil de detectar. Também tínhamos loops de fundo obsoletos em execução, mas eles são periódicos e nem sempre os capturam antes do preenchimento. Consertar: • Para esta DEX, agora *exigimos* confirmações de cancelamento de websocket ou continuamos enviando spam para o cancelamento até que nosso limite máximo de novas tentativas se esgote. Dano: • Perda estimada: US$ 20 mil a US$ 30 mil. Lição: • Cada API tem peculiaridades. Eles geralmente não são lógicos, às vezes nem mesmo visíveis e muitas vezes caros. • Sempre verifique se o sucesso realmente significa sucesso, confie no 200.
Sim, também estamos executando estratégias de arbitragem neste local e provavelmente também estávamos "nos escolhendo". Mas é uma corrida contra todos os MM e nossos limites de tomador para DEXs de perps são geralmente mais altos, então muitas vezes erramos ou não atingiríamos o limite de tomador antes de tentar
a outra coisa meio é que agora estou incentivado a NÃO contar ao local sobre isso, já que se tornou uma vantagem para mim
@0xKeef
Loris
Loris27 de jul. de 2025
a outra coisa meio é que agora estou incentivado a NÃO contar ao local sobre isso, já que se tornou uma vantagem para mim
42,63K