Skip to content

feat: support p2p-only followers without DA#3386

Merged
tac0turtle merged 5 commits into
mainfrom
marko/p2p-only-follower-no-da
Jul 16, 2026
Merged

feat: support p2p-only followers without DA#3386
tac0turtle merged 5 commits into
mainfrom
marko/p2p-only-follower-no-da

Conversation

@tac0turtle

@tac0turtle tac0turtle commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Overview

Summary by CodeRabbit

  • New Features
    • Nodes can now run without a Data Availability service, syncing via P2P only.
    • Aggregator nodes now require an explicit Data Availability endpoint.
    • Force-inclusion now enforces Data Availability being enabled before starting.
  • Bug Fixes
    • Data Availability-dependent startup, retrieval, and worker activity are skipped when Data Availability isn’t configured.
    • Sync-related DA components are no longer created when not applicable.
  • Documentation
    • Updated Data Availability config/CLI flag docs and changed the default to empty (P2P-only followers).
  • Tests
    • Added/updated coverage for operation without Data Availability and for missing DA validation in aggregator mode.

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

The latest Buf updates on your PR. Results from workflow CI / buf-check (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed⏩ skipped✅ passed⏩ skippedJul 16, 2026, 9:57 AM

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b61e9dec-5cd2-4af9-a8f7-2b54bda6f202

📥 Commits

Reviewing files that changed from the base of the PR and between febec86 and 3cf718d.

📒 Files selected for processing (8)
  • apps/evm/cmd/run.go
  • apps/testapp/cmd/run.go
  • docs/learn/config.md
  • pkg/cmd/run_node.go
  • pkg/cmd/run_node_test.go
  • pkg/config/config.go
  • pkg/config/config_test.go
  • test/e2e/base_test.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/cmd/run_node_test.go
  • docs/learn/config.md
  • apps/evm/cmd/run.go

📝 Walkthrough

Walkthrough

DA initialization is now conditional on node mode and address configuration. Followers without DA sync through P2P, aggregators require a DA address, and DA-dependent sync components are omitted when unavailable.

Changes

Conditional DA runtime

Layer / File(s) Summary
DA configuration contract
pkg/config/..., docs/learn/..., docs/reference/..., CHANGELOG.md
DA defaults to an empty address, DAEnabled() excludes light nodes, aggregator startup validates DA configuration, and tests and documentation reflect the new behavior.
Conditional startup wiring
pkg/cmd/..., apps/evm/..., apps/testapp/..., test/e2e/...
Node and application commands create DA clients only when enabled, reject force inclusion without DA, skip sequencer creation for non-aggregators, and configure DA explicitly in end-to-end startup tests.
DA-optional sync components
block/...
Submitter, retriever, forced-inclusion, and follower components are initialized only with a DA client; nil-client behavior is tested.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant RunCmd
  participant NodeConfig
  participant DAClient
  participant Syncer
  RunCmd->>NodeConfig: ParseStartConfig()
  RunCmd->>NodeConfig: DAEnabled()
  RunCmd->>DAClient: create client when enabled
  RunCmd->>Syncer: pass DA client or nil
  Syncer->>Syncer: start DA workers only when client exists
Loading

Suggested labels: T:testing

Suggested reviewers: auricom, julienrbrt

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description only contains the template comments and lacks the required Overview content. Add an Overview section with the PR context, goal, rationale, and any issue or tl;dr link.
Docstring Coverage ⚠️ Warning Docstring coverage is 23.08% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: enabling P2P-only followers without DA.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch marko/p2p-only-follower-no-da

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-16 10:29 UTC

@tac0turtle tac0turtle changed the title support p2p-only followers without DA chore: support p2p-only followers without DA Jul 15, 2026
@tac0turtle tac0turtle changed the title chore: support p2p-only followers without DA feat: support p2p-only followers without DA Jul 15, 2026

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pkg/cmd/run_node.go (1)

161-163: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the DA-disabled log accurate for light nodes.

DAEnabled() is also false for light nodes that do have a configured address, so "DA address is not configured" is misleading. Use a neutral message such as "DA disabled; syncing through P2P only" or distinguish the two cases.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@pkg/cmd/run_node.go` around lines 161 - 163, Update the else branch around
DAEnabled() in the node startup flow to use a neutral log message that remains
accurate for both light nodes with a configured DA address and nodes without
one, such as indicating that DA is disabled and syncing continues through P2P
only.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/cmd/run_node.go`:
- Around line 154-155: Trim the DA address before passing it to blob client
construction in the node startup flow, using the value checked by
nodeConfig.DAEnabled(). Apply the same normalization at pkg/cmd/run_node.go
lines 154-155 and apps/testapp/cmd/run.go line 128; also update
apps/evm/cmd/run.go lines 63-64 as an affected site, ensuring NewWSClient
receives the trimmed address.

---

Outside diff comments:
In `@pkg/cmd/run_node.go`:
- Around line 161-163: Update the else branch around DAEnabled() in the node
startup flow to use a neutral log message that remains accurate for both light
nodes with a configured DA address and nodes without one, such as indicating
that DA is disabled and syncing continues through P2P only.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b3ebb279-8aca-4987-87b0-cf4e85db0153

📥 Commits

Reviewing files that changed from the base of the PR and between b72b7bd and b624b73.

📒 Files selected for processing (11)
  • apps/evm/cmd/run.go
  • apps/testapp/cmd/init_test.go
  • apps/testapp/cmd/run.go
  • docs/learn/config.md
  • docs/learn/specs/da.md
  • docs/reference/specs/da.md
  • pkg/cmd/run_node.go
  • pkg/cmd/run_node_test.go
  • pkg/config/config.go
  • pkg/config/config_test.go
  • pkg/config/defaults.go
💤 Files with no reviewable changes (1)
  • pkg/config/defaults.go
🚧 Files skipped from review as they are similar to previous changes (4)
  • docs/reference/specs/da.md
  • pkg/config/config_test.go
  • docs/learn/config.md
  • apps/evm/cmd/run.go

Comment thread pkg/cmd/run_node.go Outdated
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 42.62295% with 35 lines in your changes missing coverage. Please review.
✅ Project coverage is 62.33%. Comparing base (e437a62) to head (3cf718d).

Files with missing lines Patch % Lines
block/internal/syncing/syncer.go 4.54% 21 Missing ⚠️
pkg/cmd/run_node.go 25.00% 11 Missing and 1 partial ⚠️
block/components.go 88.88% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3386   +/-   ##
=======================================
  Coverage   62.33%   62.33%           
=======================================
  Files         120      120           
  Lines       13425    13444   +19     
=======================================
+ Hits         8368     8380   +12     
- Misses       4118     4124    +6     
- Partials      939      940    +1     
Flag Coverage Δ
combined 62.33% <42.62%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tac0turtle tac0turtle merged commit 19d3a86 into main Jul 16, 2026
33 checks passed
@tac0turtle tac0turtle deleted the marko/p2p-only-follower-no-da branch July 16, 2026 10:27
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