Skip to content

Protocol 23 SDK Upgrades #458

@Shaptic

Description

@Shaptic

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions