Closed
Description
Why
The client library should be able to list, get details and certify Incremental Cardano DB.
What
Implement the Incremental Cardano DB signed entity type in the Mithril client library.
How
- Implement a new client in
mithril-client
as unstable:-
list
-
get
-
download_unpack
andcompute_merkle_proof
:-
ImmutableFileRange
is an enum with the variants (Full
,From(ImmutableFileNumber)
,Range(ImmutableFileNumber,ImmutableFileNumber)
,UpTo(ImmutableFileNumber)
) -
DownloadUnpackOptions
in a struct with fieldsinclude_ancillary: bool
andallow_override: bool
- Verification is done with these steps:
- Download and unpack the immutable archives:
- Selection of file locations based on an order
- With fail-over mechanism
- Unpack in a
immutable
folder (with overriding support if enabled) - Implement feedback events
- Parallelize the download and unpack
- Implement Retry
- Download the digest file (with overriding support if enabled)
- Download the digest file
- Implement feedback events
- Create a Merkle proof
- Create a Merkle tree with all the digests in the file
- Compute the digests of the downloaded immutable files
- Verify that the computed digests exist in the Merkle tree
- Compute the Merkle proof
- Verify that the Merkle proof is valid
-
Verify that the Merkle proof root is signed in a valid certificate(done in CLI) - Download and unpack the ancillary file:
- If
include_ancillary
istrue
(and immutable file number snapshotted is in theImmutableFileRange
?) - With overriding support if enabled
- In the root of the download folder (as
ledger
,volatile
andimmutable
are already in the archive) - Implement feedback events
- If
-
Write the(done in CLI)protocolMagicId
file if the immutable file number 0 is in the range restored
- Download and unpack the immutable archives:
-
-
Later
- How to verify an existing database (create Proof without digest file)?