> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# ID ordine client

> Allega a un ordine un identificatore tuo, così da annullare e riconciliare tramite un valore che hai scelto tu, e non uno assegnato dalla catena.

Quando invii un ordine, la catena gli assegna un ID ordine. Quell'ID fa fede, ma lo conosci solo *dopo* che l'ordine è stato accettato — il che è un problema se quello che devi fare è annullare un ordine di cui non hai mai visto l'accettazione.

Un ID ordine client risolve la questione. Generi tu stesso l'identificatore, lo alleghi all'invio e puoi agire sull'ordine tramite quell'identificatore dal momento in cui lo invii.

<h2 id="why-this-matters-more-than-it-sounds">
  Perché conta più di quanto sembri
</h2>

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.

<h2 id="format">
  Formato
</h2>

L'identificatore è un **valore da 16 byte**, inviato come stringa esadecimale minuscola di 32 caratteri con prefisso `0x`.

```
0xa1b2c3d4e5f6789012345678901234ab
```

Tre regole che il protocollo applica:

* **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.

Il campo è facoltativo. Un ordine che ne è privo si comporta normalmente sotto ogni aspetto: semplicemente non può essere annullato tramite ID ordine client, ma solo tramite l'ID ordine assegnato dalla catena.

<h2 id="uniqueness">
  Unicità
</h2>

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.

<Note>
  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.
</Note>

<h2 id="what-you-can-do-with-it">
  Cosa puoi farci
</h2>

| Operazione                             | Comportamento                                                                                        |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Annullare tramite ID ordine client** | Annulla l'ordine attivo che porta quell'identificatore, senza bisogno dell'ID assegnato dalla catena |
| **Cercare tramite ID ordine client**   | Restituisce lo stato corrente dell'ordine e il suo storico                                           |
| **Riconciliare**                       | Confronta i tuoi registri con quelli della catena tramite un identificatore che hai assegnato tu     |

<h2 id="lifetime">
  Durata
</h2>

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.

<h2 id="where-to-go-next">
  Dove proseguire
</h2>

<CardGroup cols={2}>
  <Card title="Modificare gli ordini" href="/it/trading/modify-orders">
    Cambiare un ordine attivo, e cosa succede ai suoi identificatori.
  </Card>

  <Card title="Tipi di ordine" href="/it/trading/order-types">
    A cosa puoi allegare un identificatore.
  </Card>

  <Card title="Sviluppatori" href="/it/developers/overview">
    Inviare ordini e gestire risposte ambigue nel codice.
  </Card>

  <Card title="Sequenziamento delle transazioni" href="/it/trading/tx-sequencing">
    Perché un annullamento inviato nello stesso blocco viene eseguito prima di un ordine aggressivo.
  </Card>
</CardGroup>
