Updating the SDKs to the stable Protocol 20 release
SDKs need to be updated to adapt to breaking changes that have occurred since Preview 11 (i.e. the current testnet release candidate) coming to Protocol 20.
Summary of Breaking Changes
This is likely irrelevant to SDK maintainers, but do note sandbox mode has been removed from the Soroban CLI (https://github.com/stellar/soroban-tools/issues/983).
XDR
The XDR needs to be updated to https://github.com/stellar/stellar-xdr/commit/6a620d160aab22609c982d54578ff6a63bfcdc01. This includes a non-trivial list of breaking changes (mostly renames):
- The
BumpFootprintExpirationOpis nowExtendFootprintTTLOpand itsledgersToExpirefield is now namedextendTo, but it serves the same purpose. ContractExecutable.contractExecutableTokenis nowcontractExecutableStellarAssetSorobanTransactionData.refundableFeeis nowresourceFee- This new fee encompasses the entirety of the Soroban-related resource fees. Note that this is distinct from the "network-inclusion" fee that you would set on your transaction
- see https://github.com/stellar/js-stellar-base/pull/704 for an example migration
RPC
- The
getEventsRPC endpoint structure has changed:value: { xdr: string }is now justvalue: string(https://github.com/stellar/soroban-tools/pull/1015)contractIdwill always be a contract strkey (C...format) if present (https://github.com/stellar/soroban-tools/issues/1007)
- The
getLedgerEntriesRPC endpoint now includes expiration info (https://github.com/stellar/soroban-tools/pull/1010):expirationLedgerSeqis a string-ifieduint32present if the requested entries have expiration
There is an additional schema change: the getLedgerEntries RPC response will use liveUntilLedgerSeq rather than expirationLedgerSeq in the final build (ref: stellar/soroban-tools#1029)