Skip to content

Xls 68 sponsored fees reserves updated - #720

Merged
cybele-ripple merged 109 commits into
mainfrom
XLS-68-sponsored-fees-reservesupdated
Aug 12, 2026
Merged

Xls 68 sponsored fees reserves updated#720
cybele-ripple merged 109 commits into
mainfrom
XLS-68-sponsored-fees-reservesupdated

Conversation

@cybele-ripple

Copy link
Copy Markdown
Collaborator

This PR supports the new amendment for sponsored fees and reserves for the java library.

Changes here use XRPLF/rippled#5887

Comment thread xrpl4j-core/src/main/java/org/xrpl/xrpl4j/model/transactions/SponsorshipSet.java Outdated
Comment thread xrpl4j-client/src/main/java/org/xrpl/xrpl4j/client/XrplClient.java
…nerCountDelta)

rippled introduced sfFeeAmountDelta and sfRemainingOwnerCountDelta as new,
distinct SFields on SponsorshipSet, separate from the Sponsorship ledger
entry's sfFeeAmount/sfRemainingOwnerCount. This SDK still serialized
SponsorshipSet using the old field names/types, which definitions.json
also never got the new field entries for, so signed transactions
wouldn't wire-match a rippled node running the amendment. Also add the
temINVALID/temREDUNDANT-equivalent preflight checks rippled added
alongside the field rename.
sappenin
sappenin previously approved these changes Aug 6, 2026
RemainingOwnerCountDelta's Int32 sfield type had no codec implementation,
so signing any SponsorshipSet carrying it threw
"Unknown serialized type 'Int32'" (per kuan121's PR #720 review comment).
Add Int32Type (signed 32-bit two's complement, same wire width as
UInt32Type) and register it in SerializedType's type map.
…-reservesupdated

# Conflicts:
#	.github/xrpld-image.env
#	xrpl4j-core/src/main/resources/definitions.json
…onsorSignature

The co-signing flow for an account-level tfSponsorshipCreate/tfSponsorshipReassign
is inherently two-phase: build the transaction without a SponsorSignature, have
the new sponsor sign over that unsigned form, then rebuild with the resulting
SponsorSignature attached. The model's check() previously required
sponsorSignature() to already be present, which made it impossible to construct
that necessary unsigned intermediate object at all. Drop the precondition;
rippled is what rejects a final submission still missing the signature, same as
how transactionSignature() itself is never required at construction elsewhere
in this codebase.
Wraps hex parsing in a try/catch and rethrows as IllegalStateException with the offending hex value, per code-quality bot suggestion.
@sappenin
sappenin requested review from Patel-Raj11 and sappenin and removed request for Patel-Raj11 August 7, 2026 16:34
sappenin
sappenin previously approved these changes Aug 7, 2026
…-reservesupdated

# Conflicts:
#	.github/xrpld-image.env
Comment thread xrpl4j-core/src/main/resources/definitions.json
…json

Every ledger entry has a Meta*Object counterpart except UnknownLedgerObject
(intentional) and Sponsorship, which was missing one; add it, mirroring the
ledger entry's fields, and register it in MetaLedgerEntryType.

Also remove a byte-for-byte duplicate FeeAmount/MaxFee FIELDS entry in
definitions.json (same nth/type), keeping the copy correctly grouped in
ascending nth order alongside FeeAmountDelta.
@cybele-ripple
cybele-ripple merged commit df79914 into main Aug 12, 2026
20 checks passed
@cybele-ripple
cybele-ripple deleted the XLS-68-sponsored-fees-reservesupdated branch August 12, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants