Skip to content

upstream(core): Track and store unchanged loaded runtime objects - #12642

Closed
jkrvivian wants to merge 3 commits into
developfrom
core-protocol/upstream-1.57.3/89b03
Closed

upstream(core): Track and store unchanged loaded runtime objects#12642
jkrvivian wants to merge 3 commits into
developfrom
core-protocol/upstream-1.57.3/89b03

Conversation

@jkrvivian

@jkrvivian jkrvivian commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Description of change

This patch implements tracking of unchanged loaded runtime objects and
stores this information in the perpetual store. This is done so that we
can package up a checkpoint that includes full information necessary to
either perform any analysis based on the objects read or written by a
transaction or to efficiently replay a transaction without needing to
fetch any additional objects (except packages).

The tracking is done by wrapping the BackingStore that is provided to
the VM with one that tracks and saves all objects that were loaded
during execution. This is more accurate than the existing
"loaded_runtime_objects" structure returned from the execution layer
since it also will capture things like the coin deny list.

In addition to this a new Checkpoint structure is introduced that is
intended to eventually replace the existing CheckpointData structure.
This new type is intended to only be used in-memory (if you need a
persisted structure the proto version of the message should instead be
used) and it explicitly does not implement Serialize/Deserialize so that
it cannot be accidentally be persisted.

Links to any relevant issues

Fixes #12459

How the change has been tested

  • Basic tests (linting, compilation, formatting, unit/integration tests)
  • Patch-specific tests (correctness, functionality coverage)
  • I have added tests that prove my fix is effective or that my feature works
  • I have checked that new and existing unit tests pass locally with my changes

Not ported: client-facing gRPC exposure

  • Upstream also serves the tracked data over gRPC: a new effects.unchanged_loaded_runtime_objects proto field in GetTransaction responses, and checkpoint responses whose objects are built from the new complete object set.
  • This requires proto additions in iota-grpc-types and ledger service changes (upstream got the field via a sui-rust-sdk bump), so it is deferred to a follow-up. Until then the data is tracked and stored, but not served to clients.
  • Upstream's e2e test suite for the feature (unchanged_loaded_runtime_objects.rs) asserts those gRPC fields, so it is deferred together with the exposure work.

@jkrvivian jkrvivian added the node Issues related to the Core Node team label Aug 12, 2026
@jkrvivian jkrvivian self-assigned this Aug 12, 2026
@jkrvivian jkrvivian added the node Issues related to the Core Node team label Aug 12, 2026
@jkrvivian
jkrvivian force-pushed the core-protocol/upstream-1.57.3/89b03 branch 4 times, most recently from 54c59f2 to 59b9da6 Compare August 13, 2026 10:21
@jkrvivian
jkrvivian marked this pull request as ready for review August 13, 2026 10:21
@jkrvivian
jkrvivian requested review from a team as code owners August 13, 2026 10:21
@jkrvivian
jkrvivian force-pushed the core-protocol/upstream-1.57.3/89b03 branch from 59b9da6 to b7194c1 Compare August 13, 2026 12:00
Comment thread crates/iota-core/src/checkpoints/checkpoint_executor/mod.rs Outdated
Comment thread crates/iota-types/src/storage/read_store.rs
Comment thread crates/iota-types/src/full_checkpoint_content.rs Outdated
@jkrvivian
jkrvivian force-pushed the core-protocol/upstream-1.57.3/89b03 branch from b7194c1 to b43a7db Compare August 14, 2026 13:47
@jkrvivian
jkrvivian requested a review from bingyanglin August 14, 2026 13:50
@jkrvivian
jkrvivian marked this pull request as draft August 18, 2026 05:57
@jkrvivian
jkrvivian force-pushed the core-protocol/upstream-1.57.3/89b03 branch from b43a7db to 443709a Compare August 18, 2026 09:00
@jkrvivian

Copy link
Copy Markdown
Contributor Author

Close bc we don't need to port the full feature to fix this issue. It'll be fixed in https://github.com/iotaledger/iota/pull/12698/changes

@jkrvivian jkrvivian closed this Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core-protocol node Issues related to the Core Node team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[grpc]: simulate_transactions omits runtime-loaded dynamic fields from input_objects.

3 participants