Repository navigation
chainparams: add assumeutxo snapshot at height 976000 - #444
chrisguida wants to merge 1 commit into
Conversation
Adds a mainnet assumeutxo entry for height 976000 so pruned nodes can start from a recent snapshot. The previous newest entry (910000) predates the BLAKE2b proof-of-work activation at 961640, which left about 65,000 blocks to validate after loading it. Snapshot produced with `dumptxoutset rollback=976000` on a fully synced, unpruned v29.4.2.knots20260508 node: base_height 976000 base_hash 000000000000000098441aee029573795681eb1602c75271e809b136e9217373 txoutset_hash dbd67717d3f108e4fbd8b4f9efc4057cac11a0ba7c23584b43cca42c9edb7118 nchaintx 1417215373 coins_written 167095701
There was a problem hiding this comment.
utACK
{
"coins_written": 167095701,
"base_hash": "000000000000000098441aee029573795681eb1602c75271e809b136e9217373",
"base_height": 976000,
"txoutset_hash": "dbd67717d3f108e4fbd8b4f9efc4057cac11a0ba7c23584b43cca42c9edb7118",
"nchaintx": 1417215373
}
bfd2460a55ae1d2e94b9957ccd512ae027855feed1dbef996cfed0abebe5d123 check-976000.dat
|
|
For anyone who needs this entry before it is in a tag: there is a Guix build of 29.4.2 plus exactly this commit at https://github.com/chrisguida/bitcoin/releases/tag/v29.4.2.knots20260508-assumeutxo976000, reproduced on two machines, with my builder attestation on https://github.com/chrisguida/guix.sigs/tree/assumeutxo976000 and the reproduce-and-attest steps at https://claude.ai/code/artifact/5c9fbfa7-7359-435e-a701-6b2d596ed4ef. Nothing else differs from 29.4.2; the diff is this PR. More builder signatures are welcome on that branch. One note for the next tag: nodes are being started from 976,000 now (AlphaPool's installer has defaulted to that build since Oct 9), before any tag contains the entry. A node started from a snapshot refuses to start on a binary that lacks that snapshot's entry until its background validation has finished and it has restarted once ( |
|
Verified the 976000 entry independently. Node: official signed v29.4.2.knots20260508 (unpatched), Ubuntu 24.04, 2 vCPU / 4 GB, prune=4000. It started from that release's 910000 assumeutxo snapshot and validated every block from 910,001 to the tip itself (its background validation below 910,000 is still running). All five values match this PR, and the dump is byte-identical to the published utxo-976000.dat. Separately, we reproduced the Guix build of 29.4.2 + this commit (x86_64-linux-gnu) byte for byte: the archive's sha256 5c26890d72daa499fe22b905de5cfb0a78e2445aedbde0726278f57672106a9d matches the release. |
|
An assembler-ready copy of this branch is at chrisguida/assumeutxo-976000-29+knots (same commit rebased onto the k385 merge, as #425 is); this branch stays as is for review. |
|
Recomputed the snapshot at height 976000 on a stock v29.4.2.knots20260508 node using Signed attestation, checked in the following page: https://assumeutxo.com/snapshots/xbt-976000.html |
Adds an assumeutxo entry for height 976000 so pruned nodes can start from a
recent snapshot instead of validating from genesis. The previous newest entry
(910000) predates the BLAKE2b proof-of-work activation at 961640, which left
about 65,000 blocks to validate after loading it. 976000 is below the long
coinbase maturity flag day (979920, #429), so the snapshot is identical under
29.4.2 and the next release.
Snapshot produced with
dumptxoutset rollback=976000on a fully synced,unpruned v29.4.2.knots20260508 node on 2026-10-07 (123 s):
File:
utxo-976000.dat, 9,517,597,408 bytes,SHA256
bfd2460a55ae1d2e94b9957ccd512ae027855feed1dbef996cfed0abebe5d123,served at https://mb-beast.tail4a715.ts.net:8443/datum-node-image/utxo-976000.dat
with
SHA256SUMSandutxo-976000.dat.torrentnext to it. Torrent (the HTTPS URL above isits web seed, so it works even with no other peers):
How to verify (reviewers)
You need a synced Knots 29.4.x node that still has the blocks from 976000 to
its tip (any unpruned node; a pruned one only if it has not pruned past 976000).
Recompute the UTXO set hash at height 976000:
Two ways to run it:
a) Stock 29.4.2: network activity pauses and the node rolls back temporarily
(123 s for 59 blocks on an NVMe disk; slower the further the tip has moved
away from 976000, so do it soon).
b) Node stays online: build the companion backport of Rollback for dumptxoutset without invalidating blocks bitcoin/bitcoin#33477
(rpc: dumptxoutset rollback without invalidating blocks (backport of bitcoin/bitcoin#33477) #443) first. A branch with this entry on top of it is at
then run the same command; add
in_memory=trueon a machine with morethan 12 GB of RAM. An assumeutxo node cannot roll back to its own base
height until background validation has passed it, so use a full node.
Compare the result with this entry. Expected:
txoutset_hashishash_serialized,nchaintxism_chain_tx_count. Post anACK with the values you got.
Optional: check the published file.
sha256sum utxo-976000.datmust print theSHA256 above. Loading it with
loadtxoutseton a node built from this branchalso verifies the serialized hash against the entry and refuses a mismatch.
The entry is used by the datum-node-image project (a VPS image with a pruned
Knots node and a DATUM gateway); until it is released the image builds Knots
from source with this patch.