Conversation
Fix the Windows build by using `unsigned int` (instead of `uint`). The error, introduced by #4618, looks something like: rpc\impl\RPCHelpers.h(299,5): error C2061: syntax error: identifier 'uint' (compiling source file app\ledger\Ledger.cpp)
Amendment "flapping" (an amendment repeatedly gaining and losing majority) usually occurs when an amendment is on the verge of gaining majority, and a validator not in favor of the amendment goes offline or loses sync. This fix makes two changes: 1. The number of validators in the UNL determines the threshold required for an amendment to gain majority. 2. The AmendmentTable keeps a record of the most recent Amendment vote received from each trusted validator (and, with `trustChanged`, stays up-to-date when the set of trusted validators changes). If no validation arrives from a given validator, then the AmendmentTable assumes that the previously-received vote has not changed. In other words, when missing an `STValidation` from a remote validator, each server now uses the last vote seen. There is a 24 hour timeout for recorded validator votes. These changes do not require an amendment because they do not impact transaction processing, but only the threshold at which each individual validator decides to propose an EnableAmendment pseudo-transaction. Fix #4350
Modify the `XChainBridge` amendment. Before this patch, two door accounts on the same chain could could own the same bridge spec (of course, one would have to be the issuer and one would have to be the locker). While this is silly, it does not violate any bridge invariants. However, on further review, if we allow this then the `claim` transactions would need to change. Since it's hard to see a use case for two doors to own the same bridge, this patch disallows it. (The transaction will return tecDUPLICATE).
Update minimum compiler requirement for building the codebase. The
feature "using enum" is required. This feature was introduced in C++20.
Updating the C++ compiler to version 11 or later fixes this error:
```
Building CXX object CMakeFiles/xrpl_core.dir/src/ripple/protocol/impl/STAmount.cpp.o
/build/ripple/binary/src/ripple/protocol/impl/STAmount.cpp: In lambda function:
/build/ripple/binary/src/ripple/protocol/impl/STAmount.cpp:1577:15: error: expected nested-name-specifier before 'enum'
1577 | using enum Number::rounding_mode;
| ^~~~
```
Fix #4693
Make transactions and pseudo-transactions share the same commonFields again. This regularizes the code in a nice way. While this technically allows pseudo-transactions to have a TicketSequence field, pseudo-transactions are only ever constructed by code paths that don't add such a field, so this is not a transaction processing change. It may be possible to add a separate check to ensure TicketSequence (and other fields that don't make sense on pseudo-transactions) are never added to pseudo-transactions, but that should not be necessary. (TicketSequence is not the only common field that can not and does not appear in pseudo-transactions.) Note: TicketSequence is already documented as a common field. Related: #4637 Fix #4714
When a new transactor is added, there are several places in applySteps that need to be modified. This patch refactors the code so only one function needs to be modified.
Context: The `DisallowIncoming` amendment provides an option to block incoming trust lines from reaching your account. The asfDisallowIncomingTrustline AccountSet Flag, when enabled, prevents any incoming trust line from being created. However, it was too restrictive: it would block an issuer from authorizing a trust line, even if the trust line already exists. Consider: 1. Issuer sets asfRequireAuth on their account. 2. User sets asfDisallowIncomingTrustline on their account. 3. User submits tx to SetTrust to Issuer. At this point, without `fixDisallowIncomingV1` active, the issuer would not be able to authorize the trust line. The `fixDisallowIncomingV1` amendment, once activated, allows an issuer to authorize a trust line even after the user sets the asfDisallowIncomingTrustline flag, as long as the trust line already exists.
P2P link compression is a feature added in 1.6.0 by #3287. https://xrpl.org/enable-link-compression.html If the default changes in the future - for example, as currently proposed by #4387 - the comment will be updated at that time. Fix #4656
* Add a new API Changelog section for release 1.10. * Mark `jss::fee_ref` as deprecated. * Fix a copy-paste error in one of the unit tests.
The assert is saying that the only reason `pathFinder` would be null is if the request was aborted (connection dropped, etc.). That's what `continueCallback()` checks. But that is very clearly not true if you look at `getPathFinder`, which calls `findPaths`, which can return false for many reasons. Fix #4744
It might be possible for the server code to indirect through certain `end()` iterators. While a debug build would catch this problem with `assert()`s, a release build would crash. If there are problems in this area in the future, it is best to get a definitive indication of the nature of the error regardless of whether it's a debug or release build. To accomplish this, these `assert`s are converted into `LogicError`s that will produce a reasonable error message when they fire.
Implement native support for W3C DIDs. Add a new ledger object: `DID`. Add two new transactions: 1. `DIDSet`: create or update the `DID` object. 2. `DIDDelete`: delete the `DID` object. This meets the requirements specified in the DID v1.0 specification currently recommended by the W3C Credentials Community Group. The DID format for the XRP Ledger conforms to W3C DID standards. The objects can be created and owned by any XRPL account holder. The transactions can be integrated by any service, wallet, or application.
Using the "Amount" field in Payment transactions can cause incorrect interpretation. There continue to be problems from the use of this field. "Amount" is rarely the correct field to use; instead, "delivered_amount" (or "DeliveredAmount") should be used. Rename the "Amount" field to "DeliverMax", a less misleading name. With api_version: 2, remove the "Amount" field from Payment transactions. - Input: "DeliverMax" in `tx_json` is an alias for "Amount" - sign - submit (in sign-and-submit mode) - submit_multisigned - sign_for - Output: Add "DeliverMax" where transactions are provided by the API - ledger - tx - tx_history - account_tx - transaction_entry - subscribe (transactions stream) - Output: Remove "Amount" from API version 2 Fix #3484 Fix #3902
Update the documentation to describe network health with more nuance as well as context about related factors.
Remove `tx_history` and `ledger_header` methods from API version 2. Update `RPC::Handler` to allow for methods (or method implementations) to be API version specific. This partially resolves #4727. We can now store multiple handlers with the same name, as long as they belong to different (non-overlapping) API versions. This necessarily impacts the handler lookup algorithm and its complexity; however, there is no performance loss on x86_64 architecture, and only minimal performance loss on arm64 (around 10ns). This design change gives us extra flexibility evolving the API in the future, including other parts of In API version 2, `tx_history` and `ledger_header` are no longer recognised; if they are called, `rippled` will return error `unknownCmd` Resolve #3638 Resolve #3539
Remove dependency on `<ranges>` header, since it is not implemented by all compilers which we want to support. This code change only affects unit tests. Resolve XRPLF/rippled#4787
Introduce the `fixFillOrKill` amendment. Fix an edge case occurring when an offer with `tfFillOrKill` set (but without `tfSell` set) fails to cross an offer with a better rate. If `tfFillOrKill` is set, then the owner must receive the full TakerPays. Without this amendment, an offer fails if the entire `TakerGets` is not spent. With this amendment, when `tfSell` is not set, the entire `TakerGets` does not have to be spent. For details about OfferCreate, see: https://xrpl.org/offercreate.html Fix #4684 --------- Co-authored-by: Scott Schurr <scott@ripple.com>
The command line API still uses `apiMaximumSupportedVersion`. The unit test RPCs use `apiMinimumSupportedVersion` if unspecified. Context: - #4568 - #4552
* Remove include <ranges> * Formatting fix * Output for subscriptions * Output from sign, submit etc. * Output from ledger * Output from account_tx * Output from transaction_entry * Output from tx * Store close_time_iso in API v2 output * Add small APIv2 unit test for subscribe * Add unit test for transaction_entry * Add unit test for tx * Remove inLedger from API version 2 * Set ledger_hash and ledger_index * Move isValidated from RPCHelpers to LedgerMaster * Store closeTime in LedgerFill * Time formatting fix * additional tests for Subscribe unit tests * Improved comments * Rename mInLedger to mLedgerIndex * Minor fixes * Set ledger_hash on closed ledger, even if not validated * Update API-CHANGELOG.md * Add ledger_hash, ledger_index to transaction_entry * Fix validated and close_time_iso in account_tx * Fix typos * Improve getJson for Transaction and STTx * Minor improvements * Replace class enum JsonOptions with struct We may consider turning this into a general-purpose template and using it elsewhere * simplify the extraction of transactionID from Transaction object * Remove obsolete comments * Unconditionally set validated in account_tx output * Minor improvements * Minor fixes --------- Co-authored-by: Chenna Keshava <ckeshavabs@gmail.com>
* Promote API version 2 to supported * Switch command line to API version 1 * Fix LedgerRequestRPC test * Remove obsolete tx_account method This method is not implemented, the only parts which are removed are related to command-line parsing * Fix RPCCall test * Reduce diff size, small test improvements * Minor fixes * Support for the mold linker * [fold] handle case where both mold and gold are installed * [fold] Use first non-default linker * Fix TransactionEntry_test * Fix AccountTx_test --------- Co-authored-by: seelabs <scott.determan@yahoo.com>
* Fix binary output from tx method * Formatting fix * Minor test improvement * Minor test improvements
For api_version 2, always return ledger_index as integer in JSON output. api_version 1 retains prior behavior.
Show `DeliverMax` instead of `Amount` in output from `submit`, `submit_multisigned`, `sign`, and `sign_for`. Fix #4829
Workaround for compilation errors with gcc-13 and other compilers relying on `libstdc++` version 13. This is temporary until actual fix is available for us to use: boostorg/beast#2682 Some boost.beast files (which we do use) rely on an old gcc-12 behaviour where `#include <cstdint>` was not needed even though types from this header were used. This was broken by a change in libstdc++ version 13: https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes The necessary fix was implemented in boost.beast, however it is not yet available. Until it is available, we can use this workaround to enable compilation of `rippled` with gcc-13, clang-16, etc.
Co-authored-by: Hussein Badakhchani <hoos@alsoug.com>
Prevent WebSocket connections from trying to close twice. The issue only occurs in debug builds (assertions are disabled in release builds, including published packages), and when the WebSocket connections are unprivileged. The assert (and WRN log) occurs when a client drives up the resource balance enough to be forcibly disconnected while there are still messages pending to be sent. Thanks to @lathanbritz for discovering this issue in #4822.
…away memory usage: (#4822) * Add logging for Application.cpp sweep() * Improve lifetime management of ledger objects (`SLE`s) * Only store SLE digest in CachedView; get SLEs from CachedSLEs * Also force release of last ledger used for path finding if there are no path finding requests to process * Count more ST objects (derive from `CountedObject`) * Track CachedView stats in CountedObjects * Rename the CachedView counters * Fix the scope of the digest lookup lock Before this patch, if you asked "is it caching?" It was always caching.
* fixAMMv1_2
* fixAMMv1_1
* fixAMMOverflowOffer
* fixLPTokenTransfer
* suppress AMM test logs
* exclude `ltAMM` from `fixPreviousTxnID` Amendment
- make `sfPreviousTxnID` and `sfPreviousTxnLgrSeq` required for ltAMM
- NFToken related fix Amendments remains as `DefaultNo`.
- Add missing getHookOn declaration and implementation (build blocker) - Add else branches for HookOnOutgoing/HookOnIncoming in hsoUPDATE path - Guard unprotected optional dereferences in hsoINSTALL path - Reorder features.macro per review (HookOnV2/HooksUpdate2 before fixHookAPI20251128)
Collaborator
|
Ignore previous comment |
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.
High Level Overview of Change
Context of Change
Type of Change
.gitignore, formatting, dropping support for older tooling)API Impact
libxrplchange (any change that may affectlibxrplor dependents oflibxrpl)New Amendments
featureDeepFreeze
featurePermissionedDomains
featureDynamicNFT
featureCredentials
featureAMMClawback
featureMPTokensV1
featureInvariantsV1_1
featureNFTokenMintOffer
featurePriceOracle
featureDID
featureXChainBridge
featureAMM
featureClawback
fixNFTokenPageLinks
fixEnforceNFTokenTrustline
fixReducedOffersV1
fixPreviousTxnID
fixInnerObjTemplate
fixNFTokenReserve
fixFillOrKill
fixDisallowIncomingV1
1.12.0
#4485 XRPLF/rippled@6b4437d (NOT MERGED - Build(Conan))Merged at below2.0.0, 2.0.1
#4312 XRPLF/rippled@36cb5f9 (Conflict - Modifled)
#4667 XRPLF/rippled@6f74a74
#4630 XRPLF/rippled@c6f6375 (Conflict - Modifled)
#4637 XRPLF/rippled@31c8281 (Conflict - Modifled)
#4338 XRPLF/rippled@a955057 (NOT MERGED - Doc)
#4697 XRPLF/rippled@3b5fcd5
#4503 XRPLF/rippled@1d9db1b (NOT MERGED - Reverted)
#4504 XRPLF/rippled@002893f (NOT MERGED - Reverted)
#4505 XRPLF/rippled@f259cc1 (NOT MERGED - Reverted)
#4620 XRPLF/rippled@7fae1c1
#4292 XRPLF/rippled@649c11a (Conflict - Modifled) ChainBridge
#4702 XRPLF/rippled@ce570c1 (Revert Commit for #4697)
#4634 XRPLF/rippled@5427321 (Conflict - Modifled) / match.hpp has format diff but should be ignored
#4708 XRPLF/rippled@237b406
#4709 XRPLF/rippled@5b7d2c1
#4707 XRPLF/rippled@01fc4b0
#4507 XRPLF/rippled@3397922
#4672 XRPLF/rippled@65df4bc
#4574 XRPLF/rippled@e86181c
#4653 XRPLF/rippled@7bff9dc (Conflict - Modifled) src/secp256k1/* has format diff but should be ignored
#4691 XRPLF/rippled@9f102fc
#4585 XRPLF/rippled@8f65bc2 (NOT MERGED - APIChangelog)
#4635 XRPLF/rippled@a948203
#4632 XRPLF/rippled@77e0912
#4618 XRPLF/rippled@2487dab (Conflict - Modifled)
#4718 XRPLF/rippled@5433e13
#3839 XRPLF/rippled@8f89694 (NOT MERGED - Reverted)
#4722 XRPLF/rippled@e4db0fb
#4566 XRPLF/rippled@6b61505
#4628 XRPLF/rippled@548c91e (Conflict - Modifled)
#4731 XRPLF/rippled@b92d511
#4410 XRPLF/rippled@2bb8de0
#4720 XRPLF/rippled@925aca7
#4700 XRPLF/rippled@e27d24b
#4675 XRPLF/rippled@3dea78d (NOT MERGED - Already appled by Fix240819 #350)
#4724 XRPLF/rippled@0c43eb3 (NOT MERGED - APICHangelog)
#4662 XRPLF/rippled@40ebbec (NOT MERGED - Doc(SECURITY typo))
#4715 XRPLF/rippled@4e84ad6 (Conflict - Modifled)
#4710 XRPLF/rippled@ec86260 (Conflict - Modifled)
#4721 XRPLF/rippled@6ba9450 x fixDisallowIncomingV1
#4753 XRPLF/rippled@ced14ec x
#4741 XRPLF/rippled@053b69c (MERGED - APICHangelog not merged)
#4716 XRPLF/rippled@3e08c39 (NOT MERGED - Workflow)
#4746 XRPLF/rippled@1151fba (NOT MERGED - Workflow)
#4743 XRPLF/rippled@50cc1cf
#4740 XRPLF/rippled@c915984 (NOT MERGED - Build/conan)
#4596 XRPLF/rippled@1fde585 (NOT MERGED - Workflow)
#4757 XRPLF/rippled@be6ac7e (NOT MERGED - PR Template)
#4562 XRPLF/rippled@b69156a
#4559 XRPLF/rippled@41cd337 (NOT MERGED - tecHOOK_REJECTED reserve)
#4636 XRPLF/rippled@b421945 (Conflict - Modifled) DID (ltDID duplicat with ltIMPORT_VLSEQ 0x49->0x4449)
#4703 XRPLF/rippled@078bd60 (NOT MERGED - server_definitions)
#4737 XRPLF/rippled@8d86c5e (NOT MERGED - NetworkID)
#4756 XRPLF/rippled@5af9dc5 (NOT MERGED - Workflow)
#4596 XRPLF/rippled@5026cbd (NOT MERGED - Workflow)
#4733 XRPLF/rippled@3972683 (Conflict - Modifled)
#4729 XRPLF/rippled@3e5f770
#4759 XRPLF/rippled@1eac4d2
#4788 XRPLF/rippled@ac02e56
#4694 XRPLF/rippled@3b624d8 fixFillOrKill
#4677 XRPLF/rippled@26b0322
#4791 XRPLF/rippled@85342b2 (NOT MERGED - Dockerfile)
#4785 XRPLF/rippled@056255e
#4798 XRPLF/rippled@09e0f10
#4775 XRPLF/rippled@32ced49 (Conflict - Modifled)
#4807 XRPLF/rippled@4cb0bcb
#4803 XRPLF/rippled@ac27089
#4813 XRPLF/rippled@7b49f1e (NOT MERGED - gitlab-ci)
#4812 XRPLF/rippled@d593972
#4760 XRPLF/rippled@8ce85a9 (NOT MERGED - Reverted)
#4760 XRPLF/rippled@4977a5d (NOT MERGED - 2.0.0-RC2)
#4807 XRPLF/rippled@4dff203 (Duplicate Commit)
#4803 XRPLF/rippled@96c926c (Duplicate Commit)
#4813 XRPLF/rippled@f95fa33 (Duplicate Commit)
#4812 XRPLF/rippled@d5059b1 (Duplicate Commit)
#4760 XRPLF/rippled@c171090 (Duplicate Commit)
#4824 XRPLF/rippled@f05acbd (NOT MERGED - versioning)
#4823 XRPLF/rippled@92957d6 (NOT MERGED - marge release into dev)
#4836 XRPLF/rippled@2e93dd5 (NOT MERGED - gitlab-ci)
#4828 XRPLF/rippled@923e1ce (NOT MERGED - APICHangelog)
#4784 XRPLF/rippled@e33a6d5 (NOT MERGED - APICHangelog)
#4820 XRPLF/rippled@c045060
#4827 XRPLF/rippled@fe8621b
#4505 XRPLF/rippled@5aef102 (NOT MERGED - Revert Commit)
#4817 XRPLF/rippled@06251aa
#4821 XRPLF/rippled@656948c
#4773 XRPLF/rippled@3b191a3 (NOT MERGED - APICHangelog)
#4850 XRPLF/rippled@ffb53f2 (NOT MERGED - Revert Commit)
#4852 XRPLF/rippled@c53a5e7 (NOT MERGED - Revert Commit)
#4863 XRPLF/rippled@350d213 (NOT MERGED - versioning)
#4703 XRPLF/rippled@078bd60 (Conflict - Modified) Serve_Definition, RPC processing remains unchanged, other parts are merged
2.1.0, 2.1.1
#4860 XRPLF/rippled@90d463b x test: add unit test for redundant payment (#4860)
#4871 XRPLF/rippled@f9e3658 (NOT MERGED - CI) test: check for success/failure of Windows CI unit tests (#4871)
#4831 XRPLF/rippled@6f00d32 x fix(libxrpl): change library names in Conan recipe (#4831)
#4767 XRPLF/rippled@828bb64 (Modified - Conflict) fixNFTokenReserve: ensure NFT tx fails when reserve is not met (#4767)
#4885 XRPLF/rippled@1e96a1d (Modified - Conflict) build: add headers needed in Conan package for libxrpl (#4885)
#4728 XRPLF/rippled@6d3c21e (Modified - Conflict) feat: allow port_grpc to be specified in [server] stanza (#4728)
#4906 XRPLF/rippled@be12136 (Modified - Conflict) fixInnerObjTemplate: set inner object template (#4906)
#4917 XRPLF/rippled@e74cb35 x test: guarantee proper lifetime for temporary Rules object: (#4917)
#4968 XRPLF/rippled@e4796a1 fix: improper handling of large synthetic AMM offers:
2.2.0~2.2.3
m->signingKeyat Import.cpp)2.2.1
2.2.2
2.2.3
2.3.0, 2.3.1
2.3.0
2.3.1
2.4.0