Commit Graph

1162 Commits

Author SHA1 Message Date
Ed Hennis
7e4c52c869 test: Add more test cases for Base58 parser (#5174)
---------
Co-authored-by: John Freeman <jfreeman08@gmail.com>
2026-02-20 08:03:00 +09:00
Ed Hennis
ed9046b4fc test: Check for some unlikely null dereferences in tests (#5004) 2026-02-20 08:02:59 +09:00
Bronek Kozicki
01c1f87eca Add Antithesis intrumentation (#5042)
* Copy Antithesis SDK version 0.4.0 to directory external/
* Add build option `voidstar` to enable instrumentation with Antithesis SDK
* Define instrumentation macros ASSERT and UNREACHABLE in terms of regular C assert
* Replace asserts with named ASSERT or UNREACHABLE
* Add UNREACHABLE to LogicError
* Document instrumentation macros in CONTRIBUTING.md
2026-02-20 08:02:59 +09:00
Valentin Balaschenko
c764643d52 Reduce the peer charges for well-behaved peers:
- Fix an erroneous high fee penalty that peers could incur for sending
  older transactions.
- Update to the fees charged for imposing a load on the server.
- Prevent the relaying of internal pseudo-transactions.
  - Before: Pseudo-transactions received from a peer will fail the signature
    check, even if they were requested (using TMGetObjectByHash), because
    they have no signature. This causes the peer to be charge for an
    invalid signature.
  - After: Pseudo-transactions, are put into the global cache
    (TransactionMaster) only. If the transaction is not part of
    a TMTransactions batch, the peer is charged an unwanted data fee.
    These fees will not be a problem in the normal course of operations,
    but should dissuade peers from behaving badly by sending a bunch of
    junk.
- Improve logging: include the reason for fees charged to a peer.

Co-authored-by: Ed Hennis <ed@ripple.com>
2026-02-20 08:02:58 +09:00
Elliot Lee
8a2d0b1aa4 refactor(AMMClawback): move tfClawTwoAssets check (#5201)
Move tfClawTwoAssets check to preflight and return
error temINVALID_FLAG

---------

Co-authored-by: yinyiqian1 <yqian@ripple.com>
2026-02-20 07:58:14 +09:00
Elliot Lee
12fea12674 Add a new serialized type: STNumber (#5121)
`STNumber` lets objects and transactions contain multiple fields for
quantities of XRP, IOU, or MPT without duplicating information about the
"issue" (represented by `STIssue`). It is a straightforward serialization of
the `Number` type that uniformly represents those quantities.

---------

Co-authored-by: John Freeman <jfreeman08@gmail.com>
Co-authored-by: Howard Hinnant <howard.hinnant@gmail.com>
2026-02-20 07:57:00 +09:00
Olek
e1ea2d61ea fix: check for valid ammID field in amm_info RPC (#5188) 2026-02-20 07:56:26 +09:00
Mayukha Vadari
fb50a0c90d fix: include index in server_definitions RPC (#5190) 2026-02-20 07:56:25 +09:00
Bronek Kozicki
14af5e67fc Fix ledger_entry crash on invalid credentials request (#5189) 2026-02-20 07:56:25 +09:00
Shawn Xie
780500bc35 Replace Uint192 with Hash192 in server_definitions response (#5177) 2026-02-20 07:56:24 +09:00
Olek
2867b6eac5 Introduce Credentials support (XLS-70d): (#5103)
Amendment:
    - Credentials

    New Transactions:
    - CredentialCreate
    - CredentialAccept
    - CredentialDelete

    Modified Transactions:
    - DepositPreauth
    - Payment
    - EscrowFinish
    - PaymentChannelClaim
    - AccountDelete

    New Object:
    - Credential

    Modified Object:
    - DepositPreauth

    API updates:
    - ledger_entry
    - account_objects
    - ledger_data
    - deposit_authorized

    Read full spec: https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070d-credentials
2026-02-20 07:56:21 +09:00
Gregory Tsipenyuk
879bfb453e Fix token comparison in Payment (#5172)
* Checks only Currency or MPT Issuance ID part of the Asset object.
* Resolves temREDUNDANT regression detected in testing.
2026-02-20 07:51:04 +09:00
Gregory Tsipenyuk
6eddc7095b Add fixAMMv1_2 amendment (#5176)
* Add reserve check on AMM Withdraw
* Try AMM max offer if changeSpotPriceQuality() fails
2026-02-20 07:51:01 +09:00
Gregory Tsipenyuk
a289acc691 Fix unity build (#5179) 2026-02-20 07:50:28 +09:00
yinyiqian1
05ca77b23c Add AMMClawback Transaction (XLS-0073d) (#5142)
Amendment:
- AMMClawback

New Transactions:
- AMMClawback

Modified Transactions:
- AMMCreate
- AMMDeposit
2026-02-20 07:50:19 +09:00
yinyiqian1
bfabc979bb fix: reject invalid markers in account_objects RPC calls (#5046) 2026-02-20 07:45:22 +09:00
Gregory Tsipenyuk
0cd8805e36 Introduce MPT support (XLS-33d): (#5143)
Amendment:
- MPTokensV1

New Transactions:
- MPTokenIssuanceCreate
- MPTokenIssuanceDestroy
- MPTokenIssuanceSet
- MPTokenAuthorize

Modified Transactions:
- Payment
- Clawback

New Objects:
- MPTokenIssuance
- MPToken

API updates:
- ledger_entry
- account_objects
- ledger_data

Other:
- Add += and -= operators to ValueProxy

Read full spec: https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0033d-multi-purpose-tokens

---------
Co-authored-by: Shawn Xie <shawnxie920@gmail.com>
Co-authored-by: Howard Hinnant <howard.hinnant@gmail.com>
Co-authored-by: Ed Hennis <ed@ripple.com>
Co-authored-by: John Freeman <jfreeman08@gmail.com>
2026-02-20 07:45:19 +09:00
John Freeman
019940e907 Consolidate definitions of fields, objects, transactions, and features (#5122) 2026-02-20 07:37:27 +09:00
John Freeman
02749feea8 Reformat code with clang-format-18 2026-02-20 07:26:21 +09:00
Denis Angell
47a0018f30 feat(SQLite): allow configurable database pragma values (#5135)
Make page_size and journal_size_limit configurable values in rippled.cfg
2026-02-20 07:25:20 +09:00
Chenna Keshava B S
8491fd37e8 fix(book_changes): add "validated" field and reduce RPC latency (#5096)
Update book_changes RPC to reduce latency, add "validated" field, and accept shortcut strings (current, closed, validated) for ledger_index.

`"validated": true` indicates that the transaction has been included in a validated ledger so the result of the transaction is immutable.

Fix #5033

Fix #5034

Fix #5035

Fix #5036

---------

Co-authored-by: Bronek Kozicki <brok@incorrekt.com>
2026-02-20 07:25:18 +09:00
luozexuan
fbcb7376ff chore: fix typos in comments (#5094)
Signed-off-by: luozexuan <fetchcode@139.com>
2026-02-20 07:25:18 +09:00
Ed Hennis
dfaaac19c6 test: Retry RPC commands to try to fix MacOS CI jobs (#5120)
* Retry some failed RPC connections / commands in unit tests
* Remove orphaned `getAccounts` function

Co-authored-by: John Freeman <jfreeman08@gmail.com>
2026-02-20 07:25:17 +09:00
John Freeman
5a0882d17a refactor: Remove reporting mode (#5092) 2026-02-20 07:25:15 +09:00
Scott Schurr
7465bf594c Address rare corruption of NFTokenPage linked list (#4945)
* Add fixNFTokenPageLinks amendment:

It was discovered that under rare circumstances the links between
NFTokenPages could be removed.  If this happens, then the
account_objects and account_nfts RPC commands under-report the
NFTokens owned by an account.

The fixNFTokenPageLinks amendment does the following to address
the problem:

- It fixes the underlying problem so no further broken links
  should be created.
- It adds Invariants so, if such damage were introduced in the
  future, an invariant would stop it.
- It adds a new FixLedgerState transaction that repairs
  directories that were damaged in this fashion.
- It adds unit tests for all of it.
2026-02-20 07:25:15 +09:00
John Freeman
4b7370c0d2 Remove shards (#5066) 2026-02-20 07:25:13 +09:00
Bronek Kozicki
380e3839c2 Fix crash inside OverlayImpl loops over ids_ (#5071) 2026-02-20 07:25:12 +09:00
Mayukha Vadari
2aac65330b fix: change error for invalid feature param in feature RPC (#5063)
* Returns an "Invalid parameters" error if the `feature` parameter is provided and is not a string.
2026-02-20 07:25:11 +09:00
yinyiqian1
cdf3e82f6e Disallow filtering account_objects by unsupported types (#5056)
* `account_objects` returns an invalid field error if `type` is not supported.
  This includes objects an account can't own, or which are unsupported by `account_objects`
* Includes:
  * Amendments
  * Directory Node
  * Fee Settings
  * Ledger Hashes
  * Negative UNL
2026-02-20 07:24:41 +09:00
Scott Schurr
2091d129d4 chore: Rename two files from Directory* to Dir*: (#5058)
The names of the files should reflect the name of the Dir class.

Co-authored-by: Zack Brunson <Zshooter@gmail.com>
Co-authored-by: Ed Hennis <ed@ripple.com>
2026-02-20 07:20:17 +09:00
dashangcun
e9d75a6cc7 chore: remove repeat words (#5053)
Signed-off-by: dashangcun <jchaodaohang@foxmail.com>
Co-authored-by: dashangcun <jchaodaohang@foxmail.com>
Co-authored-by: Zack Brunson <Zshooter@gmail.com>
2026-02-20 07:20:16 +09:00
yinyiqian1
eccc2fc522 fix CTID in tx command returns invalidParams on lowercase hex (#5049)
* fix CTID in tx command returns invalidParams on lowercase hex

* test mixed case and change auto to explicit type

* add header cctype because std::tolower is called

* remove unused local variable

* change test case comment from 'lowercase' to 'mixed case'

---------

Co-authored-by: Zack Brunson <Zshooter@gmail.com>
2026-02-20 07:20:15 +09:00
Ed Hennis
61e8f0956f Invariant: prevent a deleted account from leaving (most) artifacts on the ledger. (#4663)
* Add feature / amendment "InvariantsV1_1"

* Adds invariant AccountRootsDeletedClean:

* Checks that a deleted account doesn't leave any directly
  accessible artifacts behind.
* Always tests, but only changes the transaction result if
  featureInvariantsV1_1 is enabled.
* Unit tests.

* Resolves #4638

* [FOLD] Review feedback from @gregtatcam:

* Fix unused variable warning
* Improve Invariant test const correctness

* [FOLD] Review feedback from @mvadari:

* Centralize the account keylet function list, and some optimization

* [FOLD] Some structured binding doesn't work in clang

* [FOLD] Review feedback 2 from @mvadari:

* Clean up and clarify some comments.

* [FOLD] Change InvariantsV1_1 to unsupported

* Will allow multiple PRs to be merged over time using the same amendment.

* fixup! [FOLD] Change InvariantsV1_1 to unsupported

* [FOLD] Update and clarify some comments. No code changes.

* Move CMake directory

* Rearrange sources

* Rewrite includes

* Recompute loops

* Fix merge issue and formatting

---------

Co-authored-by: Pretty Printer <cpp@ripple.com>
2026-02-20 07:20:14 +09:00
yinyiqian1
66aa252a52 fix "account_nfts" with unassociated marker returning issue (#5045)
* fix "account_nfts" with unassociated marker returning issue

* create unit test for fixing nft page invalid marker not returning error

add more test

change test name

create unit test

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* fix "account_nfts" with unassociated marker returning issue

* [FOLD] accumulated review suggestions

* move BEAST check out of lambda function

---------

Authored-by: Scott Schurr <scott@ripple.com>
2026-02-20 07:20:14 +09:00
Scott Schurr
fbcff93251 fixInnerObjTemplate2 amendment (#5047)
* fixInnerObjTemplate2 amendment:

Apply inner object templates to all remaining (non-AMM)
inner objects.

Adds a unit test for applying the template to sfMajorities.
Other remaining inner objects showed no problems having
templates applied.

* Move CMake directory

* Rearrange sources

* Rewrite includes

* Recompute loops

---------

Co-authored-by: Pretty Printer <cpp@ripple.com>
2026-02-20 07:20:13 +09:00
tequ
e95edcba48 fix for xahaud codebase 2026-02-20 07:11:14 +09:00
Pretty Printer
e618806999 Rewrite includes 2026-02-20 07:11:13 +09:00
Bronek Kozicki
a13f367b75 Change order of checks in amm_info: (#4924)
* Change order of checks in amm_info

* Change amm_info error message in API version 3

* Change amm_info error tests
2026-02-20 07:11:09 +09:00
Scott Schurr
10435a40e6 Add the fixEnforceNFTokenTrustline amendment: (#4946)
Fix interactions between NFTokenOffers and trust lines.

Since the NFTokenAcceptOffer does not check the trust line that
the issuer receives as a transfer fee in the NFTokenAcceptOffer,
if the issuer deletes the trust line after NFTokenCreateOffer,
the trust line is created for the issuer by the
NFTokenAcceptOffer.  That's fixed.

Resolves #4925.
2026-02-20 07:11:09 +09:00
Chenna Keshava B S
b7fbe4eb99 Replaces the usage of boost::string_view with std::string_view (#4509) 2026-02-20 07:11:08 +09:00
tequ
9465fccbc1 XLS-52d: NFTokenMintOffer (#4845) 2026-02-20 07:10:42 +09:00
todaymoon
92d3125bca chore: remove repeat words (#5041) 2026-02-20 07:10:41 +09:00
Alex Kremer
1b1420d51b Expose all amendments known by libxrpl (#5026) 2026-02-20 07:10:41 +09:00
Scott Schurr
0a2a5479c6 fixReducedOffersV2: prevent offers from blocking order books: (#5032)
Fixes issue #4937.

The fixReducedOffersV1 amendment fixed certain forms of offer
modification that could lead to blocked order books.  Reduced
offers can block order books if the effective quality of the
reduced offer is worse than the quality of the original offer
(from the perspective of the taker). It turns out that, for
small values, the quality of the reduced offer can be
significantly affected by the rounding mode used during
scaling computations.

Issue #4937 identified an additional code path that modified
offers in a way that could lead to blocked order books.  This
commit changes the rounding in that newly located code path so
the quality of the modified offer is never worse than the
quality of the offer as it was originally placed.

It is possible that additional ways of producing blocking
offers will come to light.  Therefore there may be a future
need for a V3 amendment.
2026-02-20 07:10:40 +09:00
Chenna Keshava B S
b3a41ee9de Additional unit tests for testing deletion of trust lines (#4886) 2026-02-20 07:10:39 +09:00
Bronek Kozicki
0c3909af4e Add new command line option to make replaying transactions easier: (#5027)
* Add trap_tx_hash command line option

This new option can be used only if replay is also enabled. It takes a transaction hash from the ledger loaded for replay, and will cause a specific line to be hit in Transactor.cpp, right before the selected transaction is applied.
2026-02-20 07:10:38 +09:00
Valentin Balaschenko
8a054c36f0 Track latencies of certain code blocks, and log if they take too long 2026-02-20 07:10:36 +09:00
John Freeman
bf0705775a Use error codes throughout fast Base58 implementation 2026-02-20 07:10:36 +09:00
Mayukha Vadari
469b13dd71 Improve error handling in some RPC commands 2026-02-20 07:10:35 +09:00
Gregory Tsipenyuk
3d87543300 Fix last Liquidity Provider withdrawal:
Due to the rounding, LPTokenBalance of the last
Liquidity Provider (LP), might not match this LP's
trustline balance. This fix sets LPTokenBalance on
last LP withdrawal to this LP's LPToken trustline
balance.
2026-02-20 07:07:01 +09:00