Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Incremental Cardano DB in client library #2214

Open
17 of 28 tasks
Tracked by #2047
jpraynaud opened this issue Jan 13, 2025 · 0 comments
Open
17 of 28 tasks
Tracked by #2047

Implement Incremental Cardano DB in client library #2214

jpraynaud opened this issue Jan 13, 2025 · 0 comments
Assignees
Labels
feature 🚀 New implemented feature

Comments

@jpraynaud
Copy link
Member

jpraynaud commented Jan 13, 2025

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(&self, immutable_file_range: ImmutableFileRange, download_unpack_options: DownloadUnpackOptions)
      • 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
      • How to implement feedbacks?
      • Verification is done with these steps:
        • Download and unpack the immutable archives:
          • Selection of file locations based on an order
          • With failover mechanism
          • Unpack in a immutable folder (with overriding support if enabled)
          • Parallelize the download and unpack?
        • Download the digest file (with overriding support if enabled)
        • 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 and its root is signed in a valid certificate
        • Write the protocolMagicId file if the immutable file number 0 is in the range restored
        • 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)
        • Clean directory (digest file, ...)
  • Write integration test
  • Adapt e2e test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 🚀 New implemented feature
Projects
None yet
Development

No branches or pull requests

1 participant