Skip to content

Decouple Blockfrost inline-datum test from published script hashes - #2792

Merged
vrom911 merged 1 commit into
masterfrom
vrom911/blockfrost-nightly-fix
Jul 27, 2026
Merged

Decouple Blockfrost inline-datum test from published script hashes#2792
vrom911 merged 1 commit into
masterfrom
vrom911/blockfrost-nightly-fix

Conversation

@vrom911

@vrom911 vrom911 commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Nightly tests are passing now.
The problem was that we were checking published scripts against master code


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

@vrom911 vrom911 self-assigned this Jul 27, 2026
@github-actions

Copy link
Copy Markdown

Transaction cost differences

No cost or size differences found

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

End-to-end benchmark differences

Comparing this PR (new) against master (old). Numbers come from cloud VMs, so changes under 5% are shown as and are likely run-to-run noise rather than a real regression or improvement. 🟢 = improvement, 🔴 = regression; uncolored rows are neutral measures reported for context.

Sustained load (3 nodes, 3x5000 txs)

Metric master PR Δ
End-to-end TPS (tx/s) 481.61 516.14 🟢 +34.53 (+7.2%)
Sustained TPS (tx/s) 916.79 1,082.93 🟢 +166.14 (+18.1%)
Backlog drain time (s) 30.30 26.60 🟢 -3.70 (-12.2%)
Snapshots per second (/s) 0.55 0.58 +0.03 (+5.5%)
Avg txs per snapshot 882.40 882.40 ≈ +0.00 (+0.0%)
Avg. Confirmation Time (s) 24.947 23.893 ≈ -1.054 (-4.2%)
P50 confirmation (s) 26.571 25.169 🟢 -1.401 (-5.3%)
P95 confirmation (s) 30.355 28.681 🟢 -1.674 (-5.5%)
P99 confirmation (s) 30.401 28.702 🟢 -1.699 (-5.6%)
Tx validation time p50 (s) 8.102 9.412 🔴 +1.311 (+16.2%)
Peak node RSS (MB) 423.50 420.30 ≈ -3.20 (-0.8%)
Invalid txs 0.00 0.00 ≈ +0.00 (n/a%)

Plateau 1000 UTxO (1 node, 4000 txs)

Metric master PR Δ
End-to-end TPS (tx/s) 234.25 241.23 ≈ +6.98 (+3.0%)
Backlog drain time (s) 17.00 16.50 ≈ -0.50 (-2.9%)
Snapshots per second (/s) 0.41 0.42 ≈ +0.01 (+2.4%)
Avg txs per snapshot 571.40 571.40 ≈ +0.00 (+0.0%)
Avg. Confirmation Time (s) 10.882 10.584 ≈ -0.298 (-2.7%)
P50 confirmation (s) 12.383 11.048 🟢 -1.335 (-10.8%)
P95 confirmation (s) 16.954 16.499 ≈ -0.455 (-2.7%)
P99 confirmation (s) 16.964 16.501 ≈ -0.463 (-2.7%)
Tx validation time p50 (s) 4.835 4.606 ≈ -0.229 (-4.7%)
Peak node RSS (MB) 360.90 369.90 ≈ +9.00 (+2.5%)
Invalid txs 0.00 0.00 ≈ +0.00 (n/a%)

Round-trip latency (3 nodes, closed-loop, 3x250 txs)

Metric master PR Δ
End-to-end TPS (tx/s) 102.36 105.25 ≈ +2.89 (+2.8%)
Sustained TPS (tx/s) 102.41 105.94 ≈ +3.53 (+3.4%)
Backlog drain time (s) 0.00 0.00 ≈ +0.00 (n/a%)
Snapshots per second (/s) 69.06 71.15 ≈ +2.09 (+3.0%)
Avg txs per snapshot 1.50 1.50 ≈ +0.00 (+0.0%)
Avg. Confirmation Time (s) 0.029 0.028 ≈ -0.001 (-3.4%)
P50 confirmation (s) 0.028 0.028 ≈ -0.001 (-2.8%)
P95 confirmation (s) 0.039 0.037 ≈ -0.002 (-4.4%)
P99 confirmation (s) 0.047 0.043 🟢 -0.004 (-7.7%)
Tx validation time p50 (s) 0.008 0.007 🟢 -0.000 (-6.5%)
Peak node RSS (MB) 149.20 149.20 ≈ +0.00 (+0.0%)
Invalid txs 0.00 0.00 ≈ +0.00 (n/a%)

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

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 2026-07-27 13:09:03.17885392 UTC
Max. memory units 14000000
Max. CPU units 10000000000
Max. tx size (kB) 16384

