Skip to content

Conversation

@Manav-Aggarwal
Copy link
Member

@Manav-Aggarwal Manav-Aggarwal commented Jun 12, 2025

Overview

  • Adds an EVM Full Node setup
  • Uses a new docker image I pushed to ghcr: ghcr.io/rollkit/rollkit-reth
  • Tests in execution_test.go work now with a custom transaction payload and an EVM full node syncs transactions properly too
  • Made a custom reth node for rollkit here: Add Rollkit crate to Reth Manav-Aggarwal/reth#1, need to extract it to the Rollkit org

Summary by CodeRabbit

  • New Features

    • Added documentation and Docker Compose support for running a Rollkit EVM full node, including JWT secret management and persistent log storage.
  • Bug Fixes

    • Improved transaction ordering and deterministic processing in transaction execution and retrieval.
  • Documentation

    • Updated instructions for running sequencer and full nodes, clarified service naming, and improved setup guidance in the README.
  • Chores

    • Updated Docker images, service names, and dependencies in Docker Compose files.
    • Removed unused dependencies from module configuration.
  • Tests

    • Enhanced test determinism and verification for transaction execution and state root consistency.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jun 12, 2025

Walkthrough

This update revises the EVM single node Docker Compose and documentation, renaming services, updating images, and restructuring commands. It introduces a new Docker Compose setup for a full node, enhances transaction sorting and execution logic, and improves test determinism. Additional logging and dependency updates are included.

Changes

Files/Paths Change Summary
apps/evm/single/README.md Updated instructions: renamed "Aggregator Node" to "Sequencer Node," clarified setup steps, and added a new section detailing full node setup and synchronization.
apps/evm/single/docker-compose.yml
execution/evm/docker/docker-compose.yml
Renamed reth service to rollkit-reth, updated container image to ghcr.io/rollkit/lumen:latest, changed command structure, added --rollkit.enable flag, updated environment variables and dependencies, and removed entrypoint.
execution/evm/docker/docker-compose-full-node.yml Added new Docker Compose file for full node setup, including JWT secret initialization and rollkit-reth-full-node service with persistent log storage and detailed configuration.
execution/evm/execution.go Improved transaction sorting and deterministic execution, refactored transaction encoding, updated forkchoice logic to use stored hashes, flattened payload attributes, added delay before payload fetch, used zero hash for parentBeaconBlockRoot, initialized block hashes in constructor, and updated imports.
execution/evm/execution_test.go Enhanced test determinism: synchronized timestamps and state roots between build and sync phases, tightened transaction count assertions, reduced transaction count in TestSubmitTransaction, and ensured proper client closure.
block/sync.go Added debug log field to report transaction count in data events within the sync loop.
execution/evm/go.mod Removed replace directive for go-ethereum and two indirect dependencies.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SequencerNode
    participant EVM_Layer
    participant FullNode

    User->>SequencerNode: Start Sequencer (per README)
    SequencerNode->>EVM_Layer: Start EVM Layer via Docker Compose
    User->>FullNode: Start Full Node (per new instructions)
    FullNode->>EVM_Layer: Start EVM Layer via docker-compose-full-node.yml
    FullNode->>SequencerNode: Copy genesis file, get P2P address
    FullNode->>FullNode: Set environment, start node with correct flags
    FullNode->>EVM_Layer: Connect to EVM Engine and ETH endpoints
Loading

Possibly related PRs

  • rollkit/rollkit#2336: Also modifies Docker Compose configuration and README documentation for the EVM sequencer node setup, overlapping with this PR's deployment changes.
  • rollkit/rollkit#2258: Introduces initial Docker Compose setup for the EVM single node, related to this PR’s reorganization and extension of the setup.
  • rollkit/rollkit#2330: Adds command-line flags and initialization logic to the reth node service, related to service configuration changes in this PR.

Suggested reviewers

  • tac0turtle
  • julienrbrt
  • randygrok

Poem

