Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
1af2025
feature: Add delegate filter param for account_tx RPC
PeterChen13579 Dec 8, 2025
ca46b09
add precommiit hook
PeterChen13579 Dec 8, 2025
eb55b3d
fix tests
PeterChen13579 Dec 8, 2025
787b4b2
Merge remote-tracking branch 'upstream' into add_delegate_filter
PeterChen13579 Mar 31, 2026
e63a553
fix conflicts
PeterChen13579 Apr 1, 2026
fe6bf09
fix conflicts
PeterChen13579 Apr 1, 2026
e439513
Merge remote-tracking branch 'upstream/develop' into add_delegate_filter
PeterChen13579 Apr 2, 2026
0fc216c
fix comments
PeterChen13579 Apr 2, 2026
abdeaf8
Merge remote-tracking branch 'upstream/develop' into add_delegate_filter
PeterChen13579 Apr 6, 2026
cd8bf5a
fix levelization
PeterChen13579 Apr 6, 2026
133630c
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Apr 6, 2026
00bac69
fix clang tidy
PeterChen13579 Apr 6, 2026
a13c947
fix clang tidy
PeterChen13579 Apr 6, 2026
64460b6
get rid of magical string
PeterChen13579 Apr 8, 2026
7cb35fe
Merge remote-tracking branch 'origin' into add_delegate_filter
PeterChen13579 Apr 22, 2026
7821ffd
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Apr 22, 2026
670e4f7
fix test
PeterChen13579 Apr 22, 2026
a5f285a
fix clang-tidy
PeterChen13579 Apr 22, 2026
4a7396c
fix comments
PeterChen13579 Apr 24, 2026
f44f6af
Merge remote-tracking branch 'upstream' into add_delegate_filter
PeterChen13579 Apr 24, 2026
f80955c
fix style
PeterChen13579 Apr 24, 2026
0d802f2
test coverage
PeterChen13579 Apr 26, 2026
8acda05
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Apr 27, 2026
4d91238
fix test
PeterChen13579 Apr 27, 2026
d90210c
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Jun 8, 2026
b5ef3a2
fix errors
PeterChen13579 Jun 9, 2026
4c6be16
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Jun 9, 2026
5733d87
fix build
PeterChen13579 Jun 10, 2026
4d336a8
Merge remote-tracking branch 'upstream/develop' into add_delegate_filter
PeterChen13579 Jun 25, 2026
973dbb2
Merge remote-tracking branch 'upstream/develop' into add_delegate_filter
PeterChen13579 Jun 30, 2026
f0bdec1
fix co-pilot comments
PeterChen13579 Jun 30, 2026
2a7c441
fix CI
PeterChen13579 Jun 30, 2026
528c634
fix comments
PeterChen13579 Jun 30, 2026
16e1508
add changelog and pagination
PeterChen13579 Jul 7, 2026
cc83425
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Jul 7, 2026
dc3bb29
fix comments
PeterChen13579 Jul 9, 2026
fa320cc
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Jul 9, 2026
ab1b22e
Merge remote-tracking branch 'upstream/develop' into add_delegate_filter
PeterChen13579 Jul 13, 2026
f59b944
fix comments
PeterChen13579 Jul 13, 2026
70b44b9
Merge branch 'develop' into add_delegate_filter
PeterChen13579 Jul 13, 2026
04214d0
trigger precommit hook
PeterChen13579 Jul 13, 2026
a2ba271
comments
PeterChen13579 Jul 13, 2026
f6c087c
fix clang tidy
PeterChen13579 Jul 13, 2026
7947e86
add tests
PeterChen13579 Jul 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions API-CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ This section contains changes targeting a future version.

### Additions

- `account_tx`: Added an optional `delegate` request object to filter delegated transactions. The object requires `delegate_filter`, which must be either `actor` for transactions owned by the requested account but signed by another account, or `authorizer` for transactions signed by the requested account on behalf of another account. The optional `counter_party` account narrows the results to a specific signer/delegate for `actor` or a specific owner/delegator for `authorizer`. Malformed `delegate`, `delegate_filter`, and `counter_party` values return standard invalid field errors, and invalid account IDs return `actMalformed`.
When paginating delegate-filtered queries, a marker from a delegate-filtered query includes a `delegate` flag and is only valid for follow-up requests that also supply `delegate` (mixing marker conventions returns `invalidParams`). Because filtering is applied after the ledger scan, a page may contain fewer results than `limit` (possibly zero) while still returning a marker, so callers must continue until no marker is present.

