Commit Graph

13363 Commits

Author SHA1 Message Date
Bronek Kozicki
fbe28f6536 Switch sfAssetTotal sfAssetAvailable and sfLossUnrealized to required 2025-03-25 12:07:48 +00:00
Bronek Kozicki
ae68a09b06 Supplement ShareTotal in ledger_entry, ledger_data and account_objects. 2025-03-25 11:22:26 +00:00
Bronek Kozicki
dd3edbd5b0 Missed one getSeqValue() 2025-03-24 17:23:47 +00:00
Bronek Kozicki
a173dd20e2 Disallow regular Clawback on Vault accounts 2025-03-24 11:45:50 +00:00
Bronek Kozicki
cc4f87729f Merge branch 'develop' into vault 2025-03-24 11:25:35 +00:00
Bronek Kozicki
1e565e8488 Pseudo-accounts to use sequence 0 2025-03-24 11:10:31 +00:00
Bronek Kozicki
9c1a0aad7d Cleanup handling of unsupported PseudoAccountOwnerType 2025-03-24 10:41:19 +00:00
Bronek Kozicki
d8880ddb48 Replace getSeqProxy().value() with getSeqValue() where appropriate 2025-03-24 10:35:11 +00:00
Bronek Kozicki
1f005d2370 Add WaiveTransferFee::Yes for consistency
This has no actual effect since we do not set TransferRate in
mptIssuance of the vault shares; and transfers to the issuer are never
subject to TransferRate.
2025-03-21 16:48:40 +00:00
Bronek Kozicki
0959bf82b7 Enforce no negative balance at the end of transaction 2025-03-21 16:45:52 +00:00
Bronek Kozicki
58f15307ba Add ShareTotal to ledger_entry output 2025-03-21 16:33:31 +00:00
Bronek Kozicki
3d2102106c Show Share.mpt_issuance_id rather than MPTokenIssuanceID 2025-03-21 13:52:13 +00:00
Ed Hennis
d22a5057b9 Prevent consensus from getting stuck in the establish phase (#5277)
- Detects if the consensus process is "stalled". If it is, then we can declare a 
  consensus and end successfully even if we do not have 80% agreement on
  our proposal.
  - "Stalled" is defined as:
    - We have a close time consensus
    - Each disputed transaction is individually stalled:
      - It has been in the final "stuck" 95% requirement for at least 2
        (avMIN_ROUNDS) "inner rounds" of phaseEstablish,
      - and either all of the other trusted proposers or this validator, if proposing,
        have had the same vote(s) for at least 4 (avSTALLED_ROUNDS) "inner
        rounds", and at least 80% of the validators (including this one, if
        appropriate) agree about the vote (whether yes or no).
- If we have been in the establish phase for more than 10x the previous
  consensus establish phase's time, then consensus is considered "expired",
  and we will leave the round, which sends a partial validation (indicating
  that the node is moving on without validating). Two restrictions avoid
  prematurely exiting, or having an extended exit in extreme situations.
  - The 10x time is clamped to be within a range of 15s
    (ledgerMAX_CONSENSUS) to 120s (ledgerABANDON_CONSENSUS).
  - If consensus has not had an opportunity to walk through all avalanche
    states (defined as not going through 8 "inner rounds" of phaseEstablish),
    then ConsensusState::Expired is treated as ConsensusState::No.
- When enough nodes leave the round, any remaining nodes will see they've
  fallen behind, and move on, too, generally before hitting the timeout. Any
  validations or partial validations sent during this time will help the
  consensus process bring the nodes back together.
2025-03-20 12:41:44 -04:00
Bronek Kozicki
4c7119b92f Add support for Destination field in VaultWithdraw 2025-03-20 15:28:09 +00:00
Bronek Kozicki
6b1cf7cee7 Fix clang compilation error 2025-03-20 14:35:47 +00:00
Bronek Kozicki
9a7def38b5 Do not apply IOU fees on VaultDeposit/VaultWithdraw 2025-03-20 13:21:11 +00:00
Bronek Kozicki
b1fc3b7c41 Do not fail VaultSet if nothing changed
One of the failure conditions for VaultSet is:
* The transaction does not specify any of the modifiable fields.

This section was added because I've misread the specification as:
"The transaction does not modify any of the modifiable fields."

