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

Upgrade from Haskell2010 to GHC2021 #1152

Merged
merged 2 commits into from
Nov 6, 2023
Merged

Upgrade from Haskell2010 to GHC2021 #1152

merged 2 commits into from
Nov 6, 2023

Conversation

locallycompact
Copy link
Contributor

This moves the default-language to GHC2021 and reduces the extension list in all cabal files.

Copy link

github-actions bot commented Nov 3, 2023

Test Results

363 tests  ±0   358 ✔️ ±0   22m 35s ⏱️ + 2m 54s
122 suites ±0       5 💤 ±0 
    5 files   ±0       0 ±0 

Results for commit 18b1060. ± Comparison against base commit cc5f100.

♻️ This comment has been updated with latest results.

Copy link

github-actions bot commented Nov 3, 2023

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-06 09:42:59.056101983 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial 9bad424d8a3bc67f63acfe1b015b551e84a14d7d8818204089a021b5 4120
νCommit 171a1e6bdbc8aa96d957a65b3f505517386af06ba265e3f784741f67 2050
νHead 00a8a1475bd29c02c0e3ff02a2fc83607425cd9b94eaa9f2a3056ab1 9185
μHead 16bb32b8df4dfc6cefe5bbaad9174db1b61394bdeaf1b26e83024bf6* 4150
  • 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 4743 11.80 4.66 0.49
2 4948 13.89 5.45 0.52
3 5153 16.52 6.46 0.56
5 5561 21.41 8.33 0.63
10 6586 32.89 12.70 0.80
38 12330 99.86 38.24 1.78

Cost of Commit Transaction

This is using ada-only outputs for better comparability.

UTxO Tx size % max Mem % max CPU Min fee ₳
1 599 12.64 4.97 0.31
2 786 16.25 6.61 0.36
3 971 20.09 8.33 0.42
5 1338 28.20 11.93 0.52
10 2280 50.91 21.81 0.82
18 3778 94.61 40.32 1.37

Cost of CollectCom Transaction

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 57 815 24.42 9.72 0.45
2 114 1136 36.58 14.73 0.60
3 170 1455 51.55 20.90 0.78
4 227 1785 68.19 27.83 0.98
5 282 2096 90.83 37.09 1.24

Cost of Close Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 572 16.58 7.00 0.36
2 775 18.45 8.16 0.39
3 1129 22.09 11.77 0.46
5 1502 25.76 14.90 0.53
10 2613 34.22 22.74 0.71
50 7226 81.12 42.32 1.43

Cost of Contest Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 739 22.50 10.09 0.44
2 967 24.81 11.89 0.48
3 1149 26.32 13.36 0.51
5 1532 29.88 16.37 0.58
10 2613 39.20 24.33 0.76
43 9319 98.59 75.76 1.90

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 4963 20.93 9.06 0.60
2 5466 35.70 15.65 0.79
3 5834 53.34 23.50 1.01
4 6335 73.67 32.61 1.26
5 6585 90.23 39.79 1.46

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 4767 8.58 3.63 0.46
5 1 57 4798 9.88 4.42 0.47
5 5 284 4941 15.16 7.64 0.55
5 10 570 5127 21.65 11.61 0.63
5 20 1140 5490 34.76 19.61 0.81
5 30 1707 5849 47.74 27.55 0.99
5 40 2276 6205 60.72 35.50 1.17
5 50 2843 6561 73.48 43.36 1.35
5 70 3981 7280 99.71 59.37 1.70

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-06 09:36:47.912670121 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) 23.156292590
P99 40.126956609999986ms
P95 32.0670181ms
P50 21.492021ms
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.689237686
P99 8.358588549999999ms
P95 6.046901850000003ms
P50 4.464841ms
Number of Invalid txs 0

@ch1bo ch1bo force-pushed the lc/GHC2021 branch 2 times, most recently from 647e682 to 2ec1885 Compare November 3, 2023 14:39
Copy link
Member

@ch1bo ch1bo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked and all GHC2021 extensions we had before or are inoffensive.

I also pushed a commit that removes several in-module LANGUAGE pragmas as well @locallycompact

@@ -19,45 +19,19 @@ flag hydra-development
manual: True

common project-config
default-language: Haskell2010
default-language: GHC2021
default-extensions:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@locallycompact fixed the plutus-... packages as well

@ch1bo ch1bo force-pushed the lc/GHC2021 branch 3 times, most recently from 56c8e84 to 02773ed Compare November 6, 2023 09:28
This also moved PatternSynonyms into the .cabal file in packages which
use it often.
@ch1bo ch1bo merged commit 80c1b5d into master Nov 6, 2023
@ch1bo ch1bo deleted the lc/GHC2021 branch November 6, 2023 10:10
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.

2 participants