Pure Go client for the Cardano Mithril certified-snapshot protocol
- artifact.Download: resumable HTTP with optional SHA256 check + progress cb - artifact.ExtractZstdTar: streamed zstd+tar with tar-slip defense - aggregator client matches real API shape (digests/immutables/ancillary blocks with URIHolder polymorphism for templated immutable URIs) - cmd: show + download subcommands wired up - end-to-end verified against preprod: digests archive pulls cleanly, yields 16836-entry SHA manifest ready for verification sprint deps: github.com/klauspost/compress (pure-go zstd) |
||
|---|---|---|
| cmd/mithril-go | ||
| internal | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
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
listcommand hits the aggregator and enumerates cardano-database snapshotsdownload— range-chunk parallel HTTP, SHA-256 integrity, resumeextract— 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