ruby-stellar-sdk icon indicating copy to clipboard operation
ruby-stellar-sdk copied to clipboard

Protocol 23 SDK Upgrades

Open Shaptic opened this issue 6 months ago • 1 comments

Protocol 23: SDK Changes

XDR Changes

  • XDR should be upgraded to stellar-xdr@4b7a2e. This includes, but is not limited to:
    • Handling LedgerCloseMetaV2 and TransactionMetaV4
    • Handling the new variants of ScAddress which can include muxed accounts, claimable balances, and liquidity pools
    • Adding support for StrKeys to encode claimable balances and liquidity pools, per SEP-23
    • Several fields have been renamed, though their semantic meaning is identical.

Horizon

  • /assets will no longer include num_archived_contracts and archived_contracts_amount
  • /async_transaction drops the previously-deprecated field errorResultXdr
  • /operations and /payments, when returning an InvokeHostFunction operation involving a SAC transfer, will now include a new field under the asset_balance_changes list to convey muxed account information (when present):
destination_muxed_id: string; // a uint64

RPC

API Changes

  • getTransaction and getTransactions have changed in how they display events for the transaction:
    • The top-level diagnosticEvents[Xdr|Json] field is now deprecated.
    • There is instead a new top-level object for found transactions. Note that each of these can also have a Json suffix variation if "xdrFormat": "json" is passed to the request, if your SDK supports that mode of operation.
+"events": {
+  "diagnosticEventsXdr": [], // base64-encoded list of `xdr.DiagnosticEvent`s
+  "transactionEventsXdr": [], // base64-encoded list of `xdr.TransactionEvent`s
+  // base64-encoded list of lists of `xdr.ContractEvent`s, where each element of
+  // the list corresponds to the events for that operation in the transaction
+  "contractEventsXdr": [[]], 
+}
  • getEvents will now:
    • drop the previously deprecated pagingToken field entirely in lieu of cursor
    • requests can include a ** for a topic filter as its last element to allow 0+ trailing topics matching the filter
    • no longer return events with "type" == "diagnostic"
    • return events for failed transactions
    • deprecate the field inSuccessfulContractCall
    • include a field opIndex: uint32 representing the operation at which an event occurred
    • include details about the RPC's ledger range at the top level of its response:
+ "oldestLedger": 0, // uint32
+ "latestLedgerCloseTime": "0", // uint64 as a string
+ "oldestLedgerCloseTime": "0" // uint64 as a string
  • simulateTransaction has a new, optional authMode parameter:
authMode?: "" | "enforce" | "record" | "record_allow_nonroot"

You can refer to the release notes for more details.

Shaptic avatar Jul 01 '25 17:07 Shaptic