- `ledger_entry`, `account_objects`: The `Delegate` ledger entry now includes an optional `DestinationNode` field, which stores the index into the authorized account's owner directory. This field is present on entries created after bidirectional directory tracking was introduced and may appear in RPC responses for those entries. ([#6681](https://github.com/XRPLF/rippled/pull/6681))

- `server_definitions`: Added the following new sections to the response ([#6321](https://github.com/XRPLF/rippled/pull/6321)):
Expand Down
4 changes: 4 additions & 0 deletions include/xrpl/protocol/jss.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ JSS(accounts); // in: LedgerEntry, Subscribe, handlers/Ledger
JSS(accounts_proposed); // in: Subscribe, Unsubscribe
JSS(action); //
JSS(active); // out: OverlayImpl
JSS(actor); // in/out: AccountTx
JSS(acquiring); // out: LedgerRequest
JSS(address); // out: PeerImp
JSS(affected); // out: AcceptedLedgerTx
Expand All @@ -133,6 +134,7 @@ JSS(attestation_reward_account); //
JSS(auction_slot); // out: amm_info
JSS(authorized); // out: AccountLines
JSS(authorize); // out: delegate
JSS(authorizer); // in/out: AccountTx
JSS(authorized_credentials); // in: ledger_entry DepositPreauth
JSS(auth_accounts); // out: amm_info
JSS(auth_change); // out: AccountInfo
Expand Down Expand Up @@ -191,6 +193,7 @@ JSS(converge_time); // out: NetworkOPs
JSS(converge_time_s); // out: NetworkOPs
JSS(cookie); // out: NetworkOPs
JSS(count); // in: AccountTx*, ValidatorList
JSS(counter_party); // in/out: AccountTx
JSS(counters); // in/out: retrieve counters
JSS(credentials); // in: deposit_authorized
JSS(credential_type); // in: LedgerEntry DepositPreauth
Expand Down Expand Up @@ -270,6 +273,7 @@ JSS(freeze); // out: AccountLines
JSS(freeze_peer); // out: AccountLines
JSS(deep_freeze); // out: AccountLines
JSS(deep_freeze_peer); // out: AccountLines
JSS(delegate_filter); // in/out: AccountTx
JSS(frozen_balances); // out: GatewayBalances
JSS(full); // in: LedgerClearer, handlers/Ledger
JSS(full_reply); // out: PathFind
Expand Down
19 changes: 19 additions & 0 deletions include/xrpl/rdb/RelationalDatabase.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,22 @@ struct LedgerRange
uint32_t max;
};

/**
* @brief Enumeration of possible delegate types that can occur during filtering in account_tx
*/
enum class DelegateType {
Actor, ///< Another account signed and submitted transactions on behalf of this account (this
///< account is the owner/delegator).
Authorizer ///< This account signed and submitted transactions on behalf of another account
///< (this account is the signer/delegatee).
};

struct DelegateFilter
{
DelegateType type = DelegateType::Actor;
std::optional<AccountID> counterparty;
};

class RelationalDatabase
{
public:
Expand Down Expand Up @@ -82,6 +98,7 @@ class RelationalDatabase
std::optional<AccountTxMarker> marker;
std::uint32_t limit = 0;
bool bAdmin = false;
std::optional<DelegateFilter> delegate;
};

using AccountTx = std::pair<std::shared_ptr<Transaction>, std::shared_ptr<TxMeta>>;
Expand All @@ -101,6 +118,7 @@ class RelationalDatabase
bool forward = false;
uint32_t limit = 0;
std::optional<AccountTxMarker> marker;
std::optional<DelegateFilter> delegate;
};

struct AccountTxResult
Expand All @@ -109,6 +127,7 @@ class RelationalDatabase
LedgerRange ledgerRange{};
uint32_t limit = 0;
std::optional<AccountTxMarker> marker;
std::optional<DelegateFilter> delegate;
};

virtual ~RelationalDatabase() = default;
Expand Down
2 changes: 1 addition & 1 deletion sanitizers/suppressions/sanitizer-ignorelist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ src:test/beast/beast_PropertyStream_test.cpp
src:src/test/app/Invariants_test.cpp

# ASan false positive: stack-use-after-scope in ErrorCodes.h inline functions.
# When Clang inlines the StaticString overloads (e.g. invalid_field_error(StaticString)),
# When Clang inlines the StaticString overloads (e.g. invalidFieldError(StaticString)),
# ASan scope-poisons the temporary std::string before the inlined callee finishes reading
# through the const ref. This corrupts the coroutine stack and crashes the Simulate test.
# See asan.supp comments for full explanation and planned fix.
Expand Down
Loading
Loading