Skip to content

Implement Incremental Cardano DB in client library #2214

Closed
@jpraynaud

Description

@jpraynaud

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 and compute_merkle_proof:
      • ImmutableFileRange is an enum with the variants (Full, From(ImmutableFileNumber), Range(ImmutableFileNumber,ImmutableFileNumber), UpTo(ImmutableFileNumber))
      • DownloadUnpackOptions in a struct with fields include_ancillary: bool and allow_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 is true (and immutable file number snapshotted is in the ImmutableFileRange?)
          • With overriding support if enabled
          • In the root of the download folder (as ledger, volatile and immutable are already in the archive)
          • Implement feedback events
        • Write the protocolMagicId file if the immutable file number 0 is in the range restored (done in CLI)

Later

  • How to verify an existing database (create Proof without digest file)?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions