rpc-alt: suix_getLatestSuiSystemState #20990
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Implement
suix_getLatestSuiSystemState
from the governance API. This works by fetching the latest version of a particular object, using just theobj_versions
table.This would not work for arbitrary objects, because
obj_versions
is not updated when an object is deleted or wrapped. This means that when asking for the latest version of an object that is currently deleted or wrapped, we will see the version prior to the deletion/wrap. This should be fine for the system state wrapper and its inner object because these cannot be deleted or wrapped.There are two more simplifications that have been undertaken here, by ignoring consistency and watermarking. Although we do need to implement both of these for GraphQL, we can get away with not doing that yet (for JSONRPC) because our current JSONRPC implementation does neither of these things, and so therefore this should not be a regression.
Test plan
New E2E tests show inspecting the system state after operations that would tweak it (staking, changing the epoch, withdrawing stake):
Stack
Release notes
Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.
For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.