Dolos Independent Snapshots COalition

DISCo

Trust TEE Me Bro

01. SECURE_PIPELINE

Cardano Node
Raw Ledger Data
Dolos Indexing
Inside TEE Enclave
Signed snapshot
TEE attested

02. USAGE

STEP 01Installdisco-cli
curl -O https://raw.githubusercontent.com/mmahut/disco-land/master/disco-cli
chmod +x disco-cli
STEP 02Downloaddisco-cli
$ ./disco-cli download preview

  downloading latest.json... ok (0 KB)

  latest epoch: 1329

Downloading preview epoch 1329 → disco-preview/

  downloading tarball... ok (381991 KB)
  downloading sha256... ok (0 KB)
  downloading content.sha256... ok (0 KB)
  downloading attestation... ok (1 KB)
  downloading manifest... ok (0 KB)

download complete. to verify:

  disco-cli verify disco-preview/cardano-preview-dolos-1.2.0-epoch-1329.tar.gz.manifest.json
STEP 03Verifydisco-cli
$ ./disco-cli verify disco-preview/cardano-preview-dolos-1.2.0-epoch-1329.tar.gz.manifest.json

disco snapshot verifier

  manifest : disco-preview/cardano-preview-dolos-1.2.0-epoch-1329.tar.gz.manifest.json
  network  : preview
  epoch    : 1329
  peer     : preview-node.play.dev.cardano.org:3001

1. Content hash (recomputed from tarball):

  ✓  content_sha256 matches manifest
       expected: 9132c4e2646fde51fb035e67c6a16e865061b7c6ad05f0a4490017f2c9d32171
       got:      9132c4e2646fde51fb035e67c6a16e865061b7c6ad05f0a4490017f2c9d32171

  ✓  chain_sha256  f9481093acc928c36cde97b8227ac2264ddd4adffd9e82f0e4146c067dc749ce
  ✓  index_sha256  8ed8f2f8e91c0de2571d2de100addd0e04c515def6839e990613e50599420eb1

2. TEE attestation (AMD SEV-SNP):

  ✓  REPORT_DATA[:32] == SHA256(content_sha256)
       REPORT_DATA[:32]:        b63045f7dd77a3bdc826e472baaf4b979dd078054349485d7685e2bb8da6bd81
       SHA256(content_sha256): b63045f7dd77a3bdc826e472baaf4b979dd078054349485d7685e2bb8da6bd81

  ✓  REPORT_DATA[32:64] == 0x00*32

   AMD VCEK certificate chain:

  ✓  AMD Milan VCEK chain verified

   MEASUREMENT : 6d6c354511d6f7c6d7504668903dc5bdc066a048b651840d8d03fb85299ebfa142fccf1d1b0baca496841bdf243619d4

3. Chain tip (cross-check recommended):

   slot   : 172836
   height : 8640
   hash   : fb9af565b4eb81709e1bea458105fdcb10eeb25af8a810f39f4fdfc1fd0d2383

   Compare against an independent Cardano explorer for epoch 1329.

PASS — all checks passed.

03. CURRENT_SNAPSHOTS

04. ACTIVE_OPERATORS

IOG
TxPipe

05. FREQUENTLY_ASKED

How is the snapshot attested?

Each snapshot is produced inside an Azure Confidential Container running on AMD SEV-SNP hardware. After the sync completes, a hardware attestation report is issued with REPORT_DATA[0:32] = SHA256(content_sha256) — binding the hardware proof directly to the snapshot content. The CCE policy is locked to the exact container image layer digests, so the report also proves which specific code ran.

How do I verify a snapshot?

Run python3 verify.py *.manifest.json. It does three things: recomputes content_sha256 independently from the tarball, checks that the AMD SEV-SNP hardware report's REPORT_DATA matches it, and verifies the full AMD VCEK certificate chain (per-chip key → ASK → ARK root CA) against AMD's key distribution service. A PASS means real AMD silicon certified this exact content was produced by this exact code.

Is the content hash reproducible?

Yes. content_sha256 is deterministic: it is SHA256(chain_sha256 + index_sha256), computed from the dolos archive store only (block segments and B-tree index). Two operators syncing the same network and epoch with the same dolos version will arrive at the same hash. This means you can verify a snapshot by running your own independent sync and comparing hashes — you do not have to trust the operator.

What does a snapshot contain?

A gzip tarball of the dolos archive store at the end of the requested epoch: raw Cardano block segments and the chain index. It bootstraps a fresh dolos node without syncing from genesis. The manifest records the chain tip (slot, height, block hash) for cross-checking against any independent block explorer.

Where are snapshots published?

Snapshots are available on Cloudflare R2, organised by network: preview/, preprod/, mainnet/. Each directory contains the snapshot tarball, checksums, manifest, and attestation file. A latest.json file in each directory points to the most recent snapshot for that network.

What infrastructure does this require to run?

An Azure subscription with access to the Confidential ACI SKU (AMD SEV-SNP). Everything else is automated by the provided Ansible playbook: storage, CCE policy generation, container launch, artifact retrieval, and R2 upload. The container image is fully open-source.