Skip to content

XChain Platform v0.12.1

Choose a tag to compare

@jdogresorg jdogresorg released this 31 Aug 23:14
· 334 commits to master since this release
v0.12.1
0f0cf5d

XChain Platform v0.12.1.

A patch train. src/release-manifest.json pins xchain-indexer at v0.12.1 and the other eleven components at the v0.12.0 tags they already carry, unchanged. A component's version is the platform version at which it last changed, so a gap means unchanged that release.

Verifying this release

gpg --verify SHA256SUMS.asc SHA256SUMS
shasum -a 256 -c SHA256SUMS

The signing key is published at xchain-documentation/operations/release-signing.md and in tools/release/ in every train repo. Any other key is not an official release.

Installing this exact set

xchain-node install v0.12.1 <service> <coin> <network>

What is in this train

  • A reward whose anchor was attested before a version restart is judged on the anchor bytes as written. Proof admission had dropped the legacy wire versions, so such a reward could never be proven: it read as an eternal unknown and the chain halted, correctly refusing to commit on absent evidence but with no way forward, because nothing re-admits those bytes once the fleet is uniform. Admission now carries the legacy versions and binds each to the reward family it was renumbered from.
  • This is also the replay fix. The previous build cannot replay a chain carrying such a reward from genesis, because it halts at the first one before reaching the tip.
  • Forgeries on legacy bytes stay excluded: at or above the anchor activation height a legacy byte parses deterministically invalid, and every node drops it as evidence identically.

This ships ungated. The previous build does not derive different state here, it derives none: the halt rolls back the whole block transaction, so a node on the older code cannot commit a conflicting verdict, only stop.

Full detail is in xchain-indexer's CHANGELOG at its v0.12.1 tag.