# CLI Interface
`casper-archive get </ipfs/<hash>/> --validate <trusted-block-hash> --bootstrap-peer <bootstrap-peer>`
`casper-archive make-archive <storage-db-file> <global-state-db-file> -o <output-directory>`
You get the trusted block hash from cspr.live or from a validator such as Joe
The `</ipfs/<hash>/>` is a `MANIFEST.csv` file that contains hashes of other ipfs files of either monthly or daily archives. The archives are:
- Zstd compressed bytesrepr dump of storage as blocks + deploys
- highest block to genesis, where the highest block has the trusted-block hash
- Zstd compressed bytesrepr dump of finality signatures
- Zstd compressed bytesrepr snapshot of global state under a particular root hash
- Zstd compressed bytesrepr dump of global state _diffs_ under a series of root hashes
Check while streaming:
- Every block is present starting with the trusted-block-hash
- Every block body is present
- Every deploy / transfer is present
- Check sufficient finality signatures
- Snapshot is valid
- Global state diffs
# MANIFEST.csv Layout
The `MANIFEST.csv` layout is as follows
```csvpreview
type, start time, end time, highest block height, lowest block height, filename, ipfs hash
```
YYYYMMDDHHSSTMM_TYPE_HIGHEST_LOWEST.archive.zstd
end time
The possible values for _type_ are `blocks`, `finality signatures`, `global state snapshot`, and `global state diff`.
The _start time_ and _end time_ entries are u64 milliseconds since epoch, which are exactly the timestamp of the blocks stored in those entries
Manifests obey the following rules:
- The first entry must be a `storage`
- The `global state snapshot` must be the first entry
- Its _start time_ must be the same as its _end time_
- Its _highest block hash_ must be the same as its _lowest block hash_
- The _start time_ and _highest block hash_ should agree with the first entry
- No other entry can be a `global state snapshot`
- The third entry should be a `global state diff`, with the same times and block hashes as the first entry
- All subsequent entries come in `storage`/`global state diff` pairs with the same times and block hashes