- Remove
GetLedgerEntryendpoint. This endpoint was already deprecated earlier in favor ofGetLedgerEntriesand is completely removed in this release.
- Preserve field omission behavior of
simulateTransaction(#291).
- Add
CursorinGetEventsResponse. This tells the client until what ledger events are being queried. e.g.:startLEdger(inclusive) -endLedger(exclusive) - Limitation: getEvents are capped by 10K
LedgerScanLimitwhich means you can query events for 10K ledger at maximum for a given request. - Add
EndLedgerinGetEventsRequest. This provides finer control and clarity on the range of ledgers being queried. - Disk-Based Event Storage: Events are now stored on disk instead of in memory. For context, storing approximately 3 million events will require around 1.5 GB of disk space. This change enhances the scalability and can now support a larger retention window (~7 days) for events.
- Ledger Scanning Limitation: The getEvents RPC will now scan a maximum of
10,000ledgers per request. This limits the resource usage and ensures more predictable performance, especially for queries spanning large ledger ranges. - A migration process has been introduced to transition event storage from in-memory to disk-based storage.
- Add support for unpacked JSON responses of base64-encoded XDR fields via a new, optional parameter. When omitted, the behavior does not change and we encode fields as base64.
xdrFormat?: "" | "base64" | "json"getTransactiongetTransactionsgetLedgerEntrygetLedgerEntriesgetEventssendTransactionsimulateTransaction
There are new field names for the JSONified versions of XDR structures. Any field with an Xdr suffix (e.g., resultXdr in getTransaction()) will be replaced with one that has a Json suffix (e.g., resultJson) that is a JSON object verbosely and completely describing the XDR structure.
Certain XDR-encoded fields do not have an Xdr suffix, but those also have a *Json equivalent and are listed below:
- getEvents:
topic->topicJson,value->valueJson - getLedgerEntries:
key->keyJson,xdr->dataJson - getLedgerEntry:
xdr->entryJson - simulateTransaction:
transactionData,events,results.auth,restorePreamble.transactionData,stateChanges.key|before|afterall have aJsonsuffix, andresults.xdris nowresults.returnValueJson
- Improve performance of
getVersionInfoandgetNetwork(#198).
- Fix parsing of the
--log-formatparameter (#252)
- Transactions will now be stored in a database rather than in memory (#174).
You can opt-in to longer transaction retention by setting --transaction-retention-window / TRANSACTION_RETENTION_WINDOW to a higher number of ledgers. This will also retain corresponding number of ledgers in the database. Keep in mind, of course, that this will cause an increase in disk usage for the growing database.
- Unify transaction and event retention windows (#234).
- There is a new
getTransactionsendpoint with the following API (#136):
interface Request {
startLedger: number; // uint32
pagination?: {
cursor?: string;
limit?: number; // uint
}
}
interface Response {
transactions: Transaction[]; // see below
latestLedger: number; // uint32
latestLedgerCloseTimestamp: number; // int64
oldestLedger: number; // uint32
oldestLedgerCloseTimestamp: number; // int64
cursor: string;
}
interface Transaction {
status: boolean; // whether or not the transaction succeeded
applicationOrder: number; // int32, index of the transaction in the ledger
feeBump: boolean; // if it's a fee-bump transaction
envelopeXdr: string; // TransactionEnvelope XDR
resultXdr: string; // TransactionResult XDR
resultMetaXdr: string; // TransactionMeta XDR
ledger: number; // uint32, ledger sequence with this transaction
createdAt: int64; // int64, UNIX timestamp the transaction's inclusion
diagnosticEventsXdr?: string[]; // if failed, DiagnosticEvent XDRs
}- Dependencies have been updated (
stellar/go) to enableENABLE_DIAGNOSTICS_FOR_TX_SUBMISSIONby default (#179).
- The Captive Core path is supplied correctly for TOML generation (#178).
- A new
getVersionInfoRPC endpoint providing versioning info (#132):
interface getVersionInfo {
version: string;
commit_hash: string;
build_time_stamp: string;
captive_core_version: string;
protocol_version: number; // uint32
}- Deadlock on events ingestion error (#167).
- Correctly report row iteration errors in
StreamAllLedgers(#168). - Increase default ingestion timeout (#169).
- Surface an ignored error in
getRawLedgerEntries()(#170).
This outlines the formatting expectations for the CHANGELOG.md file.
If necessary, drop a summary here (e.g. "This release supports Protocol 420.")
- This is a pull request description and it should be quite detailed if it's a breaking change. Ideally, you would even include a bit of helpful notes on how to migrate/upgrade if that's necessary. For example, if an API changes, you should provide deep detail on the delta.
- Anything added should have a details on its schema or command line arguments ([#NNNN](link to github pr)).
- Be sure you describe who is affected and how.