Skip to content

fix(dex): resolve precision loss in wallet#3123

Merged
CharlVS merged 2 commits intodevfrom
cursor/investigate-and-resolve-precision-loss-in-wallet-0adc
Sep 3, 2025
Merged

fix(dex): resolve precision loss in wallet#3123
CharlVS merged 2 commits intodevfrom
cursor/investigate-and-resolve-precision-loss-in-wallet-0adc

Conversation

@CharlVS
Copy link
Copy Markdown
Collaborator

@CharlVS CharlVS commented Sep 2, 2025

Fix precision loss in fraction parsing and add an "Exact" taker amount option to resolve order matching issues for large volumes.

The fract2rat utility previously converted fraction numerator/denominator via double.parse before converting to BigInt, which introduced precision loss for large values. This caused mismatches, particularly when a maker's min_vol was exactly equal to max_vol, preventing takers from matching these orders precisely. The "Exact" button provides a direct way to use the maker's precise maxVolume without UI-induced rounding.


Open in Cursor Open in Web

Co-authored-by: charl <charl@vanstaden.info>
@cursor
Copy link
Copy Markdown

cursor bot commented Sep 2, 2025

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Sep 2, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cursor/investigate-and-resolve-precision-loss-in-wallet-0adc

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Sep 2, 2025

Visit the preview URL for this PR (updated for commit 8f1dbff):

https://walletrc--pull-3123-merge-z7zifvwy.web.app

(expires Tue, 09 Sep 2025 11:45:21 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: f66a4ff03faa546f12f0ae5a841bd9eff2714dcc

@CharlVS CharlVS marked this pull request as ready for review September 2, 2025 11:04
@CharlVS CharlVS linked an issue Sep 2, 2025 that may be closed by this pull request
@CharlVS CharlVS requested review from cipig and smk762 September 2, 2025 11:04
Co-authored-by: charl <charl@vanstaden.info>
Copy link
Copy Markdown
Collaborator

@smk762 smk762 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Ran 5 test swaps where min == max, matched with exact, using values with > 10 significant figures `. All 5 completed successfully ✔️
  • confirmed min/max validation working in form
  • confirmed new "exact" button functioning as expected.

LGTM to approve, thanks!

A minor enhancement which I can send to issue would be some form of visual indication where an order is exact only ( e.g. 🎯 ) though this should be discussed more to cover other min_volume != null cases

@CharlVS CharlVS changed the title Investigate and resolve precision loss in wallet fix(dex): resolve precision loss in wallet Sep 3, 2025
@CharlVS CharlVS merged commit b8858c6 into dev Sep 3, 2025
8 of 13 checks passed
@CharlVS CharlVS deleted the cursor/investigate-and-resolve-precision-loss-in-wallet-0adc branch September 11, 2025 14:43
@CharlVS CharlVS mentioned this pull request Oct 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DEX: Taker precision – allow matching when maker min_vol == max_vol

3 participants