Skip to Content
Historical replay

Historical replay

Take any past transaction from the network you fork. 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 replays on its own in-process engine instead: it pins every input object at its pre-transaction version, forks them from the fullnode, and executes on the real Move VM. The fallback reports the sender, status, a full gas breakdown, balance change and event counts, and how many objects were pinned. It skips only the Move trace. So replay never hard-depends on an external binary, and mainnet protocol bumps don’t break it.

When the fullnode has pruned a pinned version, the fallback says so with a warning and forks that object at its latest version instead of failing.

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