Releases: Gingerbreadfork/tron-goblin-node
Release list
tron-goblin-node v1.2.1
tron-goblin-node v1.2.1
Consensus fix: a transaction's id and signature-recovery preimage are now
derived from its ORIGINAL wire bytes.
java hashes a tx's raw_data exactly as it arrived on the wire
(TransactionCapsule.getRawHash), keeping unknown protobuf fields; our tx id
previously hashed a prost re-encode, which drops them. For mainnet txs that
append a stray field to raw_data (seen on some energy-rental
Delegate/UnDelegateResource txs) this produced a wrong tx id and a garbage
recovered signer, so the node falsely rejected — with PermissionDenied — a
transaction the network accepted, diverging state.
- The tx id and signature preimage now hash the raw_data wire span
(byte-identical to the previous re-encode for canonical txs), threaded from
the block bytes through the apply, pipeline, Block-STM, mempool, index,
RPC/gRPC, firehose and both reorg paths; blocks are stored verbatim. - A transaction whose owner account does not yet exist now synthesizes java's
default owner / active permission instead of being rejected (a separate
permission-parity gap).
No API or config changes. Workspace tests 3282 -> 3297.
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.
tron-goblin-node v1.1.5
Full Changelog: v1.1.4...v1.1.5
tron-goblin-node v1.1.4
Full Changelog: v1.1.3...v1.1.4
tron-goblin-node v1.1.3
Full Changelog: v1.1.2...v1.1.3
tron-goblin-node v1.1.2
Full Changelog: v1.1.1...v1.1.2
tron-goblin-node v1.1.1
Full Changelog: v1.1.0...v1.1.1
tron-goblin-node v1.1.0
Full Changelog: v1.0.0...v1.1.0
tron-goblin-node v1.0.0
What's Changed
- Byte-exact energy + fee parity with java-tron by @Gingerbreadfork in #2
- Added Broad Docs by @Gingerbreadfork in #3
- Energy parity: gate NEW_ACCT_CALL on value transfer + bill SSTORE 0->nonzero as RESET by @Gingerbreadfork in #4
- Divergence Fixes by @Gingerbreadfork in #5
- Fix Warnings by @Gingerbreadfork in #6
New Contributors
- @Gingerbreadfork made their first contribution in #2
Full Changelog: https://github.com/Gingerbreadfork/tron-goblin-node/commits/v1.0.0