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

cardano-api: 9.1 -> 9.3 #1686

Closed
wants to merge 41 commits into from
Closed

cardano-api: 9.1 -> 9.3 #1686

wants to merge 41 commits into from

Conversation

locallycompact
Copy link
Contributor


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

locallycompact and others added 30 commits October 4, 2024 18:26
We intend to create one of the hydra-plutus scripts with aiken.
This separates the aiken build, which yields the plutus.json blueprint
and the haskell build which provides access to the compiled validators.
Instead of using the plutus-tx "compiledScript", we use the
loaded-from-blueprint aiken script in the init validator and when
constructing/observing transactions in the hydra-node.
This is not yet working and it does not correctly detect changes to plutus.json
Plutus-tx seems to be encoding tuples as a Constr on-chain.
Also add TODO comments for things that are missing to be removed.
By regenerating the plutus.json file using -k flag during aiken build.
This removes the need of using aiken/builtin function decode_utf8,
providing some small optimization.

Also recreated plutus scripts.
Also removed its golden spec.

Finally added a note about a fragility being present while accessing
the commit validator script from the blueprintJSON.
Seems like the aiken compiler uses plutus core version 1.1.0 syntax and
we need to declare it as a PlutusV3 script.
ch1bo and others added 11 commits October 4, 2024 18:26
We do not need the plutus-style envelope and this would not match with
the PlutusV2 used there.
This will keep the first trace argument which we expect to see in our
mutation tests.
This does not require us to be in a git repository and hence makes the
test more flexible and isolated.
The hydra-plutus library seems to be consistently rebuilt when the
plutus.json gets changed.
This was failing with PPViewHashesDontMatch because the transaction was
referencing the commit script which is does not always need, and the
commit script being of different version than the other scripts spent.
Copy link

github-actions bot commented Oct 7, 2024

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 2024-10-07 10:24:05.783152986 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial b512161ccb0652d7e9a0b540e4a3c808f73d6558a4bcabf374d85880 3969
νCommit ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221 692
νHead 2253ddd95837c7aacc8635a971caaea743434152dd8dd2849bdf4162 10797
μHead 4d648ca239040b0e87901835aa11423e7aa3bd947ce6befe7db1bae8* 4508
νDeposit 1a011f23b139a6426767026bde10319546485d553219a5848cdac4e5 2993
  • 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 5097 5.81 2.30 0.44
2 5295 6.99 2.76 0.46
3 5502 8.37 3.30 0.48
5 5899 11.41 4.51 0.53
10 6906 18.11 7.16 0.65
57 16356 82.89 32.79 1.78

Commit transaction costs

This uses ada-only outputs for better comparability.

UTxO Tx size % max Mem % max CPU Min fee ₳
1 569 10.84 4.26 0.29
2 754 14.31 5.80 0.34
3 946 17.92 7.39 0.39
5 1320 25.56 10.73 0.49
10 2249 47.11 19.97 0.77
19 3937 94.71 39.81 1.38

CollectCom transaction costs

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 56 559 19.84 7.58 0.39
2 114 671 27.94 10.64 0.48
3 171 782 34.42 13.13 0.56
4 226 893 42.47 16.18 0.65
5 283 1004 48.66 18.55 0.72
6 337 1116 61.67 23.44 0.87
7 394 1227 73.57 27.91 1.00
8 450 1338 86.71 32.85 1.15
9 507 1449 88.96 33.80 1.18

Cost of Decrement Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 625 18.64 8.15 0.39
2 807 20.66 9.71 0.42
3 896 20.63 10.42 0.43
5 1124 22.64 12.78 0.47
10 2051 33.45 20.79 0.66
49 7765 95.49 75.11 1.80

Close transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 672 20.83 9.32 0.42
2 741 21.93 10.44 0.44
3 911 23.70 12.18 0.47
5 1278 27.30 15.69 0.54
10 2090 35.41 23.62 0.70
50 7927 96.94 84.74 1.89

Contest transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 683 26.77 11.46 0.48
2 798 28.61 13.05 0.51
3 994 30.76 14.93 0.55
5 1225 33.78 17.67 0.60
10 1960 43.29 26.04 0.77
38 6511 97.56 74.18 1.76

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 4997 15.51 6.64 0.54
2 5089 21.89 9.41 0.62
3 5334 29.67 12.98 0.72
4 5348 34.39 14.90 0.77
5 5583 42.07 18.42 0.87
6 5649 47.61 20.71 0.93
7 5664 50.15 21.55 0.96
8 5861 61.01 26.45 1.09
9 6094 67.42 29.38 1.17
10 6014 70.86 30.55 1.21
11 6373 85.53 37.25 1.39
12 6265 85.92 37.04 1.39
13 6533 90.60 39.31 1.45

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 5089 9.99 4.18 0.49
10 1 56 5122 11.35 4.98 0.50
10 5 284 5258 15.63 7.71 0.56
10 10 569 5429 21.28 11.24 0.64
10 20 1138 5768 33.55 18.72 0.81
10 30 1709 6111 45.04 25.88 0.97
10 40 2275 6446 57.33 33.37 1.14
10 50 2844 6786 68.44 40.36 1.29
10 77 4380 7700 99.74 59.82 1.73

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 2024-10-07 10:26:56.564616191 UTC

Baseline Scenario

Number of nodes 1
Number of txs 3000
Avg. Confirmation Time (ms) 4.699312577
P99 8.134082609999997ms
P95 5.9774916ms
P50 4.2668275ms
Number of Invalid txs 0

Three local nodes

Number of nodes 3
Number of txs 9000
Avg. Confirmation Time (ms) 22.620816611
P99 104.98001816000011ms
P95 28.687728549999978ms
P50 20.500917ms
Number of Invalid txs 0

Copy link

github-actions bot commented Oct 7, 2024

Test Results

518 tests  ±0   512 ✅ ±0   29m 44s ⏱️ + 6m 26s
163 suites ±0     6 💤 ±0 
  7 files   ±0     0 ❌ ±0 

Results for commit e659c67. ± Comparison against base commit d3db623.

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 5 parties should error out
Hydra.Options/Hydra Node RunOptions ‑ validateRunOptions: using more than 8 parties should error out

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.

6 participants