Skip to content

Conversation

@tiljrd
Copy link

@tiljrd tiljrd commented Jun 17, 2025

No description provided.

barnabasbusa and others added 30 commits April 15, 2025 13:06
This PR changes the spamoor service to use the spamoor-damon that comes
with a management web interface.

This is a breaking change as the previous spamoor properties
(`scenario`, `throughput`, `max_pending`, `max_wallets`) are replaced
with a list of spammers to load on startup:
```
spamoor_params:
  image: "ethpandaops/spamoor:master"
  spammers:
    - scenario: eoatx  # The spamoor scenario to use (see https://github.com/ethpandaops/spamoor)
      name: "Optional name for this example spammer"
      config:
        throughput: 10  # 10 tx per block
    # more spammers when needed
```

---------

Co-authored-by: Barnabas Busa <[email protected]>
Hi! I fixed broken links in `docs/architecture.md` caused by recent
changes in the repo structure. The `participant_network/` directory was
removed, so all links were updated to point directly to the correct
paths in `src/`.

---------

Signed-off-by: Cypher Pepe <[email protected]>
Signed-off-by: Barnabas Busa <[email protected]>
Co-authored-by: Barnabas Busa <[email protected]>
… group (ethpandaops#995)

Bumps the actions group with 1 update:
[crate-ci/typos](https://github.com/crate-ci/typos).

Updates `crate-ci/typos` from 1.31.1 to 1.32.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.32.0</h2>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>v1.31.2</h2>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1248">March
2025</a> changes</li>
</ul>
<h2>[1.30.3] - 2025-03-24</h2>
<h3>Features</h3>
<ul>
<li>Support detecting <code>go.work</code> and <code>go.work.sum</code>
files</li>
</ul>
<h2>[1.30.2] - 2025-03-10</h2>
<h3>Features</h3>
<ul>
<li>Add <code>--highlight-words</code> and
<code>--highlight-identifiers</code> for easier debugging of config</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/0f0ccba9ed1df83948f0c15026e4f5ccfce46109"><code>0f0ccba</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/5cb94233a615fb61c4500572b64d22425e96099a"><code>5cb9423</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2af8019e8687956766fbe303524b7f9b820885dd"><code>2af8019</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/970eb5442de8ea11b6b0e84904a11eda611a65db"><code>970eb54</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1291">#1291</a>
from epage/may</li>
<li><a
href="https://github.com/crate-ci/typos/commit/e84064f2d66ab3e807cfa29a1e203f78e56e115e"><code>e84064f</code></a>
feat(dict): April 2025 updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/8dddd500291130802cbb593827be9d862181402c"><code>8dddd50</code></a>
chore(deps): Update compatible (<a
href="https://redirect.github.com/crate-ci/typos/issues/1289">#1289</a>)</li>
<li><a
href="https://github.com/crate-ci/typos/commit/3be83342e28b9421997e9f781f713f8dde8453d2"><code>3be8334</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/f16e5d44ec16bfba422e39e66c11d58fc1a3da76"><code>f16e5d4</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/e0927bd9d2433efaf2c8a998ad0434cb94304415"><code>e0927bd</code></a>
docs(action): Remove non-existent variables</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2dbcebf645e8918080b28c7eb1f913143a3426da"><code>2dbcebf</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1287">#1287</a>
from epage/dict</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/b1a1ef3893ff35ade0cfa71523852a49bfd05d19...0f0ccba9ed1df83948f0c15026e4f5ccfce46109">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.31.1&new-version=1.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The CPU limit on spamoor is limiting the number of v1 blob transactions
I can send on my machine (possibly because cell proofs are now computed
by the transaction sender). The memory limit is a secondary issue due to
the higher number of pending transactions.

I chose to parameterize max/min cpu/mem since I'd expect the appropriate
max will differ per-host, but let me know if you'd suggest something
different!

Tested with the below params:

```
spamoor_params:
  image: ethpandaops/spamoor:latest
  max_cpu: 4000
  max_mem: 3000
  spammers:
    - scenario: blob-combined
      config:
        throughput: 20
        sidecars: 2
        max_pending: 100
        blob_v1_percent: 100
        rebroadcast: 0
    - scenario: blob-combined
      config:
        throughput: 20
        sidecars: 2
        max_pending: 100
        blob_v1_percent: 100
        rebroadcast: 0
```

Co-authored-by: Barnabas Busa <[email protected]>
)

The [`blob-v1`](ethpandaops/spamoor#26) branch
has been merged, and the `ethpandaops/spamoor:latest` image has been
updated, so I think we can remove the `blob-v1` image now.

Tested with the following params to check that kurtosis pulled
`ethpandaops/spamoor:latest` and spamoor sent v0 transactions pre-fulu
and v1 transactions post-fulu:

```
network_params:
  electra_fork_epoch: 0
  fulu_fork_epoch: 1
  max_blobs_per_block_fulu: 64
  target_blobs_per_block_fulu: 32
additional_services:
  - dora
  - spamoor
spamoor_params:
  spammers:
    - scenario: blobs
      config:
        throughput: 8
        sidecars: 2
        max_pending: 40
        blob_v1_percent: 100
        rebroadcast: 0
```
barnabasbusa and others added 25 commits May 21, 2025 15:57
)

Partially fixes
ethpandaops#976 (Issue 1).

Indeed, in kubernetes deployment, the Blockscout frontend is not
reachable. With this fix, we can access blockscout-frontend.

In this PR, I also updated the default repo/image for Blockscout
backend, since they changed hosting 2 major versions ago.

---------

Signed-off-by: Mehdi Bechiri <[email protected]>
Signed-off-by: Barnabas Busa <[email protected]>
Co-authored-by: Barnabas Busa <[email protected]>
… group (ethpandaops#1058)

Bumps the actions group with 1 update:
[crate-ci/typos](https://github.com/crate-ci/typos).

Updates `crate-ci/typos` from 1.32.0 to 1.33.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.33.1</h2>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>v1.33.0</h2>
<h2>[1.33.0] - 2025-06-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1290">May
2025</a> changes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="http://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="http://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.33.1] - 2025-06-02</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Don't correct <code>wasn't</code> to
<code>wasm't</code></li>
</ul>
<h2>[1.33.0] - 2025-06-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1290">May
2025</a> changes</li>
</ul>
<h2>[1.32.0] - 2025-05-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1264">April
2025</a> changes</li>
</ul>
<h2>[1.31.2] - 2025-04-28</h2>
<h3>Fixes</h3>
<ul>
<li><em>(exclusion)</em> Don't confused emails as base64</li>
<li><em>(dict)</em> Correct <code>contamint</code> to
<code>contaminant</code>, not <code>contaminat</code></li>
<li><em>(dict)</em> Correct <code>contamints</code> to
<code>contaminants</code>, not <code>contaminats</code></li>
</ul>
<h3>Performance</h3>
<ul>
<li>Improve tokenization performance</li>
</ul>
<h2>[1.31.1] - 2025-03-31</h2>
<h3>Fixes</h3>
<ul>
<li><em>(dict)</em> Also correct <code>typ</code> to
<code>type</code></li>
</ul>
<h2>[1.31.0] - 2025-03-28</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1248">March
2025</a> changes</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/b1ae8d918b6e85bd611117d3d9a3be4f903ee5e4"><code>b1ae8d9</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/6c5d17de8e16370e7e1d8dd41c8dc0a7f22ea981"><code>6c5d17d</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/0a237ba81a86b72399a05f3441449ddeab9faf16"><code>0a237ba</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1311">#1311</a>
from epage/wasn</li>
<li><a
href="https://github.com/crate-ci/typos/commit/79920cf06905dd147d4e784ae17136d98c211083"><code>79920cf</code></a>
fix(dict): Don't correct <code>wasn't</code></li>
<li><a
href="https://github.com/crate-ci/typos/commit/e99b2b47d9910ae09f6e828594c33ab3e0936491"><code>e99b2b4</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2afc152754dd1bf58997ad87bcc84f7797bb52ab"><code>2afc152</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/544a19b4ae1a0814151fd081008bb9305abccdfc"><code>544a19b</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2e0ca28a9540837425705660401059467b721ab9"><code>2e0ca28</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1310">#1310</a>
from epage/may</li>
<li><a
href="https://github.com/crate-ci/typos/commit/94eb4e7b407daa7967ca1a23c72902898ab599f6"><code>94eb4e7</code></a>
feat(dict): May 2025 updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a4cce4ca70447aa8b294fc0eaada68193eeec1fa"><code>a4cce4c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1308">#1308</a>
from crate-ci/renovate/schemars-0.x</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/0f0ccba9ed1df83948f0c15026e4f5ccfce46109...b1ae8d918b6e85bd611117d3d9a3be4f903ee5e4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=crate-ci/typos&package-manager=github_actions&previous-version=1.32.0&new-version=1.33.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Conflicts:
#	README.md
#	src/blockscout/blockscout_launcher.star
#	src/el/reth/reth_launcher.star
#	src/package_io/constants.star
#	src/package_io/input_parser.star
#	src/package_io/sanity_check.star
#	src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star
#	static_files/genesis-generation-config/el-cl/values.env.tmpl
@qodo-code-review
Copy link

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Logic Error

The condition on line 260 checks if "mev_type" == constants.MOCK_MEV_TYPE but should check result["mev_type"] == constants.MOCK_MEV_TYPE. This will always evaluate to false, making the validation ineffective.

    "mev_type" == constants.MOCK_MEV_TYPE
    and input_args["participants"][0]["cl_type"] != constants.CL_TYPE.lighthouse
):
    fail(
        "Mock mev is only supported if the first participant is lighthouse client, please use a different client or set mev_type to 'flashbots', 'mev-rs' or 'commit-boost' or make the first participant lighthouse"
    )
Breaking Change

The removal of spamoor_blob_params and related functionality represents a significant breaking change that could affect existing configurations and deployments without proper migration guidance.

)
Version Mismatch

The version in version.txt shows 5.0.1 but the PR title indicates 1.4.3 - Local, creating confusion about the actual version being released.

5.0.1

@qodo-code-review
Copy link

qodo-code-review bot commented Jun 17, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix string comparison bug

The condition checks for string equality with "mev_type" instead of checking the
actual mev_type value. This will always evaluate to False since the string
"mev_type" is never equal to constants.MOCK_MEV_TYPE.

src/package_io/input_parser.star [259-265]

 if (
-    "mev_type" == constants.MOCK_MEV_TYPE
+    result["mev_type"] == constants.MOCK_MEV_TYPE
     and input_args["participants"][0]["cl_type"] != constants.CL_TYPE.lighthouse
 ):
     fail(
         "Mock mev is only supported if the first participant is lighthouse client, please use a different client or set mev_type to 'flashbots', 'mev-rs' or 'commit-boost' or make the first participant lighthouse"
     )

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 10

__

Why: The suggestion correctly identifies a critical bug where a string literal "mev_type" is compared instead of the variable result["mev_type"]. This logic error causes the validation check to always be false, preventing it from ever executing as intended.

High
Add null check for time value

Add validation to ensure osaka_time is not None before assigning it to the
configuration. This prevents potential runtime errors when the time value is
undefined.

src/spamoor/spamoor.star [37-43]

 if (
     "peerdas" in network_params.network
     or network_params.fulu_fork_epoch != constants.FAR_FUTURE_EPOCH
 ) and "blob" in spammer["scenario"]:
     if "config" not in spammer:
         spammer["config"] = {}
-    spammer["config"]["fulu_activation"] = osaka_time
+    if osaka_time is not None:
+        spammer["config"]["fulu_activation"] = osaka_time

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 5

__

Why: The suggestion correctly identifies that osaka_time could be None and proposes adding a check to prevent potential issues. This improves the robustness of the code, which is a valid and helpful change.

Low
Remove unnecessary format call

The empty string in the format call will result in an empty command line
argument when gcmode_archive is False. This creates an invalid command with an
empty string argument that could cause geth to fail or behave unexpectedly.

src/el/geth/geth_launcher.star [184]

-"{0}".format("--state.scheme=hash" if gcmode_archive else ""),
+"--state.scheme=hash" if gcmode_archive else "",

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 2

__

Why: The suggestion correctly points out that the .format() call is redundant. However, the proposed change is purely stylistic and does not fix the underlying potential issue of passing an empty string as a command-line argument, which was the main concern raised in the suggestion's description.

Low
General
Clarify nested ternary logic

The nested ternary operator logic is confusing and may not handle all cases
correctly. When gcmode_archive is True, it should use "--gcmode=archive", but
the current logic might not work as expected for all combinations.

src/el/geth/geth_launcher.star [216-221]

-"--syncmode=full"
-if network_params.network == constants.NETWORK_NAME.kurtosis
-and not gcmode_archive
-else "--syncmode=snap"
-if not gcmode_archive
-else "--gcmode=archive",
+"--gcmode=archive" if gcmode_archive else (
+    "--syncmode=full" if network_params.network == constants.NETWORK_NAME.kurtosis 
+    else "--syncmode=snap"
+),

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the nested ternary operator is complex and hard to read. The improved_code provides a much clearer and more maintainable equivalent by handling the primary condition (gcmode_archive) first, which significantly improves code readability and reduces the chance of logic errors.

Medium
Improve error message context

The error handling captures the curl exit code but doesn't provide meaningful
context about what failed. Consider adding more descriptive error messages to
help with debugging.

src/network_launcher/shadowfork.star [43]

-curl -s -f -o /shadowfork/latest_block.json "$URL" || { echo "Curl failed with exit code $?"; exit 1; }
+curl -s -f -o /shadowfork/latest_block.json "$URL" || { echo "Failed to fetch block data from $URL (curl exit code: $?)"; exit 1; }

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why: The suggestion correctly points out that the error message for the curl command lacks context. Adding the $URL to the error message, as proposed, significantly improves debuggability by showing which URL failed to be fetched. This is a valuable improvement for maintainability.

Low
  • Update

@tiljrd tiljrd merged commit 0beecbd into main Jun 17, 2025
1 of 14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.