Turns out I was wrong, should have read more carefully.
2025-03-20 10:51:00 +00:00
Alex Kremer
75a20194c5 chore: Update link to ripple-binary-codec (#5355)
The link to ripple-binary-codec's definitions.json appears to be outdated. The updated link is also documented here: https://xrpl.org/docs/references/protocol/binary-format#definitions-file
2025-03-19 17:33:23 -04:00
Bronek Kozicki
4e862e0afd AssetMaximum less than zero should yield temMALFORMED 2025-03-19 17:50:48 +00:00
Bronek Kozicki
403ef0d6c2 Allow resetting AssetMaximum to zero 2025-03-19 17:37:20 +00:00
Bronek Kozicki
6db2144912 Improve checks in VaultSet VaultCreate and VaultDeposit 2025-03-19 16:26:44 +00:00
Bronek Kozicki
d77fc57c6a Do not delete expired MPToken 2025-03-19 12:07:52 +00:00
Bronek Kozicki
1df3ff8d76 Merge branch 'develop' into vault 2025-03-19 11:51:30 +00:00
Bronek Kozicki
8e68838543 Remove lsfMPTDomainCheck flag, delete expired MPToken 2025-03-19 11:51:03 +00:00
Alex Kremer
7fe81fe62e chore: Add PR number to payload (#5310)
This PR adds one more payload field to the libXRPL compatibility check workflow - the PR number itself.
2025-03-18 17:26:08 +00:00
Bronek Kozicki
345ddc7234 fix: Remove null pointer deref, just do abort (#5338)
This change removes the existing undefined behavior from `LogicError`, so we can be certain that there will be always a stacktrace.

De-referencing a null pointer is an old trick to generate `SIGSEGV`, which would typically also create a stacktrace. However it is also an undefined behaviour and compilers can do something else. A more robust way to create a stacktrace while crashing the program is to use `std::abort`, which we have also used in this location for a long time. If we combine the two, we might not get the expected behaviour - namely, the nullpointer deref followed by `std::abort`, as handled in certain compiler versions may not immediately cause a crash. We have observed stacktrace being wiped instead, and thread put in indeterminate state, then stacktrace created without any useful information.
2025-03-18 12:45:25 -04:00
Bart
d167d4864f refactor: Updates Conan dependencies: RocksDB (#5335)
Updates RocksDB to version 9.7.3, the latest version supported in Conan 1.x. A patch for 9.7.4 that fixes a memory leak is included.
2025-03-18 11:25:48 -04:00
Vlad
bf504912a4 fix: trust line RPC no ripple flag (#5345)
The Trustline RPC `no_ripple` flag gets set depending on `lsfDefaultRipple` flag, which is not a flag of a trustline but of the account root. The `lsfDefaultRipple` flag does not provide any insight if this particular trust line has `lsfLowNoRipple` or `lsfHighNoRipple` flag set, so it should not be used here at all. This change simplifies the logic.
2025-03-18 09:03:03 -04:00
cyan317
a7fb8ae915 fix: Handle invalid marker parameter in grpc call (#5317)
The `end_marker` is used to limit the range of ledger entries to fetch. If `end_marker` is less than `marker`, a crash can occur. This change adds an additional check.
2025-03-18 08:21:33 -04:00
Bronek Kozicki
2a8861d1c5 DomainID authorization check moved to doApply 2025-03-18 12:10:59 +00:00
Sergey Kuznetsov
d9b7a2688f fix: Error message for ledger_entry rpc (#5344)
Changes the error to `malformedAddress` for `permissioned_domain` in the `ledger_entry` rpc, when the account is not a string. This change makes it more clear to a user what is wrong with their request.
2025-03-17 09:14:49 -04:00
Bronek Kozicki
df8761d9f3 Merge branch 'develop' into vault 2025-03-17 12:48:28 +00:00
Darius Tumas
c0299dba88 Adds hub.xrpl-commons.org as a new Bootstrap Cluster (#5263) 2025-03-17 07:04:46 -04:00
Bronek Kozicki
c3ecdb4746 Rename "deadlock" to "stall" in LoadManager (#5341)
What the LoadManager class does is stall detection, which is not the same as deadlock detection. In the condition of severe CPU starvation, LoadManager will currently intentionally crash rippled reporting `LogicError: Deadlock detected`. This error message is misleading as the condition being detected is not a deadlock. This change fixes and refactors the code in response.
2025-03-14 16:15:09 -04:00
Bronek Kozicki
7b5680f536 Fix VaultClawback and unit test 2025-03-13 17:24:05 +00:00
Bronek Kozicki
b397524d85 Remove pointless comment 2025-03-13 16:26:26 +00:00
Bronek Kozicki
e0932635ed Fix formatting 2025-03-13 16:13:19 +00:00
Bronek Kozicki
238db87b7d Add check for lsfMPTCanClawback and lsfMPTCanLock 2025-03-13 16:10:14 +00:00
Bronek Kozicki
840a4644c2 Merge branch 'develop' into vault 2025-03-13 11:30:30 +00:00
Ed Hennis
c17676a9be refactor: Improve ordering of headers with clang-format (#5343)
Removes all manual header groupings from source and header files by leveraging clang-format options.
2025-03-12 18:33:21 -04:00
Ed Hennis
ed8e32cc92 refactor: Calculate numFeatures automatically (#5324)
Requiring manual updates of numFeatures is an annoying manual process that is easily forgotten, and leads to frequent merge conflicts. This change takes advantage of the `XRPL_FEATURE` and `XRPL_FIX` macros, and adds a new `XRPL_RETIRE` macro to automatically set `numFeatures`.
2025-03-12 17:34:06 -04:00
Bronek Kozicki
4c586eb4b0 Merge branch 'develop' into vault 2025-03-11 23:23:02 +00:00
Bronek Kozicki
3715d7e2e4 Fix bugs related to perm. domain checks, add unit test 2025-03-11 23:04:29 +00:00
Bart
2406b28e64 refactor: Remove unused and add missing includes (#5293)
The codebase is filled with includes that are unused, and which thus can be removed. At the same time, the files often do not include all headers that contain the definitions used in those files. This change uses clang-format and clang-tidy to clean up the includes, with minor manual intervention to ensure the code compiles on all platforms.
2025-03-11 14:16:45 -04:00
Bronek Kozicki
90fef02164 Factor out static Number getShareTotal() from View.cpp 2025-03-10 15:01:14 +00:00
Bronek Kozicki
7b4e901dd7 Replace assert with XRPL_ASSERT 2025-03-10 14:34:08 +00:00
Bronek Kozicki
8ca6a62b84 Error codes change in accountHolds must be amendment gated 2025-03-10 14:29:01 +00:00
Bronek Kozicki
65fdac09b3 Fix logic error in isVaultPseudoAccountFrozen 2025-03-10 14:22:27 +00:00
Bronek Kozicki
1441c919ad Merge branch 'develop' into vault 2025-03-07 16:51:44 +00:00
Bronek Kozicki
b0c2b97663 Enforce PD is enabled if sfDomainID is set 2025-03-07 16:51:32 +00:00