Commit Graph

14263 Commits

Author SHA1 Message Date
Ed Hennis
885aeb7ada Update LendingHelper tests with more precise values
- Fixes broken tests
2025-12-09 13:57:23 -05:00
Ed Hennis
692070dbf1 Add semi-automatic rounding of STNumbers based on Asset types
- Create a new SField metadata enum, sMD_NeedsAsset, which indicates
  the field should be associated with an Asset so it can be rounded.
- Add a new STTakesAsset intermediate class to handle the Asset
  association to a derived ST class. Currently only used in STNumber,
  but could be used by other types in the future.
- Add "associateAsset" which takes an SLE and an Asset, finds the
  sMD_NeedsAsset fields, and associates the Asset to them. In the case
  of STNumber, that both stores the Asset, and rounds the value
  immediately.
- Transactors only need to add a call to associateAsset _after_ all of
  the STNumbers have been set. Unfortunately, the inner workings of
  STObject do not do the association correctly with uninitialized
  fields.
- When serializing an STNumber that has an Asset, round it before
  serializing.
- Add an override of roundToAsset, which rounds a Number value in place
  to an Asset, but without any additional scale.
- Update and fix a bunch of Loan-related tests to accommodate the
  expanded Number class.
- (Not all tests are fixed yet.)
2025-12-08 18:38:30 -05:00
Ed Hennis
9798172086 Merge branch 'ximinez/lending-XLS-66-ongoing' into ximinez/lending-number-simple 2025-12-05 21:29:53 -05:00
Ed Hennis
5224636794 Merge branch 'ximinez/lending-XLS-66-2' into ximinez/lending-XLS-66-ongoing 2025-12-05 21:29:07 -05:00
Ed Hennis
065f7171eb Merge branch 'ximinez/develop-nolending' into ximinez/lending-XLS-66-2 2025-12-05 21:28:36 -05:00
Ed Hennis
d95e0e542f Merge branch 'develop' into ximinez/develop-nolending 2025-12-05 21:14:03 -05:00
Ed Hennis
6f5c8eef30 Merge branch 'ximinez/lending-XLS-66-ongoing' into ximinez/lending-number-simple 2025-12-05 21:13:59 -05:00
Ed Hennis
5ceb915be4 Merge branch 'ximinez/lending-XLS-66-2' into ximinez/lending-XLS-66-ongoing 2025-12-05 21:12:57 -05:00
Ed Hennis
af43572ee5 Review feedback from @shawnxie999: even more rounding
- Round the initial total value computation upward, unless there is
  0-interest.
- Rename getVaultScale to getAssetsTotalScale, and convert one incorrect
  computation to use it.
