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

Fix decoding of Hydra keys and ignore problematic head init #1857

Merged
merged 2 commits into from
Feb 14, 2025

Conversation

ch1bo
Copy link
Member

@ch1bo ch1bo commented Feb 14, 2025

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


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

Copy link

github-actions bot commented Feb 14, 2025

Transaction 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 2025-02-14 20:20:21.482045346 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial c8a101a5c8ac4816b0dceb59ce31fc2258e387de828f02961d2f2045 2652
νCommit 61458bc2f297fff3cc5df6ac7ab57cefd87763b0b7bd722146a1035c 685
νHead 0e35115a2c7c13c68ecd8d74e4987c04d4539e337643be20bb3274bd 14756
μHead 57166715eadb8d3135964325c016eea546c21e1c0aae974ca67df9a5* 5541
νDeposit ae01dade3a9c346d5c93ae3ce339412b90a0b8f83f94ec6baa24e30c 1102
  • The minting policy hash is only usable for comparison. As the script is parameterized, the actual script is unique per head.

Init transaction costs

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

Copy link

github-actions bot commented Feb 14, 2025

Transaction cost differences

Script summary

Name Size (Bytes)
νInitial -
νCommit -
νHead -
μHead -
νDeposit -

Init transaction costs

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) - - - - -

@ch1bo ch1bo self-assigned this Feb 14, 2025
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
@noonio noonio self-requested a review February 14, 2025 20:19
Copy link
Contributor

@noonio noonio left a comment

Choose a reason for hiding this comment

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

Great!

@noonio noonio enabled auto-merge February 14, 2025 20:22
@noonio noonio added this pull request to the merge queue Feb 14, 2025
Merged via the queue into master with commit b6d963e Feb 14, 2025
25 checks passed
@noonio noonio deleted the fix-party-decode branch February 14, 2025 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done ✔
Status: Done
Development

Successfully merging this pull request may close these issues.

Fix bug with being unable to deserialise parties resulting in fatal error
2 participants