Normalize taker and maker amounts in orders - #68
Open
gmoutsin wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When creating an order, the price is multiplied by the size. Often rust overestimates the scale of the product. This can lead to decimal number such as 156730010^(-5) instead of 1567310^(-3) and subsequently this may be rejected by the server. Normalizing the amounts before creating the order solves this problem.
Note
Low Risk
Two-line normalization in limit order build only; intended numeric values unchanged, reduces spurious server rejections.
Overview
Limit order construction now canonicalizes
taker_amountandmaker_amountwithnormalize_assign()right aftersize * priceis truncated, and before those values are passed throughto_fixed_u128into the order payload.That addresses cases where
rust_decimalkeeps an inflated scale on the product (same value, different representation), which the CLOB server can reject even thoughto_fixed_u128already normalizes at encode time.Reviewed by Cursor Bugbot for commit 2256069. Bugbot is set up for automated code reviews on this repo. Configure here.