- Remove
GetLedgerEntry
endpoint. This endpoint was already deprecated earlier in favor ofGetLedgerEntries
and is completely removed in this release.
- Preserve field omission behavior of
simulateTransaction
(#291).
- Add
Cursor
inGetEventsResponse
. This tells the client until what ledger events are being queried. e.g.:startLEdger
(inclusive) -endLedger
(exclusive) - Limitation: getEvents are capped by 10K
LedgerScanLimit
which means you can query events for 10K ledger at maximum for a given request. - Add
EndLedger
inGetEventsRequest
. 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,000
ledgers 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"
getTransaction
getTransactions
getLedgerEntry
getLedgerEntries
getEvents
sendTransaction
simulateTransaction
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|after
all have aJson
suffix, andresults.xdr
is nowresults.returnValueJson
- Improve performance of
getVersionInfo
andgetNetwork
(#198).
- Fix parsing of the
--log-format
parameter (#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
getTransactions
endpoint 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_SUBMISSION
by default (#179).
- The Captive Core path is supplied correctly for TOML generation (#178).
- A new
getVersionInfo
RPC 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.