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

Increase maximum number of parties #1169

Merged
merged 1 commit into from
Nov 20, 2023
Merged

Conversation

v0d1ch
Copy link
Contributor

@v0d1ch v0d1ch commented Nov 20, 2023

Let's increase max number of parties so that we can open a head between all team members and test out the tx limits.


  • CHANGELOG updated or not needed
  • Documentation updated or not needed
  • Haddocks updated or not needed
  • No new TODOs introduced or explained herafter

@v0d1ch v0d1ch self-assigned this Nov 20, 2023
Copy link

Test Results

368 tests  ±0   363 ✔️ ±0   20m 12s ⏱️ - 1m 15s
124 suites ±0       5 💤 ±0 
    5 files   ±0       0 ±0 

Results for commit 922a148. ± Comparison against base commit fcae9ca.

This pull request removes 1 and adds 1 tests. Note that renamed tests count towards both.
Hydra.Options/Hydra Node RunOptions ‑ validateRunOptions: using more than 4 parties should error out
Hydra.Options/Hydra Node RunOptions ‑ validateRunOptions: using more than 5 parties should error out

Copy link

Transactions Costs

Sizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using arbitrary values and results are not fully deterministic and comparable to previous runs.

Metadata
Generated at 2023-11-20 09:43:14.196058218 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial 57dd0a3aba3f4477afed74e7d12b6e86d7abad22ee51612ff81b4194 4059
νCommit 171a1e6bdbc8aa96d957a65b3f505517386af06ba265e3f784741f67 2050
νHead e89b0c4a6155bac2434d1e500bd49c155b2b56744ccf5a0efa72a82e 9092
μHead 92368af5649999c05211407d9a837cdd10ecf98c5829b385e89a3648* 4062
  • The minting policy hash is only usable for comparison. As the script is parameterized, the actual script is unique per Head.

Cost of Init Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 4591 10.98 4.36 0.47
2 4803 13.09 5.16 0.50
3 5004 15.61 6.13 0.54
5 5414 19.79 7.72 0.60
10 6437 30.94 11.98 0.77
41 12797 99.61 38.18 1.79

Cost of Commit Transaction

This is using ada-only outputs for better comparability.

UTxO Tx size % max Mem % max CPU Min fee ₳
1 537 12.23 4.81 0.31
2 726 15.93 6.48 0.36
3 911 19.77 8.20 0.41
5 1290 27.87 11.80 0.52
10 2225 50.58 21.69 0.81
18 3723 94.20 40.16 1.36

Cost of CollectCom Transaction

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 57 483 22.24 8.89 0.42
2 114 597 34.81 14.01 0.56
3 170 703 49.09 19.89 0.72
4 225 813 65.78 26.78 0.91
5 282 923 84.83 34.64 1.13
6 339 1034 99.93 41.20 1.30

Cost of Close Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 540 17.76 8.34 0.38
2 718 19.26 9.79 0.41
3 903 21.18 11.56 0.44
5 1166 23.71 14.07 0.49
10 2119 32.66 22.40 0.67
50 8793 94.67 82.17 1.89

Cost of Contest Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 577 21.33 9.70 0.42
2 756 23.23 11.39 0.45
3 915 25.11 13.04 0.49
5 1257 28.53 16.10 0.55
10 2249 38.22 24.78 0.74
45 8091 99.65 79.90 1.89

Cost of Abort Transaction

Some variation because of random mixture of still initial and already committed outputs.

Parties Tx size % max Mem % max CPU Min fee ₳
1 4547 19.96 8.70 0.57
2 4696 33.68 14.84 0.74
3 4852 50.27 22.28 0.93
4 4959 63.66 28.06 1.09
5 5145 84.57 37.48 1.33

Cost of FanOut Transaction

Involves spending head output and burning head tokens. Uses ada-only UTxO for better comparability.

Parties UTxO UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
5 0 0 4416 9.21 3.88 0.45
5 1 57 4452 10.51 4.67 0.46
5 5 284 4595 15.70 7.84 0.54
5 10 567 4773 21.95 11.72 0.62
5 20 1139 5135 35.16 19.75 0.80
5 30 1707 5496 47.90 27.60 0.98
5 40 2275 5854 60.85 35.54 1.16
5 50 2846 6215 73.75 43.45 1.33
5 69 3926 6896 98.57 58.63 1.67

End-To-End Benchmark Results

This page is intended to collect the latest end-to-end benchmarks results produced by Hydra's Continuous Integration system from the latest master code.

Please take those results with a grain of salt as they are currently produced from very limited cloud VMs and not controlled hardware. Instead of focusing on the absolute results, the emphasis should be on relative results, eg. how the timings for a scenario evolve as the code changes.

Generated at 2023-11-20 09:37:06.912080391 UTC

3-nodes Scenario

A rather typical setup, with 3 nodes forming a Hydra head.

Number of nodes 3
Number of txs 900
Avg. Confirmation Time (ms) 22.535096806
P99 62.858670059999845ms
P95 31.969914699999997ms
P50 19.907379499999998ms
Number of Invalid txs 0

Baseline Scenario

This scenario represents a minimal case and as such is a good baseline against which to assess the overhead introduced by more complex setups. There is a single hydra-node d with a single client submitting single input and single output transactions with a constant UTxO set of 1.

Number of nodes 1
Number of txs 300
Avg. Confirmation Time (ms) 4.279803596
P99 8.76244998999999ms
P95 5.391006000000001ms
P50 4.090496ms
Number of Invalid txs 0

@ch1bo ch1bo merged commit 4cc76a4 into master Nov 20, 2023
20 checks passed
@ch1bo ch1bo deleted the increase-maximum-number-of-parties branch November 20, 2023 10:00
@ch1bo ch1bo added this to the 0.14.0 milestone Nov 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants