Skip to content

Conversation

@Ferret-san
Copy link
Collaborator

Overview

Updates the main branch to a v3.7.5 compatible release

eljobe and others added 30 commits July 30, 2025 13:08
Try NOT running the nitro CodeQL build in parallel
…tylus-tests

Increase EVM Call timeout to avoid flaky CI
…_calldata

Blob prices should not be used if parent chain doesn't return blob price
joshuacolvin0 and others added 29 commits August 18, 2025 16:52
…3509)

Co-authored-by: Pepper Lebeck-Jobe <pepper@offchainlabs.com>
There was a bug where if a duplicate message was processed at a segment
boundary, then it would cause an empty segment to be inserted, which
broke the invariants of the backlog data structure.

The invariants being violated wer:
1. Monotonic sequence number order
2. Segment Continuity: segment[n].End() + 1 == segment[n+1].Start()
3. Non-empty Segments: All segments should contain messages
4. Lookup Uniqueness: Each sequence number maps to exactly one segment
5. Cumulative Size Ordering: Later messages have higher cumulative sizes

This bug would break most operations on the backlog (eg Get() which uses
a binary search) and cause them to have unpredictable behavior.
…lstate-not-in-chain-should-be-a-fatal-error-for

Return a fatal error instead of stopping the StopWaiter in case of Er…
…ize-multigas-3.7.0-backport

Improve CPU performance when processing blocks
Also removed deprecated v42-rc.1 since no one should ever use it
…ckport

backport adding consensus v41 to Dockerfile
…3596)

* Test Genesis assertion on nitro init

* revert go.mod changes
(cherry picked from commit 6f3d900)
…firm_backport

Make sure to retry fast confirmation on failure
…port

stylus target: infer support of previous sse versions from more advanced ones
The tests which use the releases package were failing because we have had more than 50 non-prerelease releases since the last consensus release, and it was only fetching the first 50 pages from the GitHub API.
* remove support for pre-stylus validation

pre-stylus validation is no longer needed, and does create problems.

* fail if stylus support not found instead of assuming pre-stylus

* ckerfile changes

---------

Co-authored-by: Tsahi Zidenberg <65945052+tsahee@users.noreply.github.com>
This change adds support for the new beacon chain endpoint
`/eth/v1/beacon/blobs/{block_id}` introduced in Fusaka while maintaining
backward compatibility with the legacy endpoint
`/eth/v1/beacon/blob_sidecars/{slot}`. block_id can be a slot so Nitro
just uses slot.

The new endpoint supports server-side filtering by versioned hash via
query parameters. Since the Arbitrum sequencer inbox message contains
the versioned hashes of the blobs that were posted, we can include those
in the query.

Key changes:
- Added `UseLegacyEndpoint` flag to BlobClientConfig to control which
  endpoint to use
- Created new `GetBlobsBySlot()` public method for direct slot-based
  blob fetching
- Implemented `getBlobs()` method for the new endpoint with versioned
  hash verification
- Updated `beaconRequest()` to support query parameters for filtering
- Added KZG commitment verification when versioned hashes are provided

Created `blobtool` CLI utility for testing both endpoints:
```
 # Fetch specific blob using new endpoint (default)
 blobtool fetch --beacon-url=<url> --slot=<slot> --versioned-hashes=<hash>

 # Fetch using legacy endpoint (requires versioned hashes)
 blobtool fetch --beacon-url=<url> --slot=<slot> --versioned-hashes=<hash> --use-legacy-endpoint

 # Compare both endpoints side-by-side
 blobtool fetch --beacon-url=<url> --slot=<slot> --versioned-hashes=<hash> --compare-endpoints
```

The new endpoint is used by default, with automatic fallback behavior
maintained through the existing secondary beacon URL mechanism.

Spec reference: https://github.com/ethereum/beacon-APIs/blob/master/apis/beacon/blobs/blobs.yaml
…ts-support-beacon-blob-api

Add support for new beacon chain /blobs endpoint
Comment on lines +25 to +70
name: Build and Test Bold
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v5
with:
submodules: true

- name: Setup node/yarn
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'yarn'
cache-dependency-path: "**/yarn.lock"

- name: Install go
uses: actions/setup-go@v5
with:
go-version: 1.24.x

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
cache: false
version: v1.0.0

- name: AbiGen (nitro)
run: make contracts

- name: Get dependencies
working-directory: ./bold
run: |
go get -v -t -d ./...
- name: Build
working-directory: ./bold
run: go build -v ./...

- name: Test
working-directory: ./bold
run: ANVIL=$(which anvil) go test -v -covermode=atomic -coverprofile=coverage.out -timeout=20m ./...

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 2 months ago

General fix:
Add a permissions: block specifying the least privilege required for the workflow or its jobs. For build and test jobs, the minimal permission is usually contents: read. This can be set for the entire workflow (applies to all jobs unless overridden) or specifically for the job flagged by CodeQL.

Best way to fix:
Add permissions: contents: read at the top level of the workflow file, immediately after the workflow name, or to the build job itself (if you want granular control). The idiomatic approach is to set it at the workflow root unless jobs need different scopes.

Edits required:

  • In .github/workflows/bold.yml, add

    permissions:
      contents: read

    after line 1.

  • No other imports, methods, or changes are required.


Suggested changeset 1
.github/workflows/bold.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/bold.yml b/.github/workflows/bold.yml
--- a/.github/workflows/bold.yml
+++ b/.github/workflows/bold.yml
@@ -1,4 +1,6 @@
 name: Go
+permissions:
+  contents: read
 
 on:
   workflow_dispatch:
EOF
@@ -1,4 +1,6 @@
name: Go
permissions:
contents: read

on:
workflow_dispatch:
Copilot is powered by AI and may make mistakes. Always verify output.
go-version: 1.24.x

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Go' step
Uses Step
uses 'foundry-rs/foundry-toolchain' with ref 'v1', not a pinned commit hash
run: ANVIL=$(which anvil) go test -v -covermode=atomic -coverprofile=coverage.out -timeout=20m ./...

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Go' step
Uses Step
uses 'codecov/codecov-action' with ref 'v5', not a pinned commit hash

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Go tests CI' step
Uses Step
uses 'codecov/codecov-action' with ref 'v5', not a pinned commit hash
restore-keys: ${{ runner.os }}-buildx-
- name: Build nitro-node docker
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Docker build CI' step
Uses Step
uses 'docker/build-push-action' with ref 'v6', not a pinned commit hash
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Build nitro-node-dev docker
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Docker build CI' step
Uses Step
uses 'docker/build-push-action' with ref 'v6', not a pinned commit hash
with:
go-version: "stable"
- id: list
uses: shogo82148/actions-go-fuzz/list@v1

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'fuzz' step
Uses Step: list
uses 'shogo82148/actions-go-fuzz/list' with ref 'v1', not a pinned commit hash
- uses: actions/setup-go@v5
with:
go-version: "stable"
- uses: shogo82148/actions-go-fuzz/run@v1

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'fuzz' step
Uses Step
uses 'shogo82148/actions-go-fuzz/run' with ref 'v1', not a pinned commit hash

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Nightly CI' step
Uses Step
uses 'codecov/codecov-action' with ref 'v5', not a pinned commit hash
- name: Upload coverage to Codecov
if: steps.changed-files.outputs.any_changed == 'true'
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v5

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Nightly CI' step
Uses Step
uses 'codecov/codecov-action' with ref 'v5', not a pinned commit hash
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.