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

Performance optimizations for Cardano transactions signature/proof #1699

Closed
17 tasks done
Tracked by #1457
jpraynaud opened this issue May 17, 2024 · 0 comments
Closed
17 tasks done
Tracked by #1457

Performance optimizations for Cardano transactions signature/proof #1699

jpraynaud opened this issue May 17, 2024 · 0 comments
Labels
epic ⚔️ Epic that gathers related tasks

Comments

@jpraynaud
Copy link
Member

jpraynaud commented May 17, 2024

Why

Now that we are signing transactions on a Mithril test network for the Cardano mainnet, we want to identify bottlenecks and prepare optimizations for the signature/proving of the Cardano transactions. This process will be iterative.

What

Here are the areas that we need to optimize:

  • Minimum impact of the activation of the new type of data signed for Cardano transactions on the release-mainnet network:
    • Avoid blocking the production of certificates for current signed entity types
    • Implement warm-up strategy for new comers in the network that takes advantage of the 2 first epochs downtime
    • Proofs generation does not impact the production of certificates for the network
  • Minimum footprint on the signer infrastructure (disk space, memory, CPU requirements):
    • Assess the maximum disk space required by the Cardano transactions store on the signer once pruning is activated (in GB)
    • Make sure this limit is not exceeded during warm-up phase
    • Assess the memory and CPU consumption of the signer during import/signature of the transactions (maybe offload memstores of Merkle trees on disk for the signature on the signer? this would avoid too much memory consumption)
    • Update the current Mithril signer footprint documentation
  • Maximum throughput of proofs served by the aggregator REST API:
    • Assess/implement optimizations needed to enhance the proof serving throughput (step by step, iterative, most efficient optimizations at first)
    • Model the expected traffic coming from a third party provider serving transactions by address for e.g. a light wallet:
      • Computation based on their average/peak traffic
      • Model proofs generation throughput (and number of transactions to prove per proof)
      • Model certificate download throughput
    • Caching strategy for transaction proofs and certificate on the client for optimal pressure on the aggregator
    • Determine maximum number of transactions allowed when creating a proof
    • Horizontal scaling strategy in worst case scenario where maximum throughput of an aggregator is not enough (e.g. aggregator 'slaves' for serving proofs)

How

Minimum impact when activated on release-mainnet:

  • Impact analysis
  • Design throttle proofs generation strategy
  • Design warm-up strategy

Maximum proofs generation throughput

Minimum SPO infrastructure footprint

Infrastructure optimizations

Later

  • Further Merkle tree optimizations: multiple storage (Sync, non Sync, low memory)?
  • Design and implement client caching strategy
@jpraynaud jpraynaud self-assigned this May 17, 2024
@jpraynaud jpraynaud added epic ⚔️ Epic that gathers related tasks performances 🥇 Performances labels May 17, 2024
@jpraynaud jpraynaud removed their assignment May 17, 2024
@jpraynaud jpraynaud removed the performances 🥇 Performances label Jun 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
epic ⚔️ Epic that gathers related tasks
Projects
None yet
Development

No branches or pull requests

1 participant