Script summary

Name Hash Size (Bytes)
νHead f2dd4ade71e19c2310a86215aa78aea06463aca2d8b818af8dc1b8a4 12805
μHead 4abb8dedbcd6a6f03f4fe227300e2713d73b7680d47baa898b60d27a* 4971
νDeposit c78e8c9205721eb3ef4410f3db9c6169fa6db497c24641d29c20529c 1615
νCRS 09db7ee6cf7a4b358dd5c8a2f19d2c048336ffc5a01ef35a47ca7072 2736
  • 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 5475 9.14 3.00 0.49
2 5571 9.74 3.19 0.50
3 5667 10.56 3.47 0.51
5 5861 11.12 3.63 0.52
10 6340 14.22 4.64 0.58
50 10183 35.15 11.16 0.96
100 14983 62.06 19.59 1.45
114 16330 70.10 22.10 1.59

Cost of Increment Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 2321 20.59 7.33 0.47
2 2452 21.57 8.31 0.49
3 2583 23.30 9.54 0.52
5 2845 25.04 11.42 0.56
10 3501 30.28 16.42 0.67
50 8742 71.90 56.10 1.52
75 12017 96.86 80.56 2.04

Cost of Decrement Transaction

Parties Tx size % max Mem % max CPU Min fee ₳
1 642 18.46 6.68 0.38
2 771 19.43 7.65 0.40
3 908 20.41 8.63 0.42
5 1166 22.35 10.58 0.46
10 1822 27.14 15.43 0.56
50 7063 68.04 54.87 1.41
75 10337 93.31 79.44 1.93

Close transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 669 17.78 11.67 0.41
50 7090 67.65 60.06 1.44
75 10365 92.90 84.68 1.97

Contest transaction costs

Parties Tx size % max Mem % max CPU Min fee ₳
1 701 21.50 14.91 0.46
2 832 22.66 15.94 0.48
3 964 23.79 16.96 0.51
5 1225 26.09 19.02 0.55
10 1881 31.77 24.16 0.66
50 7121 80.29 65.94 1.59
66 9218 99.46 82.59 1.95

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 5645 23.29 42.87 0.90
10 1 57 5679 25.63 45.39 0.93
10 5 285 5814 35.88 55.71 1.10
10 10 569 5983 49.89 68.99 1.31
10 20 1138 6322 82.42 96.97 1.79
10 20 1139 6323 82.42 96.97 1.79

PartialFanOut transaction costs

Largest chunk of ada-only outputs that can be distributed in one partial fanout step, computed dynamically. The last row is the maximum total UTxO count where at least one output can still be distributed.

Distributed UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
11 568 981 34.91 66.33 0.95
25 1309 1428 68.24 99.40 1.48
30 1307 1426 68.24 99.40 1.48
40 1306 1425 68.24 99.40 1.48
50 1309 1428 68.24 99.40 1.48
100 1311 1430 68.24 99.40 1.48
150 1310 1429 68.24 99.40 1.48
200 1308 1427 68.24 99.40 1.48
200 1310 1429 68.24 99.40 1.48

PartialFanOut transaction costs (with native tokens)

Largest chunk of native-token outputs that can be distributed in one partial fanout step, computed dynamically. The last row is the maximum total UTxO count where at least one output can still be distributed.

Distributed UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
11 1070 1550 42.00 68.86 1.05
25 2058 2302 76.59 99.12 1.58
30 2562 2830 76.59 99.27 1.61
40 2058 2302 76.59 99.12 1.58
50 2478 2743 76.56 99.22 1.60
100 2247 2501 76.59 99.17 1.59
150 2226 2479 76.56 99.17 1.59
200 2184 2435 76.56 99.16 1.59
200 1974 2215 76.59 99.12 1.58

FinalPartialFanOut transaction costs (with native tokens)

Terminal partial fanout step (FanoutProgress → Final) with outputs carrying a native token. Burns all head tokens and proves accumulator exhaustion via BLS proof.

