Pure Go client for the Cardano Mithril certified-snapshot protocol
Find a file
Kayos f897e80c95 certificate chain walker + progress bar fix
- aggregator.CertChain: walks previous_hash from head until genesis_signature
- cmd: 'cert' subcommand, -chain flag for full walk, 'head' shortcut resolves
  latest snapshot's certificate_hash
- ProgressFn now signals both bytes-read and total-from-Content-Length so
  percent is computed against the actual transfer size, not the uncompressed
  target
- verified against preprod: 90-cert chain head→genesis, Ed25519 genesis cert
  shape (64-byte sig over 32-byte signed_message, protocol_message carries
  next_aggregate_verification_key for BLS), STM-signed non-genesis certs

pipeline is now verification-sprint ready
2026-04-23 15:20:32 -07:00
cmd/mithril-go certificate chain walker + progress bar fix 2026-04-23 15:20:32 -07:00
internal certificate chain walker + progress bar fix 2026-04-23 15:20:32 -07:00
.gitignore initial scaffold 2026-04-23 15:12:39 -07:00
go.mod download + extract pipeline 2026-04-23 15:16:48 -07:00
go.sum download + extract pipeline 2026-04-23 15:16:48 -07:00
README.md initial scaffold 2026-04-23 15:12:39 -07:00

mithril-go

Pure-Go client for the Cardano Mithril protocol.

Mithril is Cardano's stake-based certified-snapshot system — it lets a new node bootstrap the chain from a cryptographically-verified snapshot instead of replaying every block from genesis.

The official mithril-client is Rust. This project is a pure-Go reimplementation that produces a single static binary with no runtime dependencies — useful for:

  • Embedding a Mithril bootstrap into Go-based Cardano tooling (alongside gouroboros, dingo, and friends)
  • Running on constrained ARM/embedded targets where shipping the Rust binary + its deps is overkill
  • Operators who prefer a single go install-able helper

Status

Early development — not usable yet. Current state:

  • Module scaffold, network configs, aggregator REST client
  • list command hits the aggregator and enumerates cardano-database snapshots
  • download — range-chunk parallel HTTP, SHA-256 integrity, resume
  • extract — streamed zstd + tar decompression
  • Genesis Ed25519 verification (per-network bootstrap key)
  • STM BLS12-381 aggregate-signature verification (the hard part)
  • Incremental / ancillary artifact support

Usage (eventual)

mithril-go info     -network mainnet
mithril-go list     -network mainnet
mithril-go download -network mainnet -out ./db latest
mithril-go verify   -network mainnet ./db

License

TBD