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

Repro for node-offline issue #1780

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

Repro for node-offline issue #1780

wants to merge 1 commit into from

Conversation

noonio
Copy link
Contributor

@noonio noonio commented Jan 10, 2025

Investigating a scenario where a node drops off and a Tx is submitted.

Running

If you want to run this test:

cabal test hydra-cluster --test-options '--match "survive a bit of"'

The main observation at present is that n3 (Carol) doesn't emit SnapshotConfirmed; despite the other two participants actually seeing it (you can confirm yourself by removing n3 in the final mapConcurrently

  flip mapConcurrently_ [n1, n2] $ \n -> ...

and observe that it succeeds.

Trivia

waitMatch is a bit dangerous because you can't see one one wait a message you also want to see in a subsequent match; i.e. it's somehow "live" and you'll miss things if you do that.

As a result, I've removed some code like following, even though it's useful (from the final block where Carol is back):

        -- They see Carol return
        waitForAllMatch (50 * blockTime) [n1, n2] $ \v -> do
          guard $ v ^? key "tag" == Just "PeerConnected"

        -- Carol sees them return
        flip mapConcurrently_ ["1", "2"] $ \i -> do
          waitMatch (100 * blockTime) n3 $ \v -> do
            guard $ v ^? key "tag" == Just "PeerConnected"
            guard $ v ^? key "peer" == Just i

  • 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 Jan 10, 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 - - - -
44 - - - -

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 - - - - -
9 - - - - -
10 - - - - -

Cost of Increment Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 - - - -
2 - $${\color{green}-0.39}$$ $${\color{green}-0.09}$$ $${\color{green}-0.01}$$
3 - $${\color{green}-0.38}$$ $${\color{green}-0.09}$$ -
5 - $${\color{green}-0.39}$$ $${\color{green}-0.09}$$ -
10 - +0.38 +0.1 -
43 - - - -

Cost of Decrement Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 - - - -
2 - - - -
3 - - - -
5 - - - -
10 - - - -
45 - - - -

Close transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 - - - -
2 - - - -
3 - - - -
5 - - - -
10 - - - -
41 - - - -

Contest transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 - - - -
2 - - - -
3 - - - -
5 - - - -
10 - - - -
33 - - - -

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) - - - - -
(40, 10) - - - - -
(41, 10) - - - - -

Copy link

github-actions bot commented Jan 10, 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-01-13 12:20:45.786790267 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 5350e9d521552ebfd9e846fd70c3b801f716fc14296134ec0fb71e97 14492
μHead 6b49dc4e571207d615dba01996548cb610b0caa85c30423d169d0091* 5612
ν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 6162 10.33 3.30 0.53
2 6367 12.28 3.91 0.56
3 6566 14.57 4.64 0.59
5 6966 18.33 5.80 0.65
10 7974 28.76 9.09 0.80
44 14810 98.38 30.98 1.82

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 920 4.36 2.33 0.24
5 1279 6.41 3.60 0.28
10 2171 12.13 7.25 0.40
54 10062 98.61 68.52 1.88

CollectCom transaction costs

Parties UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 56 524 24.24 7.08 0.42
2 114 636 33.95 9.78 0.52
3 170 747 39.73 11.59 0.59
4 227 862 50.79 14.64 0.70
5 283 969 55.67 16.18 0.76
6 340 1081 68.77 19.67 0.90
7 395 1192 74.48 21.56 0.96
8 449 1303 89.63 25.64 1.12
9 506 1414 86.88 25.22 1.10

Cost of Increment Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 1787 23.66 7.91 0.48
2 1981 26.40 9.49 0.52
3 2155 28.61 10.94 0.56
5 2345 29.85 12.53 0.58
10 3014 37.21 18.26 0.72
42 7839 96.24 59.24 1.70

Cost of Decrement Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 622 22.44 7.26 0.41
2 782 25.03 8.65 0.45
3 895 24.96 9.27 0.46
5 1211 29.82 11.97 0.53
10 1844 37.23 17.38 0.66
42 6523 93.19 54.39 1.58

Close transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 635 26.42 8.44 0.45
2 813 28.68 9.91 0.49
3 987 32.71 11.87 0.54
5 1261 34.21 13.75 0.58
10 2144 47.84 21.76 0.79
39 6386 96.30 57.21 1.62

Contest transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 683 33.35 10.42 0.52
2 888 35.98 12.01 0.57
3 1064 38.42 13.53 0.61
5 1326 42.46 16.09 0.67
10 1952 51.48 22.10 0.81
31 5295 98.60 51.84 1.55

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 6061 26.25 8.88 0.69
2 6201 35.55 12.07 0.80
3 6288 43.61 14.73 0.89
4 6466 53.09 17.99 0.99
5 6664 63.47 21.59 1.11
6 6736 70.87 24.02 1.19
7 6876 77.71 26.41 1.27
8 6875 87.81 29.66 1.38
9 7052 94.58 31.91 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 6162 17.30 5.88 0.60
10 1 57 6196 20.72 7.21 0.64
10 10 569 6502 37.25 13.89 0.84
10 20 1140 6842 56.62 21.69 1.07
10 30 1710 7184 77.15 29.92 1.31
10 40 2278 7523 96.39 37.66 1.53
10 40 2274 7519 97.12 37.93 1.54

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-01-13 12:23:35.646375925 UTC

Baseline Scenario

Number of nodes 1
Number of txs 300
Avg. Confirmation Time (ms) 4.441923243
P99 10.51035274ms
P95 5.465488550000002ms
P50 4.2280685ms
Number of Invalid txs 0

Three local nodes

Number of nodes 3
Number of txs 900
Avg. Confirmation Time (ms) 23.562210565
P99 117.53430507999998ms
P95 30.610303749999996ms
P50 20.6928015ms
Number of Invalid txs 0

@noonio noonio force-pushed the node-dropout-e2e-test branch from 8c29638 to 98bbecf Compare January 13, 2025 11:31
Remove checks that we can't have

Tidyup

Check how many signatures it received
@noonio noonio force-pushed the node-dropout-e2e-test branch from 98bbecf to 21b72c0 Compare January 13, 2025 12:18
@noonio noonio changed the title Working on repro for node-offline issue Repro for node-offline issue Jan 15, 2025
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.

1 participant