tron-goblin-node v1.2.0
tron-goblin-node v1.2.0
Headline: Chronos — deterministic time-travel fork simulation (anvil-fork /
Tenderly for TRON, byte-exact). Off by default ([sim] enabled = true; requires
the [index.archive] historical-state archive).
- Chronos fork simulation (new crate
tron-sim): fork the chain at any
archived block (or head) into a mutable, never-committed overlay seeded from
real historical state, and run arbitrary MUTATING transactions and bundles
with state / code / balance / block-environment overrides. Returns per-call
status, return data, energy (incl. the dynamic-energy penalty), logs, the
internal-transaction tree, the opcode trace, and decoded state diffs — all
against the same TVM the node applies blocks with, so a replay reproduces the
on-chain result byte-for-byte. - RPC surface:
tron_simulateBundle(native, full-power); namedtron_fork*
sessions with anvil-style snapshot / revert (forkCreate / forkCall /
forkSnapshot / forkRevert / forkStateDiff / forkList / forkDelete);
POST /v1/sim/bundle(REST).eth_simulateV1gains a historical base, full
stateOverrides(code/state/stateDiff), and creation calls when Chronos is on. - selfCheck: re-runs block N+1's index-0 transaction at a fork of N and compares
the contractRet class to the recorded receipt — a parity indicator, exported
alongside Chronos metrics counters. - Determinism: same request + same fork state yields a byte-identical response;
synthetic tx ids and created addresses are stable across replays. Nothing
Chronos does ever touches disk. - Docs: a full Chronos guide (docs/chronos.md) oriented for developers coming
from Ethereum tooling (anvil / Tenderly / geth) — translation table, TRON
gotchas, and copy-pasteable recipes; plus a README table of contents.
Chronos is additive and off by default: a bundled call runs on the same
byte-exact TVM as eth_simulateV1, so it adds zero consensus risk. The
consensus / execution path is unchanged from v1.1.5.