Mengapa ini lebih penting daripada kedengarannya
Bayangkan pengiriman order yang timeout. Apakah order itu sampai ke chain? Anda tidak tahu. Tanpa client order ID, pilihan Anda adalah mengueri order terakhir lalu menebak berdasarkan pasar, sisi, harga, dan kuantitas — atau tidak melakukan apa-apa dan berharap. Dengan client order ID, ambiguitasnya lenyap. Anda membatalkan memakai identifier yang Anda buat. Kalau order itu ada, order itu dibatalkan. Kalau tidak pernah sampai, pembatalan itu tidak menemukan apa pun. Bagaimanapun, Anda berakhir pada state yang diketahui — dan itulah yang sebenarnya dibutuhkan sistem yang berjalan tanpa diawasi manusia. Ini juga yang membuat rekonsiliasi bisa dikerjakan. Catatan Anda sendiri memakai identifier yang Anda tetapkan sebagai kunci, jadi mencocokkan pandangan Anda dengan pandangan chain adalah pencarian nilai, bukan tebakan heuristik.Format
Identifier-nya adalah nilai 16 byte, dikirim sebagai string heksadesimal huruf kecil berawalan0x sepanjang 32 karakter.
- Hanya huruf kecil. Heksadesimal huruf besar ditolak, bukan dinormalkan.
- Panjang harus persis. Nilai yang lebih pendek atau lebih panjang ditolak.
- Nilai nol seluruhnya dicadangkan.
0x00000000...0000adalah penanda sentinel yang berarti tidak ada, dan tidak bisa dipakai sebagai identifier.
Keunikan
Keunikan berlaku dalam lingkup subakun: kombinasi alamat penanda tangan dan subakun di bawahnya. Ada dua konsekuensinya. Subakun berbeda di bawah alamat yang sama boleh memakai identifier yang sama tanpa konflik — berguna saat menjalankan strategi independen yang masing-masing membuat ID sendiri. Dan di dalam satu subakun, memakai ulang identifier yang sedang dipegang order aktif adalah error, bukan penggantian.Buat identifier secara acak, bukan berurutan. Penghitung memang menggoda karena membuat urutan terlihat, tetapi restart yang menghilangkan penghitung menghasilkan tabrakan dengan order yang masih aktif, sedangkan 16 byte acak praktis tidak pernah bertabrakan.
Apa yang bisa Anda lakukan dengannya
Masa hidup
Identifier itu milik order, bukan milik sesi Anda. Nilainya tetap bisa dikueri setelah order tereksekusi atau dibatalkan, dan itulah yang membuatnya berguna untuk rekonsiliasi setelah kejadian. Identifier bisa dipakai ulang begitu order yang ditandainya tidak lagi aktif. Dalam praktik hampir tidak ada alasan untuk memakai ulang — nilai acak baru tidak memakan biaya apa pun dan menghapus keraguan tentang order mana yang dirujuk catatan historis.Selanjutnya
Mengubah order
Mengubah order aktif, dan apa yang terjadi pada identifier-nya.
Jenis order
Apa saja yang bisa Anda lampiri identifier.
Developer
Mengirim order dan menangani respons yang ambigu di dalam kode.
Pengurutan transaksi
Mengapa pembatalan yang dikirim di blok yang sama berjalan lebih dulu daripada order agresif.