Distributed UTxO (bytes) Tx size % max Mem % max CPU Min fee ₳
1 107 5527 22.10 44.31 0.89
5 490 5825 35.70 55.82 1.10
10 1220 6451 53.90 70.67 1.38
10 1160 6390 53.90 70.65 1.38

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 2026-07-27 13:11:20.235540404 UTC

Baseline Scenario

Number of nodes 1
Number of txs 300
Avg. Confirmation Time (ms) 196.4
P99 201.5ms
P95 201.0ms
P50 196.8ms
Tx validation time p50 (ms) 124.1
End-to-end TPS 1486.50 tx/s
Backlog drain time (s) 0.2
Snapshots observed 2
Snapshots per second 9.91 /s
Avg txs per snapshot 150.0
Peak node RSS (MB) 146.8
Number of Invalid txs 0
Fanout outputs 2

Three local nodes

Number of nodes 3
Number of txs 900
Avg. Confirmation Time (ms) 1014.2
P99 1040.5ms
P95 1039.5ms
P50 1022.9ms
Tx validation time p50 (ms) 522.5
End-to-end TPS 851.18 tx/s
Backlog drain time (s) 1.0
Snapshots observed 3
Snapshots per second 2.84 /s
Avg txs per snapshot 300.0
Peak node RSS (MB) 147.5
Number of Invalid txs 0
Fanout outputs 4

Scenario benchmark results

This page collects results from the scenario matrix: every combination of cluster size, UTxO shape, and incremental-ops mode is exercised by CI from the latest master code and reported below.

Numbers are approximate. They come from cloud VMs rather than controlled hardware, so the useful signal is the relative change between cells and between commits, not the absolute throughput.

Generated at 2026-07-27 13:25:22.424077 UTC

Summary across cells

TPS columns are rates (transactions per second); Wall clock (s) is the measured elapsed time from the first tx submission to the last confirmation. Times are rounded to one decimal.

Scenario Txs Wall clock (s) End-to-end TPS (tx/s) Sustained TPS (tx/s) Avg conf (ms) P95 conf (ms)
Nodes=1, Constant, fire and forget 30 0.0 1225.95 n/a 23.7 24.3
Nodes=1, Constant, wait for tx valid 30 0.2 176.93 176.27 5.6 7.1
Nodes=1, Growing, fire and forget 30 0.0 903.11 n/a 32.4 32.9
Nodes=1, Growing, wait for tx valid 30 0.2 139.34 138.88 7.1 8.8
Nodes=1, Mixed, fire and forget 30 0.0 1131.21 n/a 25.8 26.3
Nodes=1, Mixed, wait for tx valid 30 0.2 143.88 148.04 6.9 8.1
Nodes=2, Constant, fire and forget 60 0.1 1131.12 n/a 51.8 52.5
Nodes=2, Constant, wait for tx valid 60 0.5 119.54 119.92 16.5 23.1
Nodes=2, Growing, fire and forget 60 0.1 784.98 n/a 75.0 76.1
Nodes=2, Growing, wait for tx valid 60 0.7 83.49 82.01 23.7 33.3
Nodes=2, Mixed, fire and forget 60 0.1 864.60 n/a 67.4 68.5
Nodes=2, Mixed, wait for tx valid 60 0.6 92.76 88.93 21.4 30.3
Nodes=3, Constant, fire and forget 90 0.1 649.77 n/a 135.1 137.6
Nodes=3, Constant, wait for tx valid 90 1.0 94.42 94.71 31.3 42.4
Nodes=3, Growing, fire and forget 90 0.2 476.41 n/a 184.3 186.9
Nodes=3, Growing, wait for tx valid 90 1.4 63.56 63.70 44.9 61.4
Nodes=3, Mixed, fire and forget 90 0.1 673.41 n/a 129.9 131.5
Nodes=3, Mixed, wait for tx valid 90 1.2 73.39 70.22 39.7 56.6

Nodes=1, Constant, fire and forget

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 23.7
P99 24.4ms
P95 24.3ms
P50 23.9ms
Tx validation time p50 (ms) 10.0
End-to-end TPS 1225.95 tx/s
Backlog drain time (s) 0.0
Snapshots observed 2
Snapshots per second 81.73 /s
Avg txs per snapshot 15.0
Peak node RSS (MB) 144.3
Number of Invalid txs 0
Fanout outputs 2

