Skip to Content
Historical replay

Historical replay

Take any past mainnet transaction. Replay it locally. Then inspect it and step through it.

Replay a transaction

galene replay <tx-digest>

This runs a replay with tracing. It writes the artifacts into .galene/replays/<digest>/, then parses them.

You get:

  • The objects touched. Every object and package the transaction read.
  • The effects. The full before-and-after state: created, mutated, and deleted objects.
  • The gas report. A cost breakdown.
  • The Move trace. A compressed, per-command trace. It is read line by line, never held in memory whole.

Galene prefers the sui CLI when it is installed, for a full Move-VM trace. When the binary is missing, or a protocol version behind mainnet, it falls back to a fullnode plus its own engine. So replay never hard-depends on an external binary, and mainnet protocol bumps don’t break it.

State comes from galene.toml’s fork.network by default. Use --network <env> for another Sui client env alias.

Graph a transaction

galene graph <tx-digest>

This replays the transaction and prints its object graph. You see the input objects, what each command reads, and what the transaction created, mutated, or deleted.

The same data drives the Object Graph view in Studio.

Why it matters

Objects are version-addressable. So a replay is reproducible. And you can inspect it down to single objects and single commands.

That is what makes a mainnet exploit into a repeatable local test. Replay at the pre-exploit state. Drop in a patched package with galene_overridePackage. Run it again.

Last updated on