Skip to content

tron-goblin-node v1.2.0

Choose a tag to compare

@Gingerbreadfork Gingerbreadfork released this 26 Jul 16:31
· 7 commits to master since this release

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); named tron_fork*
    sessions with anvil-style snapshot / revert (forkCreate / forkCall /
    forkSnapshot / forkRevert / forkStateDiff / forkList / forkDelete);
    POST /v1/sim/bundle (REST). eth_simulateV1 gains 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.