- Use adjustImpreciseNumber for LossUnrealized.
- Add some logging to computeLoanProperties.
2025-12-05 21:08:01 -05:00
Ed Hennis
b02b700532 Update src/xrpld/app/tx/detail/LoanManage.cpp
Co-authored-by: Shawn Xie <35279399+shawnxie999@users.noreply.github.com>
2025-12-05 19:29:54 -05:00
Bart
b986395ecc docs: Infer version of Conan dependency to export (#6112)
This change updates a script in the documentation to automatically infer the version of a patched Conan dependency from the conan.lock file.
2025-12-05 11:44:48 -05:00
Vito Tumas
354531f946 Fix Overpayment Calculation (#6087)
- Adds additional unit tests to cover math calculations.
- Removes unused methods.
2025-12-04 12:54:25 -05:00
Ed Hennis
6bc3ff15c2 Merge branch 'ximinez/lending-XLS-66-ongoing' into ximinez/lending-number-simple 2025-12-04 12:34:17 -05:00
Bart
020ea3f412 refactor: Update Conan dependencies: protobuf and grpc (#5589)
This PR updates protobuf and grpc to their latest versions. The latest protobuf version no longer requires patches, so we can use it directly from the official Conan Center Index, while the latest grpc still needed a patch, which was added to our own Conan Center Index fork in XRPLF/conan-center-index#8.
2025-12-04 10:34:37 -05:00
Bart
51f1fe5f9a ci: Re-enable linux and macos matrix (#6107)
This change re-enables the Linux and macOS builds that were accidentally disabled in #6089 during testing.
2025-12-04 14:40:00 +00:00
Bart
813bc4d949 refactor: Replaces secp256k1 source by Conan package (#6089)
This change substitutes the secp256k1 source code copy by the Conan recipe added in XRPLF/conan-center-index#24, which updates the version of the library to 0.7.0.
2025-12-04 08:32:45 -05:00
Ed Hennis
daf0316600 Small fixes for Loan merge
- Skip roundToScale work for 0 values.
- Expand a couple of test values to higher precision.
2025-12-03 20:01:06 -05:00
Ed Hennis
0650e6e89d Fix LCOV exclusion 2025-12-03 19:49:47 -05:00
Ed Hennis
947ad002e0 Review feedback from @Tapanito: overpayment value change
- In overpayment results, the management fee was being calculated twice:
  once as part of the value change, and as part of the fees paid.
  Exclude it from the value change.
2025-12-03 18:35:25 -05:00
Ed Hennis
43a6f10050 MPTTester::operator() parameter should be std::int64_t
- Originally defined as uint64_t, but the testIssuerLoan() test called
  it with a negative number, causing an overflow to a very large number
  that in some circumstances could be silently cast back to an int64_t,
  but might not be. I believe this is UB, and we don't want to rely on
  that.
2025-12-03 12:35:56 -05:00
Ed Hennis
e2e9582ff1 Test updates - show balances in runLoan() 2025-12-03 12:35:56 -05:00
Vito Tumas
803380c53c Fix overpayment asserts (#6084) 2025-12-03 12:35:56 -05:00
Ed Hennis
c953073c3a Merge remote-tracking branch 'XRPLF/ximinez/develop-nolending' into ximinez/lending-XLS-66-2
* XRPLF/ximinez/develop-nolending:
  Revert "Implement Lending Protocol (unsupported) (5270)"
  Implement Lending Protocol (unsupported) (5270)
  docs: Update CONTRIBUTING.md for XLS submission guidelines (6065)
  Placeholder
2025-12-03 12:30:43 -05:00
Ed Hennis
ad190a8d6f Review feedback from @dangell7: early return & coverage
- Exclude LogicError lines in ApplyView.cpp (specifically directory
  operations) from code coverage.
- Replace the ability to set the next page on a new directory page with
  an assert, because nothing uses it right now.
- Early return with success for batch inner transactions in preflight2.
2025-12-03 12:29:34 -05:00
Ed Hennis
7863cc71cc MPTTester::operator() parameter should be std::int64_t
- Originally defined as uint64_t, but the testIssuerLoan() test called
  it with a negative number, causing an overflow to a very large number
  that in some circumstances could be silently cast back to an int64_t,
  but might not be. I believe this is UB, and we don't want to rely on
  that.
2025-12-02 23:01:00 -05:00
Ed Hennis
2e7920cd1a Merge remote-tracking branch 'XRPLF/develop' into ximinez/lending-number-simple
* XRPLF/develop:
  Implement Lending Protocol (unsupported) (5270)
2025-12-02 21:34:14 -05:00
Ed Hennis
a538f0e438 Add test case line numbers for Number_test::test_limits()
- Aid tracking down tests that are only failing under certain
  configurations.
2025-12-02 17:14:56 -05:00
Ed Hennis
b772f6281e Revert "Implement Lending Protocol (unsupported) (#5270)"
This reverts commit 6c67f1f525.
2025-12-02 12:20:43 -05:00
Ed Hennis
bb6b847270 Merge remote-tracking branch 'upstream/develop' into ximinez/develop-nolending
* upstream/develop:
  Implement Lending Protocol (unsupported) (5270)
2025-12-02 12:20:06 -05:00
Ed Hennis
6c67f1f525 Implement Lending Protocol (unsupported) (#5270)
- Spec: XLS-66
- Introduces amendment "LendingProtocol", but leaves it UNSUPPORTED to
  allow for standalone testing, future development work, and potential
  bug fixes.
- AccountInfo RPC will indicate the type of pseudo-account when
  appropriate.
- Refactors and improves several existing classes and functional areas,
  including Number, STAmount, STObject, json_value, Asset, directory
  handling, View helper functions, and unit test helpers.
2025-12-02 16:38:17 +00:00
Ed Hennis
639d6a953c Refactor the "scaleNumber" conversion functions
- Rename to "fromNumber".
- Instead of returning a pair or tuple, returns a constructed object
  (IOUAmount, STAmount).
2025-12-01 20:22:15 -05:00
Ed Hennis
748888533e Remove trailing zeros from scientific notation Number strings
- Update tests. This has the happy side effect of making some of the string
  representations _more_ consistent between the small and large
  mantissa ranges.
2025-12-01 19:43:40 -05:00
Ed Hennis
8c43a0db93 Clean up some loose ends
- Get rid of commented and unused code.
- Add some asserts and static asserts.
- Use the range_ when possible.
2025-12-01 18:36:18 -05:00
Ed Hennis
cc05e407c2 Force small mantissas in testAMM() 2025-12-01 17:53:23 -05:00
Ed Hennis
ff39388b93 Merge branch 'develop' into ximinez/develop-nolending 2025-12-01 14:41:46 -05:00
Ed Hennis
aaaf43237c Merge branch 'develop' into ximinez/lending-number-simple 2025-12-01 14:41:41 -05:00
Mayukha Vadari
c9f17dd85d docs: Update CONTRIBUTING.md for XLS submission guidelines (#6065)
This change clarifies the status of XLS in the pull request process.
2025-12-01 12:46:50 -05:00
Ed Hennis
86e71daa86 Placeholder 2025-12-01 12:20:02 -05:00
Ed Hennis
8921f798f0 fixup! fixup! Update several unit tests to work with the new number rules 2025-11-28 22:27:57 -05:00
Ed Hennis
4ad3e9f8e8 fixup! Update several unit tests to work with the new number rules 2025-11-28 21:37:36 -05:00
Ed Hennis
3f87aeb6b5 Update several unit tests to work with the new number rules
- For AMM tests, just disable the SAV amendment because there are
  a boatload of results that depend on the old math. Those will be
  updated later.
2025-11-28 18:43:50 -05:00
Ed Hennis
db52b34f3f Merge branch 'develop' into ximinez/lending-number-simple 2025-11-28 15:53:18 -05:00
Ed Hennis
060ee70eb0 Merge branch 'develop' into ximinez/lending-XLS-66 2025-11-28 15:46:31 -05:00
Bart
b33b506b90 refactor: Replaces ed25519-donna source by Conan package (#6088)
This change substitutes the `ed25519-donna` source code copy by the Conan recipe added in https://github.com/XRPLF/conan-center-index/pull/23.
2025-11-27 16:51:32 +00:00
Ed Hennis
ae919ad5b7 Start fixing the AMMExtended tests 2025-11-27 02:00:11 -05:00
Ed Hennis
bea3ce952e Merge branch 'develop' into ximinez/lending-XLS-66 2025-11-27 01:48:44 -05:00
Ed Hennis
eaaea43f80 Refactor Number internals away from int128 to uint64 & a sign flag 2025-11-27 01:47:31 -05:00
Ed Hennis
a87460b89f Restore the original Number interface
- ctors and accessors return `rep`. Very few things expose
  `internalrep`.
- An exception is "unchecked" and the new "normalized", which explicitly
  take an internalrep. But with those special control flags, it's easier
  to distinguish and control when they are used.
- The goal is to get as much of the non-number code back to the previous
  state as possible.
2025-11-26 18:32:26 -05:00
Ayaz Salikhov
f399749ee2 chore: Add black pre-commit hook (#6086)
This change adds Black as a pre-commit hook to format Python files.
2025-11-26 19:14:17 +00:00
Ayaz Salikhov
2ed4047840 chore: Make conan lockfile generation commands into a script (#6085)
This change moves the lockfile instructions into a script, and instead of removing packages it sets the Conan home directory to a temporary directory.

There are several advantages, such as:
* Not affecting the user's Conan home directory, so there is no need to remove packages.
* Only the script needs to be run, rather than several commands.
2025-11-26 18:43:14 +00:00