v2.1.45 — Phase A→D consensus-jail full stack + testnet bootstrap
The asymmetric-application bug class is now fixed at the protocol level. Phase A (data types) shipped earlier in #359; this release ships Phase B (helpers + fork gate), Phase C (dispatch verification), and Phase D (proposer emission + Pass-1/Pass-2 wiring + 4-validator determinism harness). Default behavior unchanged: JAIL_CONSENSUS_HEIGHT=u64::MAX on default builds means the entire dispatch path is unreachable until an operator opts in.
Also bootstraps testnet activation (genesis/testnet.toml + faucet HTTP service binary) plus an internal-references hygiene scrub.
Highlights
- Phase A→D consensus-jail (#365, #366, #368, #369, #371, #372) — full stack code-complete, dormant pre-fork. Activation = halt-all + simul-start with
JAIL_CONSENSUS_HEIGHT=<height>. genesis/testnet.toml(#374) — chain_id 7120, mirrors mainnet allocations + 100M-SRX faucet wallet.bin/sentrix-faucet/(#374) — standalone HTTP faucet service with per-IP rate limiting + per-recipient cooldown.- NFT TokenOp data types (#379) — SRC-721 + SRC-1155 wire format stable, fork-gated dormant.
- EVM CREATE nonce fix (#381) — skip native nonce bump for EVM txs (Option A).
- Network log + zero-peer broadcast fix (#380).
- Internal-refs scrub round 2 (#373, #378).
- CI — workflow uploads
sentrix-faucetrelease binary as a workflow artifact (#375).
See CHANGELOG.md for the full file-by-file changelog.