Pure Go client for the Cardano Mithril certified-snapshot protocol
- 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 |
||
|---|---|---|
| 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