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

Improve network to connect up to 50 nodes #203

Closed
ch1bo opened this issue Feb 1, 2022 · 4 comments
Closed

Improve network to connect up to 50 nodes #203

ch1bo opened this issue Feb 1, 2022 · 4 comments
Labels
amber ⚠️ Medium complexity or partly unclear feature 💬 feature A feature on our roadmap
Milestone

Comments

@ch1bo
Copy link
Collaborator

ch1bo commented Feb 1, 2022

What & Why

Currently our network layer fails in connecting a large (> 10) number of nodes, at least in our local load tests. Within this feature we want to improve the hydra networking layer to be able to connect at least 50 nodes into a (still fully-connected) network to broadcast Hydra off-chain messages.

Requirements

  • The local hydra-cluster can spin up and connect 50 hydra-nodes.
  • The load test can be run with 50 nodes and does not time out.
@ch1bo ch1bo added 💬 feature A feature on our roadmap network labels Feb 1, 2022
@ch1bo ch1bo added this to the Testnet maturity milestone Feb 2, 2022
@ch1bo ch1bo moved this to In Progress in Hydra Head Roadmap Feb 2, 2022
@ch1bo ch1bo added amber ⚠️ Medium complexity or partly unclear feature and removed network labels Feb 3, 2022
@ghost
Copy link

ghost commented Feb 20, 2022

A few issues currently prevent us from scaling the hydra-cluster benchmark to that number of Hydra nodes:

  • Infrastructure: Running 50-100 nodes on a single machine does not really make sense and is not realistic. We need to be able to configure smaller VMs, each running a single Hydra node and associated Cardano node in BFT mode, and configure both networks. This should be done in an automated and configurable way in order to be able to run different scenarios easily, and requires some more configuration options for the CardanoNode and HydraNode executables
  • Blockchain configuration: Current mainchain parameters for tx size and execution units are known to be insufficient for such a large number of participants. We should work on optimising our scripts' size and execution cost but in the meantime we should make sure network parameters are set to high enough values
  • Script execution time: It seems that the actual execution time of the CollectCom transaction's scripts is too high, leading to exceedingly long validation time (in the order of minutes...). This is a show-stopper that needs to investigated and addressed.

@ghost
Copy link

ghost commented Feb 21, 2022

Also, I think that solving point 1 from the previous comment will be useful for deploying demo/test Hydra networks.

@ghost
Copy link

ghost commented Feb 22, 2022

We are mostly concerned right now with assessing the performance of the layer 2, so we might as well resurrect our MockChain component to handle the on-chain part. This would simplify deployment as we would only need a single instance of the mockchain component running, without impacting the validity of our observations about the performance of the layer 2.

ghost pushed a commit that referenced this issue Feb 22, 2022
ghost pushed a commit that referenced this issue Feb 24, 2022
@ch1bo
Copy link
Collaborator Author

ch1bo commented Mar 2, 2022

So we solved the issue with ourobouros-network and we can run 50 nodes benchmarks by increasing the execution budgets and slot lenghts to accomodate the actual validation (of collectCom). We could also use the mock-chain, which we ended up not merging now though.

@ch1bo ch1bo closed this as completed Mar 2, 2022
Repository owner moved this from In Progress to Done in Hydra Head Roadmap Mar 2, 2022
@ch1bo ch1bo modified the milestones: Testnet maturity, 0.4.0 Mar 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
amber ⚠️ Medium complexity or partly unclear feature 💬 feature A feature on our roadmap
Projects
None yet
Development

No branches or pull requests

1 participant