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

Change Era from BabbageEra to ConwayEra #1338

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

locallycompact
Copy link
Contributor

@locallycompact locallycompact commented Mar 5, 2024

Switch hydra from BabbageEra to ConwayEra. A Conway compatible hydra-node can be built using

nix build .#hydra-node

or a docker image with

nix build .#docker-hydra-node

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

@locallycompact
Copy link
Contributor Author

@ch1bo ch1bo self-assigned this Mar 6, 2024
@ch1bo
Copy link
Member

ch1bo commented Mar 6, 2024

@ch1bo Here is the withoutProtocolUpdates error. https://github.com/input-output-hk/hydra/actions/runs/8161289799/job/22309727685?pr=1338#step:5:2151

Protocol updates in the tx body seem to be bound only up to protocol version 8 (= babbage) as they (most likely) are done differently in conway (= protocol version 9)

image

Consequently, let's not clear that field (i.e. the updateTxBodyL) in the generator, but see whether the normal arbitrary transactions are fine within our tests. If not, we might need to tweak the generator to exclude any of the governance actions - the equivalents of protocol updates.

@locallycompact locallycompact force-pushed the lc/conway-support branch 3 times, most recently from b3c46c8 to e29ccc4 Compare March 13, 2024 13:48
@locallycompact locallycompact marked this pull request as draft March 13, 2024 14:06
Copy link

github-actions bot commented Mar 13, 2024

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 2024-06-04 15:22:10.250789868 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νInitial baafeb5dc37bbe6e068784746bda0a3b1bb1d034fa0c55270f6079c1 4082
νCommit fe7af84822bcba542fae377ae7311fc5fd20152f925ccd980f73ecdc 2061
νHead 93c08c55e804d7f82ca545a01883b5fda6a6d3623cb78885625800ae 9366
μHead 5e65c73722b4bb3f0cbfcc8433e1dcdfea099eaf0a43060f1731a65b* 4237
  • 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 4829 5.78 2.27 0.43
2 5026 7.27 2.86 0.45
3 5229 9.01 3.55 0.48
5 5631 11.39 4.48 0.52
10 6635 18.70 7.37 0.65
58 16285 85.71 33.78 1.80

Cost of Commit Transaction

This is using ada-only outputs for better comparability.

UTxO Tx size % max Mem % max CPU Min fee ₳
1 569 9.69 3.82 0.28
2 754 12.48 5.10 0.32
3 944 15.33 6.40 0.36
5 1320 21.26 9.09 0.45
10 2260 37.35 16.27 0.67
25 5071 96.42 41.75 1.45

Cost of CollectCom Transaction

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 57 555 14.55 5.82 0.33
2 114 666 23.52 9.49 0.44
3 171 777 33.58 13.68 0.55
4 225 888 45.58 18.71 0.69
5 282 999 58.32 24.11 0.84
6 338 1111 71.93 29.91 1.00
7 394 1222 91.75 38.15 1.22

Cost of Close Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 618 8.31 4.62 0.28
2 774 9.46 6.01 0.30
3 868 9.58 6.67 0.31
5 1131 11.03 8.81 0.35
10 2044 15.87 15.38 0.48
50 8041 49.12 62.43 1.35

Cost of Contest Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 637 8.64 4.73 0.28
2 773 9.33 5.79 0.30
3 918 10.05 6.87 0.32
5 1204 11.74 9.26 0.36
10 2196 17.37 16.35 0.51
50 8006 49.83 62.62 1.36

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 4723 16.95 7.34 0.55
2 4836 27.77 12.11 0.67
3 5016 41.94 18.44 0.84
4 5084 53.83 23.54 0.98
5 5212 75.87 33.37 1.23

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 4663 7.82 3.27 0.44
5 1 57 4697 9.18 4.07 0.46
5 5 284 4831 13.37 6.74 0.52
5 10 569 5002 19.13 10.30 0.60
5 20 1139 5341 30.87 17.52 0.76
5 30 1709 5683 42.61 24.75 0.92
5 40 2274 6018 53.93 31.80 1.08
5 50 2844 6358 65.26 38.85 1.24
5 79 4496 7344 99.39 59.85 1.71

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 2024-06-04 15:24:19.143423827 UTC

