being populated

Public segment archive

This host is the default segment archive every UMNode downloads from. A node attaches whole sealed block segments from it instead of fetching their blocks from peers one by one, and verifies each segment against the chain it already holds before adopting it.

Status

The archive is not populated yet. Until a network's root carries a manifest.json, a node logs Segment archive has nothing for this chain yet once and fills from peers as usual; a snap sync says so and builds its state from genesis. Nothing stalls: the archive only ever saves work.

Per-network roots

A node derives its archive root from the chain it runs: https://umn.zhurko.de/<network id>-<first 4 bytes of the genesis hash>. One host serves every network, and nothing has to be configured per chain.

NetworkRootStatus
Ethereum mainnet/1-d4e56740/soon
Sepolia/11155111-25a5cc10/soon
Hoodi/560048-bbe31286/soon
BNB Smart Chain mainnet/56-0d21840a/soon
BNB Smart Chain testnet (Chapel)/97-6d3c66c5/soon

Ephemery resets to a fresh genesis every 28 days and gets a new root each iteration, so it is not listed. The exact paths may still change while the archive is being set up.

Layout

An archive root holds one chain. Only data files are published, never index files, which a node rebuilds from the data:

<root>/
  manifest.json                 table of contents: every file with size, SHA-256 and layout
  blocks/0000000123.seg         sealed block segments
  changesets/0000000123.cseg    sealed state-history segments
  receipts/0000000123.cseg      sealed receipts-stream segments
  state/<head>.tar.zst          state snapshots (the public archive publishes none)

The manifest records the layout each kind of segment was sealed in: segment size, block grouping and codec. A node whose store settings differ re-packs what it downloads into its own layout on the way in, so any node can use any archive.

What is verified

An attached segment is as trustworthy as one fetched block by block from peers; the archive is trusted for nothing. A downloaded file must match the manifest's size and SHA-256 and scan as an intact sealed file. Then every block must decode, carry its own number, link to the block before it and match its header's roots, and the segment as a whole must link to the chain the store already holds. A segment that fails is discarded and left to the peers.

Using it, or another archive

./bin/umnode                                                  # the public archive, snap sync
./bin/umnode --archive-source https://mirror.example.org/eth/mainnet
./bin/umnode --archive-source s3://my-bucket/umnode/mainnet
./bin/umnode --archive-source file:///mnt/archive/mainnet
./bin/umnode --syncmode full --archive-source none            # peers only, state from genesis

State snapshots come from an archive you trust, never from the public one: --syncmode snap restores the newest snapshot of the archive you name and executes on from its head. With --backup a node publishes its own sealed segments and snapshots to S3, Cloudflare R2 or a directory, and pruning waits for the backup. The segment archive page of the documentation has every detail.