🐇
Compose files shuffled, services renamed,
Full node support now proudly proclaimed.
Transactions sorted, tests align,
Logs more verbose—oh, how they shine!
With Docker and code both fresh and bright,
The EVM hops into the light.
—Your friendly code rabbit


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Contributor

github-actions bot commented Jun 12, 2025

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

BuildFormatLintBreakingUpdated (UTC)
✅ passed⏩ skipped✅ passed✅ passedJun 25, 2025, 4:42 AM

@codecov
Copy link

codecov bot commented Jun 12, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 73.08%. Comparing base (8bb1ba7) to head (6fb55c0).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2373      +/-   ##
==========================================
+ Coverage   72.95%   73.08%   +0.13%     
==========================================
  Files          67       67              
  Lines        6318     6319       +1     
==========================================
+ Hits         4609     4618       +9     
+ Misses       1314     1307       -7     
+ Partials      395      394       -1     
Flag Coverage Δ
combined 73.08% <100.00%> (+0.13%) ⬆️

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

☔ View full report in Codecov by Sentry.
📢 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.

@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch 2 times, most recently from 4f9c60d to 34ddd64 Compare June 16, 2025 07:20
@Manav-Aggarwal Manav-Aggarwal requested a review from randygrok June 16, 2025 07:30
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds an EVM Full Node setup while updating various components to integrate the new rollkit-reth image and improve transaction processing and block synchronization.

  • Updated go.mod to remove unnecessary dependencies and replace directives.
  • Refactored test execution to add a built-in timestamp mechanism and store state roots during build and sync phases.
  • Revised execution client logic for encoding transactions and enhanced docker-compose configurations for both single node and full node deployments.

Reviewed Changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
execution/evm/go.mod Removed replace directive and unused dependencies.
execution/evm/execution_test.go Added timestamp and state root tracking for improved test ordering.
execution/evm/execution.go Modified transaction payload handling, added sorting, and updated forkchoice update handling.
execution/evm/docker/docker-compose.yml Renamed service and updated image reference to rollkit-reth.
execution/evm/docker/docker-compose-full-node.yml Added full node setup using rollkit-reth.
block/sync.go Logged transaction count for better block synchronization tracking.
apps/evm/single/docker-compose.yml Updated service naming and image version for EVM single node.
apps/evm/single/README.md Adjusted instructions to reflect the new sequencer and full node setup.
Comments suppressed due to low confidence (1)

execution/evm/execution.go:208

  • It would be helpful to add additional documentation clarifying the rationale for using a zero hash for the parentBeaconBlockRoot, ensuring future maintainers understand this intentional fallback.
"parentBeaconBlockRoot": common.Hash{}.Hex(), // Use zero hash for rollkit

@Manav-Aggarwal Manav-Aggarwal requested a review from alpe June 16, 2025 07:30
@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch 2 times, most recently from f5ca3a6 to ffa67a5 Compare June 16, 2025 07:38
@Manav-Aggarwal Manav-Aggarwal marked this pull request as ready for review June 16, 2025 07:46
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (1)
execution/evm/execution.go (1)

226-227: 🛠️ Refactor suggestion

Consider replacing fixed sleep with robust synchronization.

Using a fixed 10ms delay for synchronization is brittle and may fail under different system loads or network conditions. Consider implementing a polling mechanism that checks payload readiness or using engine API events for proper synchronization.

Replace the fixed delay with a polling mechanism:

-// Small delay to allow payload building to complete
-time.Sleep(10 * time.Millisecond)
+// Poll for payload readiness with timeout
+const maxRetries = 10
+const retryDelay = 5 * time.Millisecond
+for i := 0; i < maxRetries; i++ {
+    // Check if payload is ready (this is a simplified example)
+    // You may need to implement a proper readiness check based on your engine API
+    if i > 0 {
+        time.Sleep(retryDelay)
+    }
+}
🧹 Nitpick comments (7)
execution/evm/docker/docker-compose.yml (1)

38-40: Consider enabling default logging environment.

Rather than leaving RUST_LOG and RUST_BACKTRACE commented out, consider exposing them via a .env file or parameters for easier debugging.