Nodes=1, Constant, wait for tx valid

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 5.6
P99 8.9ms
P95 7.1ms
P50 5.2ms
Tx validation time p50 (ms) 1.8
End-to-end TPS 176.93 tx/s
Sustained TPS 176.27 tx/s
Backlog drain time (s) 0.0
Snapshots observed 30
Snapshots per second 176.93 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 144.2
Number of Invalid txs 0
Fanout outputs 2

Nodes=1, Growing, fire and forget

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 32.4
P99 33.0ms
P95 32.9ms
P50 32.7ms
Tx validation time p50 (ms) 13.8
End-to-end TPS 903.11 tx/s
Backlog drain time (s) 0.0
Snapshots observed 2
Snapshots per second 60.21 /s
Avg txs per snapshot 15.0
Peak node RSS (MB) 144.6
Number of Invalid txs 0
Fanout outputs 31

Nodes=1, Growing, wait for tx valid

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 7.1
P99 9.8ms
P95 8.8ms
P50 6.9ms
Tx validation time p50 (ms) 1.9
End-to-end TPS 139.34 tx/s
Sustained TPS 138.88 tx/s
Backlog drain time (s) 0.0
Snapshots observed 30
Snapshots per second 139.34 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 144.9
Number of Invalid txs 0
Fanout outputs 31

Nodes=1, Mixed, fire and forget

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 25.8
P99 26.3ms
P95 26.3ms
P50 26.0ms
Tx validation time p50 (ms) 18.0
End-to-end TPS 1131.21 tx/s
Backlog drain time (s) 0.0
Snapshots observed 2
Snapshots per second 75.41 /s
Avg txs per snapshot 15.0
Peak node RSS (MB) 144.0
Number of Invalid txs 0
Fanout outputs 2

Nodes=1, Mixed, wait for tx valid

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 1
Number of txs 30
Avg. Confirmation Time (ms) 6.9
P99 12.7ms
P95 8.1ms
P50 6.5ms
Tx validation time p50 (ms) 1.9
End-to-end TPS 143.88 tx/s
Sustained TPS 148.04 tx/s
Backlog drain time (s) 0.0
Snapshots observed 30
Snapshots per second 143.88 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 143.4
Number of Invalid txs 0
Fanout outputs 2

Nodes=2, Constant, fire and forget

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 51.8
P99 52.7ms
P95 52.5ms
P50 52.0ms
Tx validation time p50 (ms) 32.3
End-to-end TPS 1131.12 tx/s
Backlog drain time (s) 0.1
Snapshots observed 2
Snapshots per second 37.70 /s
Avg txs per snapshot 30.0
Peak node RSS (MB) 144.3
Number of Invalid txs 0
Fanout outputs 3

Nodes=2, Constant, wait for tx valid

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 16.5
P99 23.6ms
P95 23.1ms
P50 15.8ms
Tx validation time p50 (ms) 4.4
End-to-end TPS 119.54 tx/s
Sustained TPS 119.92 tx/s
Backlog drain time (s) 0.0
Snapshots observed 60
Snapshots per second 119.54 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 144.6
Number of Invalid txs 0
Fanout outputs 3

Nodes=2, Growing, fire and forget

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 75.0
P99 76.2ms
P95 76.1ms
P50 75.5ms
Tx validation time p50 (ms) 24.0
End-to-end TPS 784.98 tx/s
Backlog drain time (s) 0.1
Snapshots observed 2
Snapshots per second 26.17 /s
Avg txs per snapshot 30.0
Peak node RSS (MB) 144.4
Number of Invalid txs 0
Fanout outputs 62

Nodes=2, Growing, wait for tx valid

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 23.7
P99 35.9ms
P95 33.3ms
P50 23.4ms
Tx validation time p50 (ms) 7.2
End-to-end TPS 83.49 tx/s
Sustained TPS 82.01 tx/s
Backlog drain time (s) 0.0
Snapshots observed 60
Snapshots per second 83.49 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 146.0
Number of Invalid txs 0
Fanout outputs 62

Nodes=2, Mixed, fire and forget

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 67.4
P99 68.8ms
P95 68.5ms
P50 67.7ms
Tx validation time p50 (ms) 21.2
End-to-end TPS 864.60 tx/s
Backlog drain time (s) 0.1
Snapshots observed 2
Snapshots per second 28.82 /s
Avg txs per snapshot 30.0
Peak node RSS (MB) 145.4
Number of Invalid txs 0
Fanout outputs 3

