-
Notifications
You must be signed in to change notification settings - Fork 87
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
Fix decoding of Hydra keys and ignore problematic head init #1857
Conversation
61f57fa
to
cfd5540
Compare
44e1414
to
66d074a
Compare
Transaction costsSizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using
Script summary
|
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 6093 | 10.98 | 3.42 | 0.53 |
2 | 6295 | 13.47 | 4.19 | 0.57 |
3 | 6495 | 15.68 | 4.86 | 0.60 |
5 | 6898 | 20.19 | 6.25 | 0.66 |
10 | 7901 | 31.40 | 9.68 | 0.82 |
40 | 13936 | 98.39 | 30.22 | 1.78 |
Commit
transaction costs
This uses ada-only outputs for better comparability.
UTxO | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 561 | 2.44 | 1.16 | 0.20 |
2 | 739 | 3.38 | 1.73 | 0.22 |
3 | 918 | 4.36 | 2.33 | 0.24 |
5 | 1279 | 6.41 | 3.60 | 0.28 |
10 | 2178 | 12.13 | 7.25 | 0.40 |
54 | 10061 | 98.61 | 68.52 | 1.88 |
CollectCom
transaction costs
Parties | UTxO (bytes) | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|---|
1 | 57 | 525 | 25.64 | 7.39 | 0.43 |
2 | 114 | 636 | 34.95 | 10.02 | 0.53 |
3 | 170 | 747 | 43.25 | 12.40 | 0.62 |
4 | 225 | 858 | 54.85 | 15.57 | 0.74 |
5 | 281 | 969 | 66.84 | 18.76 | 0.87 |
6 | 340 | 1081 | 78.92 | 22.11 | 0.99 |
7 | 395 | 1196 | 84.52 | 23.81 | 1.06 |
8 | 451 | 1303 | 87.14 | 24.97 | 1.09 |
Cost of Increment Transaction
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 1789 | 25.50 | 8.33 | 0.50 |
2 | 1886 | 25.97 | 9.08 | 0.51 |
3 | 2123 | 29.66 | 11.03 | 0.56 |
5 | 2471 | 33.53 | 13.67 | 0.63 |
10 | 3246 | 43.98 | 20.42 | 0.80 |
37 | 7389 | 97.48 | 55.82 | 1.67 |
Cost of Decrement Transaction
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 607 | 23.95 | 7.60 | 0.43 |
2 | 789 | 26.73 | 9.03 | 0.47 |
3 | 907 | 27.50 | 9.89 | 0.48 |
5 | 1134 | 30.05 | 11.96 | 0.53 |
10 | 1980 | 43.69 | 19.02 | 0.73 |
39 | 6352 | 98.10 | 53.38 | 1.61 |
Close
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 677 | 29.15 | 9.20 | 0.48 |
2 | 774 | 30.24 | 10.11 | 0.50 |
3 | 936 | 32.82 | 11.65 | 0.54 |
5 | 1276 | 40.11 | 15.31 | 0.64 |
10 | 2048 | 51.09 | 22.23 | 0.81 |
34 | 5509 | 95.98 | 52.59 | 1.55 |
Contest
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 667 | 35.95 | 11.00 | 0.55 |
2 | 768 | 37.41 | 12.00 | 0.57 |
3 | 899 | 39.54 | 13.31 | 0.61 |
5 | 1247 | 45.22 | 16.53 | 0.69 |
10 | 2021 | 57.12 | 23.64 | 0.87 |
27 | 4589 | 99.04 | 48.18 | 1.50 |
Abort
transaction costs
There is some variation due to the random mixture of initial and already committed outputs.
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | 5968 | 28.20 | 9.30 | 0.71 |
2 | 6128 | 38.80 | 12.83 | 0.83 |
3 | 6190 | 43.45 | 14.29 | 0.88 |
4 | 6354 | 53.74 | 17.73 | 0.99 |
5 | 6540 | 64.04 | 21.12 | 1.11 |
6 | 6702 | 74.59 | 24.69 | 1.23 |
7 | 6756 | 82.80 | 27.30 | 1.31 |
8 | 6904 | 96.80 | 32.00 | 1.47 |
FanOut
transaction costs
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 ₳ |
---|---|---|---|---|---|---|
10 | 0 | 0 | 6092 | 20.05 | 6.60 | 0.63 |
10 | 1 | 56 | 6124 | 20.87 | 6.98 | 0.64 |
10 | 10 | 569 | 6430 | 40.96 | 14.72 | 0.87 |
10 | 30 | 1709 | 7113 | 82.65 | 30.94 | 1.35 |
10 | 38 | 2163 | 7382 | 99.89 | 37.62 | 1.55 |
End-to-end benchmark results
This page is intended to collect the latest end-to-end benchmark results produced by Hydra's continuous integration (CI) system from the latest master
code.
Please note that these results are approximate as they are currently produced from limited cloud VMs and not controlled hardware. Rather than focusing on the absolute results, the emphasis should be on relative results, such as how the timings for a scenario evolve as the code changes.
Generated at 2025-02-14 20:23:18.662676171 UTC
Baseline Scenario
Number of nodes | 1 |
---|---|
Number of txs | 300 |
Avg. Confirmation Time (ms) | 4.097790956 |
P99 | 14.255678ms |
P95 | 4.4649202ms |
P50 | 3.7793514999999998ms |
Number of Invalid txs | 0 |
Memory data
Time | Used | Free |
---|---|---|
2025-02-14 20:21:53.685416644 UTC | 925M | 2291M |
2025-02-14 20:21:58.685412049 UTC | 1047M | 2145M |
2025-02-14 20:22:03.685425229 UTC | 1008M | 2184M |
2025-02-14 20:22:08.685410692 UTC | 1008M | 2184M |
2025-02-14 20:22:13.685421084 UTC | 1010M | 2182M |
2025-02-14 20:22:18.685347114 UTC | 1021M | 2170M |
Three local nodes
Number of nodes | 3 |
---|---|
Number of txs | 900 |
Avg. Confirmation Time (ms) | 22.771286034 |
P99 | 113.77056891ms |
P95 | 30.437010299999997ms |
P50 | 20.207447000000002ms |
Number of Invalid txs | 0 |
Memory data
Time | Used | Free |
---|---|---|
2025-02-14 20:22:31.602237297 UTC | 950M | 2253M |
2025-02-14 20:22:36.602306231 UTC | 1113M | 2089M |
2025-02-14 20:22:41.602447195 UTC | 1121M | 2081M |
2025-02-14 20:22:46.60223432 UTC | 1123M | 2078M |
2025-02-14 20:22:51.602424164 UTC | 1167M | 1966M |
2025-02-14 20:22:56.602459133 UTC | 1188M | 1863M |
2025-02-14 20:23:01.602410699 UTC | 1204M | 1847M |
2025-02-14 20:23:06.602509662 UTC | 1207M | 1843M |
2025-02-14 20:23:11.602398006 UTC | 1207M | 1843M |
2025-02-14 20:23:16.602577062 UTC | 1213M | 1837M |
Transaction cost differencesScript summary
|
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
5 | - | - | - | - |
10 | - | - | - | - |
40 | - | - | - | - |
Commit
transaction costs
UTxO | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
5 | - | - | - | - |
10 | - | - | - | - |
54 | - | - | - | - |
CollectCom
transaction costs
Parties | UTxO (bytes) | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|---|
1 | - | - | - | - | - |
2 | - | - | - | - | - |
3 | - | - | - | - | - |
4 | - | - | - | - | - |
5 | - | - | - | - | - |
6 | - | - | - | - | - |
7 | - | - | - | - | - |
8 | - | - | - | - | - |
Cost of Increment Transaction
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | +0.39 | +0.09 | - |
5 | - | - | - | - |
10 | - | - | - | - |
37 | - | - | - | - |
Cost of Decrement Transaction
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
5 | - | - | - | - |
10 | - | - | - | - |
40 | - | - | - | - |
Close
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
5 | - | - | - | - |
10 | - | - | - | - |
34 | - | - | - | - |
Contest
transaction costs
Parties | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|
1 | - | - | - | - |
2 | - | - | - | - |
3 | - | - | - | - |
5 | - | - | - | - |
10 | - | - | - | - |
27 | - | - | - | - |
FanOut
transaction costs
UTxO, Parties | UTxO (bytes) | Tx size | % max Mem | % max CPU | Min fee ₳ |
---|---|---|---|---|---|
(0, 10) | - | - | - | - | - |
(1, 10) | - | - | - | - | - |
(5, 10) | - | - | - | - | - |
(10, 10) | - | - | - | - | - |
(20, 10) | - | - | - | - | - |
(37, 10) | - | - | - | - | - |
We were not correctly decoding Hydra verification keys (but crashing via error) because of a missing data constructor. This also makes the observeInitTx sort out heads that would have such problematic party datums. An example transaction with problematic data is: b860a236a7e77577628bf705286d449188831cf90d714934f1cc06369c6e3953 on preprod
66d074a
to
98f33f4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great!
We were not correctly decoding Hydra verification keys (but crashing via error) because of a missing data constructor.
This also makes the observeInitTx sort out heads that would have such problematic party datums.
An example transaction with problematic data is:
b860a236a7e77577628bf705286d449188831cf90d714934f1cc06369c6e3953 on preprod