apps/evm/single/README.md (5)

10-13: Clarify <path_to> placeholder.

Replace <path_to> with a relative path (e.g., ./execution/evm/docker) or explicitly state the repo root to avoid confusion.


18-21: Fix markdown fenced code formatting.

Add blank lines before and after fenced code blocks and specify the language (e.g., ```bash) to satisfy markdownlint rules.


39-39: Nitpick: duplicate placeholder note.

The note on line 39 repeats guidance—consider consolidating it with the earlier <path_to> clarification to reduce redundancy.


68-72: Consider quoting P2P_ID in export.

Wrap the peer ID value in quotes if it contains special characters, or validate it matches the logged format.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


75-85: Nitpick: backslash continuation formatting.

Remove the extra space before the backslash on line 76 and align the subsequent flags for consistency.

execution/evm/docker/docker-compose-full-node.yml (1)

29-33: Suggest adding comments for port offsets.

Since external ports (9011, 8555, etc.) differ from internal ones, annotate them to clarify they're intentionally offset to avoid conflicts.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c5ab25 and c8af460.

⛔ Files ignored due to path filters (1)
  • execution/evm/go.sum is excluded by !**/*.sum
📒 Files selected for processing (8)
  • apps/evm/single/README.md (3 hunks)
  • apps/evm/single/docker-compose.yml (3 hunks)
  • block/sync.go (1 hunks)
  • execution/evm/docker/docker-compose-full-node.yml (1 hunks)
  • execution/evm/docker/docker-compose.yml (2 hunks)
  • execution/evm/execution.go (6 hunks)
  • execution/evm/execution_test.go (8 hunks)
  • execution/evm/go.mod (0 hunks)
💤 Files with no reviewable changes (1)
  • execution/evm/go.mod
🧰 Additional context used
🧬 Code Graph Analysis (1)
execution/evm/execution_test.go (1)
execution/evm/test_helpers.go (2)
  • GetRandomTransaction (125-149)
  • SubmitTransaction (152-160)
🪛 markdownlint-cli2 (0.17.2)
apps/evm/single/README.md

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

⏰ Context from checks skipped due to timeout of 90000ms (5)
  • GitHub Check: test / Run Integration Tests
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary
🔇 Additional comments (22)
block/sync.go (1)

80-85: Approve addition of transaction count in debug logs.

Including the "txs" field improves observability of data processing without altering behaviour.

execution/evm/docker/docker-compose.yml (4)

1-3: Approve project name update.

Setting name: "rollkit-reth" aligns the Compose project name with the renamed service.


21-24: Approve service rename and image update.

Renaming reth to rollkit-reth and updating to ghcr.io/rollkit/rollkit-reth:v0.1.1 follows repository conventions.
Ensure the specified image tag exists in the registry.


29-33: Approve clarified port mappings.

The added comments for metrics, HTTP RPC, Engine API, and WebSocket RPC improve readability.


44-46: Approve updated entrypoint command.

Switching to rollkit-reth node with the necessary flags is consistent with the updated image.

apps/evm/single/README.md (2)

51-54: Approve new full node section.

Introducing the "Rollkit EVM Full Node" steps enriches the documentation and guides users through setup.


55-63: Verify path consistency for config directories.

Ensure the source (~/.evm-single/config/genesis.json) and destination (~/.evm-single-full/config/genesis.json) match the --home flags to prevent misconfiguration.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

execution/evm/docker/docker-compose-full-node.yml (6)

1-3: Approve Docker Compose project naming.

Defining name: "rollkit-reth-full-node" is consistent with the service naming pattern.


4-20: Approve JWT initialization service.

The jwt-init-full-node container reliably generates and health-checks the JWT secret before the node starts.


21-28: Approve rollkit-reth-full-node service basics.

Container naming, restart policy, image reference, and dependency on JWT init are correctly configured.


35-37: Approve volume mounts.

Mounting chain data, JWT secret, and the logs-full-node volume ensures proper persistence and access rights.


38-60: Approve full-node entrypoint configuration.

The rollkit-reth node invocation and flags mirror the sequencer setup for parity.


62-65: Approve log volume declaration.

Defining logs-full-node with a local driver is suitable for persistent logging.

apps/evm/single/docker-compose.yml (4)

4-7: Approve rollkit-reth service rename and image bump.

Updating the service name and image version to v0.1.1 aligns with the other Compose files.


21-24: Approve updated entrypoint command.

Switching to rollkit-reth node and updating flags matches the execution Compose configuration.


52-54: Approve rollkit-evm-single image version update.

Bumped to v0.1.6 to reflect the latest release.


63-64: Approve environment variable updates.

Pointing EVM_ENGINE_URL and EVM_ETH_URL to the rollkit-reth service is correct.

execution/evm/execution_test.go (3)

56-58: LGTM! Good test data organization.

The addition of these slices to store payloads, timestamps, and state roots between the build and sync phases enables proper deterministic testing and verification.


135-135: Excellent improvements to test assertions!

The change from GreaterOrEqual to exact equality check for transaction count provides stronger verification. Combined with the state root matching between build and sync phases, this ensures true deterministic execution and replay capability.

Also applies to: 200-205


270-270: Good test optimizations!

  • Proper resource cleanup with defer rpcClient.Close() prevents connection leaks.
  • Reducing transactions from 5000 to 100 per iteration improves test performance while maintaining adequate coverage.

Also applies to: 283-283

execution/evm/execution.go (2)

142-170: Well-implemented deterministic transaction ordering!

The sorting logic properly handles nonce keys as integers with a string fallback, ensuring consistent transaction ordering across different execution contexts. This is crucial for deterministic state root generation.


189-196: Solid implementation of forkchoice state management!

The mutex-protected access to current block hashes ensures thread safety, and the rollkit-compatible payload attributes structure with proper camelCase naming follows JSON conventions correctly. The use of zero hash for parentBeaconBlockRoot is appropriately documented.

Also applies to: 200-217

Comment on lines +55 to 83
rollkit-reth:
condition: service_started
local-da:
condition: service_started
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Raise: verify depends_on conditions.

In Compose v3.8, condition: service_started is not supported locally (only Swarm); use healthchecks with condition: service_healthy or custom wait logic.

🤖 Prompt for AI Agents
In apps/evm/single/docker-compose.yml around lines 55 to 58, the use of
'condition: service_started' under 'depends_on' is not supported in Compose v3.8
for local environments. Replace 'condition: service_started' with healthchecks
for the respective services and update the condition to 'service_healthy'.
Define appropriate healthcheck configurations for the services to ensure they
are fully ready before dependent services start.

@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch from c8af460 to 5319f1b Compare June 24, 2025 07:09
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
apps/evm/single/README.md (2)

64-71: Missing fenced-block language & blank lines

The log snippet is enclosed in triple back-ticks without a language identifier and without a blank line before/after, tripping markdown-lint rules (MD031/MD040). Add a blank line and annotate it as text (or bash).

-```
+```text
 ...

---

`10-14`: **Indentation of nested list breaks Markdown rendering**

Lines 12–14 are intended to be a sub-list of “1. Both EVM and DA layers …” but lack the required two-space indentation, so GitHub renders them as a *new* top-level list. Add two spaces in front of `1.`/`2.` or switch to bullet `-`.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between c8af460c7b34eaac8f69fa37eaf4085c534fe9d9 and 5319f1bfe190e98eeed01cd60ae02b704b08893a.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `execution/evm/go.sum` is excluded by `!**/*.sum`

</details>

<details>
<summary>📒 Files selected for processing (8)</summary>

* `apps/evm/single/README.md` (3 hunks)
* `apps/evm/single/docker-compose.yml` (3 hunks)
* `block/sync.go` (1 hunks)
* `execution/evm/docker/docker-compose-full-node.yml` (1 hunks)
* `execution/evm/docker/docker-compose.yml` (2 hunks)
* `execution/evm/execution.go` (6 hunks)
* `execution/evm/execution_test.go` (8 hunks)
* `execution/evm/go.mod` (0 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* execution/evm/go.mod

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (6)</summary>

* block/sync.go
* execution/evm/docker/docker-compose.yml
* execution/evm/execution_test.go
* execution/evm/docker/docker-compose-full-node.yml
* execution/evm/execution.go
* apps/evm/single/docker-compose.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>apps/evm/single/README.md</summary>

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (6)</summary>

* GitHub Check: test / Build All Rollkit Binaries
* GitHub Check: test / Run Unit Tests
* GitHub Check: test / Build Rollkit EVM Single Docker Image
* GitHub Check: test / Build Rollkit Docker Image
* GitHub Check: Analyze (go)
* GitHub Check: Summary

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Copy link
Contributor

@tac0turtle tac0turtle left a comment

Choose a reason for hiding this comment

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

im working on fixing the docker system in lumen, once we have the docker system pushed lets update this and merge it

@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch from 5319f1b to f65d54c Compare June 24, 2025 16:14
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (2)
apps/evm/single/README.md (2)

76-78: Trailing whitespace breaks line-continuation & hard-coded home path remains
(Previously flagged, still unresolved)

  1. A space after the back-slash stops the line-continuation, causing bash: \ : command not found.
  2. Embedding /Users/manav hurts portability.
-    ./evm-single start \ 
-       --home /Users/manav/.evm-single-full-node \
+    ./evm-single start \
+       --home ~/.evm-single-full-node \

57-62: Wrong destination directory – full node fails to boot

cp ~/.evm-single/config/genesis.json ~/.evm-single-full/config/genesis.json copies the file into a directory that doesn’t match the --home ~/.evm-single-full-node flag used later.
The full node will start with an empty genesis.json and immediately exit.

-    cp ~/.evm-single/config/genesis.json ~/.evm-single-full/config/genesis.json 
+    cp ~/.evm-single/config/genesis.json ~/.evm-single-full-node/config/genesis.json
🧹 Nitpick comments (2)
apps/evm/single/README.md (2)

12-14: Rename Reth reference to rollkit-reth for consistency

The Docker image and service were renamed in this PR, yet the README still instructs users to “run Reth …”.
This can confuse newcomers who will look for an image that no longer exists.

-   1. For the EVM layer, Reth can be conveniently run using `docker compose` from <path_to>/execution/evm/docker.
+   1. For the EVM layer, the `rollkit-reth` client can be run with `docker compose` from <path_to>/execution/evm/docker.

64-71: Code-block lint: missing blank lines & language identifier

Markdown-lint flags (MD031, MD040) are correct; add blank lines around the fenced block and specify text (or omit) to silence the warnings and improve readability.

-```
+```text

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 5319f1bfe190e98eeed01cd60ae02b704b08893a and f65d54c5b3e1a6b7782dc8cf185487fd13f0147e.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `execution/evm/go.sum` is excluded by `!**/*.sum`

</details>

<details>
<summary>📒 Files selected for processing (8)</summary>

* `apps/evm/single/README.md` (3 hunks)
* `apps/evm/single/docker-compose.yml` (3 hunks)
* `block/sync.go` (1 hunks)
* `execution/evm/docker/docker-compose-full-node.yml` (1 hunks)
* `execution/evm/docker/docker-compose.yml` (2 hunks)
* `execution/evm/execution.go` (6 hunks)
* `execution/evm/execution_test.go` (8 hunks)
* `execution/evm/go.mod` (0 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* execution/evm/go.mod

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (6)</summary>

* block/sync.go
* execution/evm/docker/docker-compose.yml
* execution/evm/execution_test.go
* execution/evm/docker/docker-compose-full-node.yml
* execution/evm/execution.go
* apps/evm/single/docker-compose.yml

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

<details>
<summary>apps/evm/single/README.md</summary>

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

---

64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

---

69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (6)</summary>

* GitHub Check: test / Run Unit Tests
* GitHub Check: test / Build All Rollkit Binaries
* GitHub Check: test / Build Rollkit EVM Single Docker Image
* GitHub Check: test / Build Rollkit Docker Image
* GitHub Check: Analyze (go)
* GitHub Check: Summary

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch from f65d54c to 49dbf07 Compare June 24, 2025 18:14
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (2)
apps/evm/single/README.md (2)

61-62: Destination path is still wrong – the full node will not see the genesis file
(duplicate of a previous review)

The cp command writes into ~/.evm-single-full/…, but the node is initialised with --home ~/.evm-single-full-node. This mismatch prevents the full node from finding genesis.json and it fails to start.

-    cp ~/.evm-single/config/genesis.json ~/.evm-single-full/config/genesis.json 
+    cp ~/.evm-single/config/genesis.json ~/.evm-single-full-node/config/genesis.json

75-78: Trailing back-slash whitespace + hard-coded home path break the start command
(duplicate of a previous review)

  1. There is a stray space after the line-continuation back-slash that makes bash treat “\ ” as a command.
  2. An absolute /Users/manav/... path is not portable – earlier you used ~/.evm-single-full-node.
-    ./evm-single start \ 
-       --home /Users/manav/.evm-single-full-node \
+    ./evm-single start \
+       --home ~/.evm-single-full-node \
🧹 Nitpick comments (1)
apps/evm/single/README.md (1)

55-63: Add blank lines around fenced code blocks to satisfy markdown-lint and improve readability

markdownlint errors (MD031) are triggered because the fenced code blocks under items 2 & 3 aren’t surrounded by blank lines. Adding a single empty line before and after each ```bash / ``` block resolves the warnings and keeps the list rendering predictable.

-2. Initialize the full node:
-    ```bash
+2. Initialize the full node:
+
+    ```bash
     ./evm-single init --home ~/.evm-single-full-node
-    ```
+    ```
+
-3. Copy the genesis file from the sequencer node:
-    ```bash
+3. Copy the genesis file from the sequencer node:
+
+    ```bash
     cp ~/.evm-single/config/genesis.json ~/.evm-single-full/config/genesis.json 
-    ```
+    ```
+
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f65d54c and 49dbf07.

⛔ Files ignored due to path filters (1)
  • execution/evm/go.sum is excluded by !**/*.sum
📒 Files selected for processing (8)
  • apps/evm/single/README.md (3 hunks)
  • apps/evm/single/docker-compose.yml (3 hunks)
  • block/sync.go (1 hunks)
  • execution/evm/docker/docker-compose-full-node.yml (1 hunks)
  • execution/evm/docker/docker-compose.yml (2 hunks)
  • execution/evm/execution.go (6 hunks)
  • execution/evm/execution_test.go (8 hunks)
  • execution/evm/go.mod (0 hunks)
💤 Files with no reviewable changes (1)
  • execution/evm/go.mod
🚧 Files skipped from review as they are similar to previous changes (6)
  • block/sync.go
  • execution/evm/docker/docker-compose.yml
  • execution/evm/execution_test.go
  • execution/evm/docker/docker-compose-full-node.yml
  • apps/evm/single/docker-compose.yml
  • execution/evm/execution.go
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
apps/evm/single/README.md

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/evm/single/README.md (1)

75-78: Trailing \ whitespace + hard-coded absolute path will break the start command

The same problem was already flagged in a previous review but is still present:

  1. A space follows the line-continuation back-slash on line 76, so bash interprets it as \ (a command) and aborts.
  2. The /Users/manav/... prefix makes the docs non-portable and also disagrees with the ~/.evm-single-full-node path used earlier.
-    ./evm-single start \ 
-       --home /Users/manav/.evm-single-full-node \
+    ./evm-single start \
+       --home ~/.evm-single-full-node \

Please apply this fix (or an equivalent one) to avoid copy-paste failures.

🧹 Nitpick comments (1)
apps/evm/single/README.md (1)

56-71: Markdown lint violations around fenced code blocks

Several fenced blocks (56-58, 60-62, 64-66, 69-71) lack:

  1. A blank line before/after the fence (MD031).
  2. A language hint for the log snippet on 64-66 (MD040).

These renderings trip linters and sometimes break list numbering. Quickly fixable:

@@
-2. Initialize the full node:
-    ```bash
-    ./evm-single init --home ~/.evm-single-full-node
-    ```
+2. Initialize the full node:
+
+```bash
+./evm-single init --home ~/.evm-single-full-node
+```
@@
-4. Identify the sequencer node's P2P address from its logs. It will look similar to:
-    ```
+4. Identify the sequencer node's P2P address from its logs. It will look similar to:
+
+```text
@@
-    ```
+```

Apply similar spacing/language tweaks to the other blocks for clean Markdown.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 49dbf07 and fd4cb28.

📒 Files selected for processing (1)
  • apps/evm/single/README.md (3 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
apps/evm/single/README.md

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Run Integration Tests
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary
🔇 Additional comments (1)
apps/evm/single/README.md (1)

53-53: Consistent Docker CLI syntax

Earlier instructions use docker compose; here it switches to the legacy docker-compose. Pick one form (preferably docker compose) to avoid confusion.

[ suggest_optional_refactor ]

@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch from 568c6ad to a539254 Compare June 24, 2025 22:25
@Manav-Aggarwal Manav-Aggarwal force-pushed the manav/add_evm_full_node_docker branch from 6871e62 to 6617292 Compare June 25, 2025 04:24
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/evm/single/README.md (1)

75-78: Trailing back-slash whitespace & hard-coded absolute $HOME path remain

The back-slash on line 76 is still followed by a space and will be interpreted by bash as \ , i.e. a literal back-slash + space → command not found.
Line 77 re-introduces /Users/manav/..., killing portability.

-    ./evm-single start \ 
-       --home /Users/manav/.evm-single-full-node \
+    ./evm-single start \
+       --home ~/.evm-single-full-node \
🧹 Nitpick comments (3)
apps/evm/single/README.md (3)

55-63: Missing blank lines around fenced blocks triggers MD031

Insert a blank line before and after each ```bash fenced block to silence markdownlint and improve readability.

     2. Initialize the full node:
-    ```bash
+    
+    ```bash
     ./evm-single init --home ~/.evm-single-full-node
     ```
+    

64-71: Code block lacks language spec & blank lines

Add bash after the back-ticks and surround the block with blank lines to avoid MD031 / MD040.

-    ```
+    
+    ```bash
     ```
 
     Create an environment variable with the P2P address:
-    ```bash
+    
+    ```bash
     export P2P_ID="12D3KooWJbD9TQoMSSSUyfhHMmgVY3LqCjxYFz8wQ92Qa6DAqtmh"
     ```
+    

53-54: docker compose vs docker-compose inconsistency

Earlier you instruct users to run docker compose (space), while here you use docker-compose (dash). Stick to one form (the modern docker compose sub-command) to avoid confusion.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a539254 and 6617292.

📒 Files selected for processing (5)
  • apps/evm/single/README.md (3 hunks)
  • apps/evm/single/docker-compose.yml (3 hunks)
  • execution/evm/docker/docker-compose-full-node.yml (1 hunks)
  • execution/evm/docker/docker-compose.yml (2 hunks)
  • execution/evm/execution_test.go (8 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • execution/evm/docker/docker-compose.yml
  • execution/evm/docker/docker-compose-full-node.yml
  • execution/evm/execution_test.go
  • apps/evm/single/docker-compose.yml
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
apps/evm/single/README.md

56-56: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


58-58: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


69-69: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: test / Run E2E System Tests
  • GitHub Check: test / Run EVM Execution Tests
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (7)
apps/evm/single/README.md (7)

30-37: Remove any trailing whitespace after line-continuation \

A stray space after the backslash will be interpreted as \ and makes the whole command fail with bash: \ : command not found.
Double-check lines 31-36 and strip trailing spaces, if any.


30-37: Path placeholder should be consistent across the doc

Lines 32 and 33 still rely on <path_to> whereas the note below (l. 39) clarifies that users should substitute the rollkit repo path. Consider replacing the placeholder with $ROLLKIT_ROOT (or similar) for consistency and copy-paste friendliness.


57-58: Use the same docker compose invocation everywhere

Earlier sections use the space-separated docker compose, whereas line 57 switches to the legacy docker-compose. Mixing the two can confuse newcomers and break shell history search.

-1. ... using `docker-compose -f docker-compose-full-node.yml`
+1. ... using `docker compose -f docker-compose-full-node.yml`

60-66: Add blank lines around fenced code blocks to satisfy markdownlint

MD031 is triggered because the code fences are flush with surrounding text. Insert a blank line before ```bash and after ```:

-2. Initialize the full node:
-```bash
+2. Initialize the full node:
+
+```bash
 ./evm-single init --home ~/.evm-single-full-node
-```
+```
+

Repeat for the cp snippet.


68-70: Specify a language for the log snippet

MD040 warns about missing language identifiers. Mark the block as plain text:

-```
+```text
 1:55PM INF listening on address=/ip4/127.0.0.1/tcp/7676/p2p/12D3Koo...

---

`79-89`: **Relative path to JWT token will break outside `apps/evm/single`**

`../../../execution/evm/docker/jwttoken/jwt.hex` only works when the command is executed from `apps/evm/single`. Recommend using an absolute path or the same `$ROLLKIT_ROOT` placeholder used above:

```diff
-   --evm.jwt-secret $(cat ../../../execution/evm/docker/jwttoken/jwt.hex) \
+   --evm.jwt-secret $(cat $ROLLKIT_ROOT/execution/evm/docker/jwttoken/jwt.hex) \

39-43: Tighten wording (“originally created”)

The phrase “originally created” is redundant. A simpler alternative keeps the README concise:

-make sure to remove the originally created sequencer node directory
+make sure to remove the sequencer node directory

Repeat the same change in the full-node section (l. 91).

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6617292 and 6fb55c0.

📒 Files selected for processing (1)
  • apps/evm/single/README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
apps/evm/single/README.md

[style] ~39-~39: This phrase is redundant. Consider writing “created”.
Context: ...t a fresh node, make sure to remove the originally created sequencer node directory using: ```bas...

(ORIGINALLY_CREATED)


[style] ~91-~91: This phrase is redundant. Consider writing “created”.
Context: ...t a fresh node, make sure to remove the originally created full node directory using: ```bash ...

(ORIGINALLY_CREATED)

🪛 markdownlint-cli2 (0.17.2)
apps/evm/single/README.md

60-60: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


62-62: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


64-64: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


66-66: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


68-68: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


68-68: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


73-73: Fenced code blocks should be surrounded by blank lines
null

(MD031, blanks-around-fences)


95-95: Files should end with a single newline character
null

(MD047, single-trailing-newline)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: test / Run Unit Tests
  • GitHub Check: test / Build All Rollkit Binaries
  • GitHub Check: test / Run Integration Tests
  • GitHub Check: test / Build Rollkit Docker Image
  • GitHub Check: test / Build Rollkit EVM Single Docker Image
  • GitHub Check: Analyze (go)
  • GitHub Check: Summary

@Manav-Aggarwal Manav-Aggarwal disabled auto-merge June 25, 2025 05:03
@Manav-Aggarwal Manav-Aggarwal added this pull request to the merge queue Jun 25, 2025
Merged via the queue into main with commit e15b152 Jun 25, 2025
61 of 63 checks passed
@Manav-Aggarwal Manav-Aggarwal deleted the manav/add_evm_full_node_docker branch June 25, 2025 05:29
@github-project-automation github-project-automation bot moved this to Done in Evolve Jun 25, 2025

err = c.engineClient.CallContext(ctx, &forkchoiceResult, "engine_forkchoiceUpdatedV3",
engine.ForkchoiceStateV1{
HeadBlockHash: prevBlockHash,
Copy link
Member Author

Choose a reason for hiding this comment

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

}
// }

// make sure that the timestamp is increasing
Copy link
Member Author

Choose a reason for hiding this comment

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

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.

4 participants