Nodes=2, Mixed, wait for tx valid

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 2
Number of txs 60
Avg. Confirmation Time (ms) 21.4
P99 34.6ms
P95 30.3ms
P50 20.3ms
Tx validation time p50 (ms) 6.3
End-to-end TPS 92.76 tx/s
Sustained TPS 88.93 tx/s
Backlog drain time (s) 0.0
Snapshots observed 60
Snapshots per second 92.76 /s
Avg txs per snapshot 1.0
Peak node RSS (MB) 145.9
Number of Invalid txs 0
Fanout outputs 3

Nodes=3, Constant, fire and forget

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 135.1
P99 137.7ms
P95 137.6ms
P50 135.6ms
Tx validation time p50 (ms) 54.2
End-to-end TPS 649.77 tx/s
Backlog drain time (s) 0.1
Snapshots observed 2
Snapshots per second 14.44 /s
Avg txs per snapshot 45.0
Peak node RSS (MB) 145.2
Number of Invalid txs 0
Fanout outputs 4

Nodes=3, Constant, wait for tx valid

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 31.3
P99 45.6ms
P95 42.4ms
P50 31.2ms
Tx validation time p50 (ms) 8.6
End-to-end TPS 94.42 tx/s
Sustained TPS 94.71 tx/s
Backlog drain time (s) 0.0
Snapshots observed 61
Snapshots per second 64.00 /s
Avg txs per snapshot 1.5
Peak node RSS (MB) 145.8
Number of Invalid txs 0
Fanout outputs 4

Nodes=3, Growing, fire and forget

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 184.3
P99 187.2ms
P95 186.9ms
P50 185.9ms
Tx validation time p50 (ms) 70.8
End-to-end TPS 476.41 tx/s
Backlog drain time (s) 0.2
Snapshots observed 2
Snapshots per second 10.59 /s
Avg txs per snapshot 45.0
Peak node RSS (MB) 145.8
Number of Invalid txs 0
Fanout outputs 0

Nodes=3, Growing, wait for tx valid

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 44.9
P99 67.1ms
P95 61.4ms
P50 45.6ms
Tx validation time p50 (ms) 12.2
End-to-end TPS 63.56 tx/s
Sustained TPS 63.70 tx/s
Backlog drain time (s) 0.0
Snapshots observed 63
Snapshots per second 44.49 /s
Avg txs per snapshot 1.4
Peak node RSS (MB) 147.8
Number of Invalid txs 0
Fanout outputs 0

Nodes=3, Mixed, fire and forget

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 129.9
P99 131.5ms
P95 131.5ms
P50 130.7ms
Tx validation time p50 (ms) 37.1
End-to-end TPS 673.41 tx/s
Backlog drain time (s) 0.1
Snapshots observed 2
Snapshots per second 14.96 /s
Avg txs per snapshot 45.0
Peak node RSS (MB) 144.2
Number of Invalid txs 0
Fanout outputs 4

Nodes=3, Mixed, wait for tx valid

Each client first grows its UTxO set (1-in to 2-out) for half of its tx budget, then contracts it back (2-in to 1-out) for the remainder.

Number of nodes 3
Number of txs 90
Avg. Confirmation Time (ms) 39.7
P99 67.6ms
P95 56.6ms
P50 39.2ms
Tx validation time p50 (ms) 11.1
End-to-end TPS 73.39 tx/s
Sustained TPS 70.22 tx/s
Backlog drain time (s) 0.0
Snapshots observed 63
Snapshots per second 51.37 /s
Avg txs per snapshot 1.4
Peak node RSS (MB) 146.7
Number of Invalid txs 0
Fanout outputs 4

@vrom911
vrom911 force-pushed the vrom911/blockfrost-nightly-fix branch from 0ef6a98 to 6116fd4 Compare July 27, 2026 13:06
@vrom911
vrom911 requested a review from a team July 27, 2026 14:07

@noonio noonio left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

happy to merge; seems like there are some unrelatedly flakey tests?

@vrom911
vrom911 merged commit d7f98d5 into master Jul 27, 2026
68 of 71 checks passed
@vrom911
vrom911 deleted the vrom911/blockfrost-nightly-fix branch July 27, 2026 18:11
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.

2 participants