Baseline Scenario

Number of nodes 1
Number of txs 3000
Avg. Confirmation Time (ms) 4.010626785
P99 6.4785832099999645ms
P95 4.435842549999999ms
P50 3.661946ms
Number of Invalid txs 0

Three local nodes

Number of nodes 3
Number of txs 9000
Avg. Confirmation Time (ms) 21.724283902
P99 114.54525066000001ms
P95 30.364930949999998ms
P50 18.985564500000002ms
Number of Invalid txs 0

Copy link

github-actions bot commented Mar 14, 2024

Test Results

432 tests   - 4   422 ✅  - 2   17m 22s ⏱️ + 2m 9s
142 suites  - 1    10 💤  - 2 
  5 files   ±0     0 ❌ ±0 

Results for commit 25866ad. ± Comparison against base commit a876d9a.

This pull request removes 20 and adds 16 tests. Note that renamed tests count towards both.
Hydra.API.ClientInput/JSON encoding of (ReasonablySized (ClientInput (Tx BabbageEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.ClientInput/JSON encoding of (ReasonablySized (ClientInput (Tx BabbageEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (ClientInput (Tx BabbageEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxRequest (Tx BabbageEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxRequest (Tx BabbageEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (DraftCommitTxRequest (Tx BabbageEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxResponse (Tx BabbageEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxResponse (Tx BabbageEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (DraftCommitTxResponse (Tx BabbageEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (SubmitTxRequest (Tx BabbageEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (SubmitTxRequest (Tx BabbageEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (SubmitTxRequest (Tx BabbageEra)).json
Hydra.API.ServerOutput/JSON encoding of (ReasonablySized (ServerOutput (Tx BabbageEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.ServerOutput/JSON encoding of (ReasonablySized (ServerOutput (Tx BabbageEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (ServerOutput (Tx BabbageEra)).json
…
Hydra.API.ClientInput/JSON encoding of (ReasonablySized (ClientInput (Tx ConwayEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.ClientInput/JSON encoding of (ReasonablySized (ClientInput (Tx ConwayEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (ClientInput (Tx ConwayEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxRequest (Tx ConwayEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxRequest (Tx ConwayEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (DraftCommitTxRequest (Tx ConwayEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxResponse (Tx ConwayEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (DraftCommitTxResponse (Tx ConwayEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (DraftCommitTxResponse (Tx ConwayEra)).json
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (SubmitTxRequest (Tx ConwayEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.HTTPServer/JSON encoding of (ReasonablySized (SubmitTxRequest (Tx ConwayEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (SubmitTxRequest (Tx ConwayEra)).json
Hydra.API.ServerOutput/JSON encoding of (ReasonablySized (ServerOutput (Tx ConwayEra))) ‑ allows to encode values with aeson and read them back
Hydra.API.ServerOutput/JSON encoding of (ReasonablySized (ServerOutput (Tx ConwayEra))) ‑ produces the same JSON as is found in golden/ReasonablySized (ServerOutput (Tx ConwayEra)).json
…

♻️ This comment has been updated with latest results.

@ch1bo ch1bo linked an issue Mar 15, 2024 that may be closed by this pull request
2 tasks
@locallycompact locallycompact changed the title Era = ConwayEra Change Era from BabbageEra to ConwayEra May 13, 2024
@locallycompact locallycompact force-pushed the lc/conway-support branch 5 times, most recently from 0661149 to 4f54a45 Compare June 4, 2024 15:15
Do filter protocol updates in Arbitrary Tx anymore

Those are now represented differently in Conway and we'll see how the
fully random transactions (including governance actions that supersede
protocol updates) behave in situations where we use this generator.
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.

Switch L2 ledger to Conway
3 participants