Skip to content

XChain Platform v0.20.0

Choose a tag to compare

@jdogresorg jdogresorg released this 19 Sep 00:52
· 50 commits to master since this release
v0.20.0
280223e

XChain Platform v0.20.0.

This thirteen-component train activates the time-keyed mirror barrier family on testnet.
Hub rows now carry per-chain admission heights, indexers bind live and replayed rows to
those heights, and the hub mirror schema moves to v7. The producer and consumer flag days
are staged so writers start publishing admission metadata before readers require it, with
the anchor-attestation completeness barrier arming at the consumer boundary. Mainnet
remains unarmed, and token-bridge ISSUE and policy inheritance remain behind their
sentinels for a later train. The signed artifact set and SHA256SUMS.asc are attached.

Activation

The barrier family is armed on testnet only. Mainnet stays at the sentinel:

Rule Mainnet Testnet Regtest
Mirror admission producer (MIRROR_ADMISSION_ACTIVATION) unarmed, every coin BTC 153222, LTC 4891504, DOGE 67911796 controlled by the explicit venue setting
Mirror admission consumer (MIRROR_ADMISSION_CONSUMER_ACTIVATION) unarmed, every coin BTC 153266, LTC 4891766, DOGE 67912575 controlled by the explicit venue setting
Anchor-attestation barrier (ANCHOR_ATTEST_BARRIER_ACTIVATION) unarmed BTC 153266 controlled by the explicit venue setting
Token-bridge ISSUE (TOKEN_BRIDGE_ACTIVATION) unarmed unarmed genesis
Token policy inheritance (TOKEN_POLICY_INHERITANCE_ACTIVATION) unarmed unarmed genesis

The tagged release manifest carries the v0.20.0 platform-train boundary. A node without
this rule set halts at that boundary instead of processing a block under older rules.

The time-keyed mirror barriers

Mirrored consensus rows now carry the block height at which each chain admits them. That
height replaces wall-clock arrival as the ordering fact above the flag day, so a
future-dated block cannot hold the indexer behind an unbounded time barrier. The hub emits
the fields on live messages and bootstrap pages, and the indexer enforces the same rule in
live processing and replay.

The producer height comes first on Bitcoin, Litecoin and Dogecoin. The later consumer
height makes the fields mandatory only after publishers have begun supplying them. The
anchor-attestation barrier arms at the Bitcoin consumer height and uses the same bounded
view of admitted rows. Mainnet remains unchanged.

Schema and registry

The hub mirror schema moves from 6 to 7. Seven mirror tables gain admission-height
columns, including the lifecycle and attestation data used by the barrier checks. Hub
bootstrap pages carry the same columns as the live stream, bootstrap traffic has its own
per-IP rate-limit bucket, and boot-marker scans stop at the catch-up horizon. Roll the hub
and apply the admission-height migration before rolling mirror readers.

Activation modules, registry rows, fingerprints and identity pins now use one consolidated
layout across the indexer, hub, sync, explorer, SDK and documentation. The carrier pin
tool can move a changed carrier and record its old and new path and hash in one operation.

Replay and bridge safety

The replay witness rejects empty corpora and runs the production block passes through the
indexer's database wrapper. Its equivalence comparison follows natural keys and reachable
state-tree roots, allowing the mirror barrier to be checked against the state that a live
indexer actually commits. Watermark reads also verify that a table exists before querying
it.

A BTC-sourced bridge transfer cannot be anchored below the block that mined its lock.
Explorer token and XBRIDGE reads adapt to older replica schemas, so a mixed-version read
tier can be rolled without losing those detail pages.

Also in this train

  • The end-to-end suite covers the mirror and anchor barriers in live, replay, flag-day,
    parity and second-chain cases, and adds regtest rails for token bridge and policy
    inheritance while those production gates remain dark.
  • The node passes mirror activation and confirmation overrides to the services that need
    them, supplies cross-chain indexer URLs for bridge proofs, accepts the current migration
    CLI layout, resolves restored signing keys from their relocated configuration path, and
    makes sibling coverage checks follow the repository roster.
  • Nightly Litecoin and Dogecoin jobs provision validator configuration, API access,
    database headroom and a Bitcoin gas rail.
  • The SDK documents and types its API server exports, and vendors the barrier registry
    rows in the consolidated layout.
  • Decoder migration commands reject unknown arguments, regtest tracker sync no longer
    trusts verificationprogress as a verdict, and reachability metadata in the encoder and
    regtest miner no longer advertises nonexistent dynamic edges.
  • VM mutation tiers use repository-relative paths, and the VM entry point drops an unused
    module load.

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 each component repository that ships release tooling. Any other key is not
an official release.

Installing this exact set

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

What is in this train

Component Version
xchain-node 0.20.0
xchain-hub 0.20.0
xchain-indexer 0.20.0
xchain-sync 0.20.0
xchain-explorer 0.20.0
xchain-decoder 0.20.0
xchain-encoder 0.20.0
xchain-utxo-tracker 0.20.0
xchain-sdk 0.20.0
xchain-e2e-test 0.20.0
xchain-vm 0.20.0
xchain-contracts 0.17.0 (unchanged)
xchain-regtest-miner 0.20.0
xchain-documentation 0.20.0