mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
SigningHash packed uint64(math.Round(Size*1e8)), so the digest committed to a rounded tick count while the matcher's crossing loop and RemainingSize read the float. Two sizes inside one rounding interval produced the SAME digest: a signature taken over one authorized the other. On a permissionless exchange that is a signed order whose quantity the holder can change. An off-tick size is refused rather than snapped. Snapping decides, silently, that the signer meant a quantity they did not write, and that is the one thing a signature exists to prevent. Two on-tick sizes differ by at least a tick, so their digests differ; an off-tick size cannot be signed at all. The collision is unreachable from either side. The epsilon absorbs the binary representation error of a decimal quantity and nothing more — it is orders of magnitude below one tick, so it can never let two distinct ticks meet. Co-authored-by: Hanzo Dev <[email protected]>