XChain Platform v0.15.2
XChain Platform v0.15.2, a patch train on top of v0.15.1.
Three components move. The other nine keep the tags they shipped under, which is what release-manifest.json pins and what a pinned install resolves.
| Component | Version |
|---|---|
| xchain-node | 0.15.2 |
| xchain-hub | 0.15.2 |
| xchain-explorer | 0.15.2 |
| xchain-sync | 0.15.2 |
| xchain-sdk | 0.15.1 |
| xchain-indexer | 0.15.0 |
| xchain-decoder | 0.15.0 |
| xchain-encoder | 0.15.0 |
| xchain-utxo-tracker | 0.15.0 |
| xchain-vm | 0.15.0 |
| xchain-contracts | 0.15.0 |
| xchain-e2e-test | 0.15.0 |
| xchain-regtest-miner | 0.15.0 |
The hourly ATTEST batch publishes from every validator
The hub that publishes each hour's finalized attestation responses as one signed batch on Dogecoin sized its signer set at a BTC height it read only from the chain-tip row a Bitcoin indexer pushes to it. A validator with no indexer pushing to it held no anchor: it deferred every window and refused to co-sign any proposal, so a federation in which most validators share one Bitcoin indexer could never reach the batch quorum and no coverage head landed.
The attestation round already sees the BTC tip on every request poll. The batch publisher now anchors on the pushed chain tip where one exists and on that observed tip otherwise, a follower bounds a proposed anchor against whichever it holds, and the hub reports which source its last anchor came from. On the public testnet the first window after this change published from a validator that had never been able to lead, and the batch carrying the first live attestation responses under the mirror design followed two hours later.
The explorer's custom-content frame stops growing
The sandboxed custom-content frame on a token page reported a height that could never be below its own viewport, the page applied it plus a margin, and the two echoed each other for as long as the page stayed open. The report is now applied exactly, an echo of the height just applied is ignored, the frame has a ceiling and a per-load resize cap, and media-src is declared so external video and audio load on token pages and inside the frame.
A sync replica repairs a lookup hole it could not reach
The lookup-table sync asked the origin only for rows above the highest id already on the replica, so a row missing below that mark was never fetched again however often the table was re-paged, and the completeness sweep raw-counted an append-only log whose ids both sides assign independently, reporting a permanent delta on healthy replicas. A lookup table the sweep finds short is now re-paged from zero, and the log is left out of the comparison while every index table stays strict, because that strict count is what detects a real hole.
Verifying this release
Each tarball is git archive of that component's signed tag. SHA256SUMS.asc is a detached signature over SHA256SUMS by the platform release key 4361611A82F90B70. See Release Signing.