Perché conta più di quanto sembri
Immagina un invio che va in timeout. È arrivato alla catena? Non lo sai. Senza un ID ordine client le opzioni sono interrogare gli ordini recenti e tirare a indovinare per mercato, lato, prezzo e quantità, oppure non fare nulla e sperare. Con un ID, l’ambiguità sparisce. Annulli tramite l’identificatore che hai generato. Se l’ordine esisteva, viene annullato. Se non è mai arrivato, l’annullamento non trova nulla. In entrambi i casi finisci in uno stato noto, che è ciò di cui ha davvero bisogno un sistema che gira senza una persona a guardarlo. È anche ciò che rende trattabile la riconciliazione. I tuoi registri sono indicizzati su un identificatore che hai assegnato tu, quindi confrontare la tua visione con quella della catena è una ricerca diretta e non un’euristica.Formato
L’identificatore è un valore da 16 byte, inviato come stringa esadecimale minuscola di 32 caratteri con prefisso0x.
- Solo minuscole. L’esadecimale maiuscolo viene rifiutato, non normalizzato.
- Lunghezza esatta. I valori più corti o più lunghi vengono rifiutati.
- Il valore tutto zeri è riservato.
0x00000000...0000è la sentinella che significa assente e non può essere usata come identificatore.
Unicità
L’unicità ha come ambito il sottoconto: la combinazione dell’indirizzo firmatario e del sottoconto che vi appartiene. Da qui due conseguenze. Sottoconti diversi sotto lo stesso indirizzo possono usare lo stesso identificatore senza conflitto — utile quando esegui strategie indipendenti che generano ciascuna i propri ID. E dentro un singolo sottoconto, riutilizzare un identificatore che appartiene a un ordine attivo è un errore, non una sostituzione.Genera gli identificatori in modo casuale anziché sequenziale. Un contatore è allettante perché rende visibile l’ordine cronologico, ma un riavvio che perde il contatore produce collisioni con ordini ancora attivi, e 16 byte casuali in pratica non collidono mai.
Cosa puoi farci
Durata
L’identificatore appartiene all’ordine, non alla tua sessione. Resta interrogabile dopo che l’ordine è stato eseguito o annullato, ed è questo a renderlo utile per la riconciliazione a posteriori. Diventa riutilizzabile quando l’ordine che identificava non è più attivo. In pratica c’è poco motivo di riutilizzarlo: un nuovo valore casuale non costa nulla ed elimina ogni dubbio su quale ordine indichi un record storico.Dove proseguire
Modificare gli ordini
Cambiare un ordine attivo, e cosa succede ai suoi identificatori.
Tipi di ordine
A cosa puoi allegare un identificatore.
Sviluppatori
Inviare ordini e gestire risposte ambigue nel codice.
Sequenziamento delle transazioni
Perché un annullamento inviato nello stesso blocco viene eseguito prima di un ordine aggressivo.