-
Notifications
You must be signed in to change notification settings - Fork 269
Update L2 rollup testnet tutorial #1705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…and structure. Revise descriptions, add prerequisites, and streamline steps for deploying components like op-geth, op-node, and op-batcher. Include detailed instructions for configuration and testing, ensuring a comprehensive guide for users.
✅ Deploy Preview for docs-optimism ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…outdated callout, streamline installation steps for op-deployer and op-geth, and enhance navigation instructions for various components. Update references to deployment artifacts for consistency.
…ack components. Revise descriptions, improve installation steps, and ensure consistent references to deployment artifacts. Add verification steps for each component and clarify prerequisites for a seamless deployment experience.
…or building from source and using Docker. Streamline installation steps, clarify configuration setup, and improve overall structure for better user experience. Remove outdated L2 rollup tutorial as it is no longer relevant.
…d adding new content on connecting wallets and depositing ETH.
…rent deployment practices. This cleanup aligns with recent updates to the OP Stack documentation.
…o longer needed, streamlining the CI/CD workflow.
📝 WalkthroughWalkthroughThis PR removes the Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant OpDeployer as op-deployer
participant L1 as L1 Chain
participant Sequencer as op-geth/op-node
participant Batcher as op-batcher
participant Proposer as op-proposer
participant Challenger as op-challenger
User->>OpDeployer: init / apply / inspect
OpDeployer-->>User: state.json, genesis, rollup config
OpDeployer->>L1: Deploy contracts
User->>Sequencer: Initialize & start (build or docker)
Sequencer-->>L1: Read rollup params / serve RPC
User->>Batcher: Configure & start
Batcher->>L1: Submit L2 tx batches
User->>Proposer: Configure & start
Proposer->>L1: Post state roots
User->>Challenger: Configure & start
Challenger->>L1: Monitor / contest games
sequenceDiagram
autonumber
actor Operator
participant Repo as Source Repos
participant Disk as Workspace
participant Geth as op-geth
participant Node as op-node
participant Docker as Docker-compose
participant L1 as L1 RPC/Beacon
Operator->>Repo: Clone & checkout pinned versions
Operator->>Repo: Build binaries (or pull images)
Operator->>Disk: Prepare env, jwt, directories
alt Build-from-source
Operator->>Geth: geth init (genesis)
Operator->>Geth: Start op-geth
Operator->>Node: Start op-node
else Docker path
Operator->>Docker: docker-compose up (op-geth/op-node)
end
Node->>L1: Connect L1 RPC/Beacon
Operator-->>Geth: Verify RPC
Operator-->>Node: Verify rollup status
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 9
🧹 Nitpick comments (22)
pages/operators/chain-operators/deploy/sequencer-node.mdx (8)
90-96
: Tighten language and align with style guide (avoid “we,” grammar).
- Avoid “we” per guidelines; prefer imperative voice.
- Improve phrasing.
Apply this diff:
-For spinning up a sequencer, we recommend building from source as it provides better control, and helps with debugging. -In this guide Docker alternative is also provided. +To spin up a sequencer, build from source to maintain control and simplify debugging. +This guide also provides a Docker-based alternative.
93-96
: Use title case for tab labels and consistent product capitalization.Capitalize “Docker” in tab names.
- <Tabs items={['Build from source', 'Using docker']}> + <Tabs items={['Build from source', 'Using Docker']}>- <Tabs.Tab> - If you prefer containerized deployment, you can use the official Docker images, and do the following: + <Tabs.Tab> + If containerized deployment is preferred, use the official Docker images:Also applies to: 420-423
104-111
: Minor grammar: “Check out,” not “Checkout.”-# Checkout the latest release tag +# Check out the latest release tag
121-128
: Minor grammar: “Check out the release tag.”-# Checkout to this release tag +# Check out this release tag
203-206
: Path consistency for op-deployer outputs.You copy from
~/.deployer
, but earlier steps create.deployer
in the current working directory. This may confuse readers if they ranop-deployer
elsewhere. Add a note or parameterize the path.-# Copy configuration files from op-deployer -cp ~/.deployer/genesis.json . -cp ~/.deployer/rollup.json . +# Copy configuration files from op-deployer +# Note: adjust the path if your .deployer directory is located elsewhere +cp ./../.deployer/genesis.json . +cp ./../.deployer/rollup.json .Alternatively, add a sentence after the code block: “If your .deployer directory is not adjacent to ~/sequencer-node, update the paths accordingly (e.g., ~/.deployer or /op-network/.deployer).”
301-326
: Restrictive exposure of RPC endpoints.Exposing HTTP/WS/Auth RPC on 0.0.0.0 with permissive CORS/VHOSTs is acceptable for local testing, but should be cautioned against for any public-facing setup. Add a note.
--rollup.sequencerhttp=http://localhost:$OP_NODE_RPC_PORT
+
- The configuration above binds RPC endpoints to 0.0.0.0 and permits all origins/hosts. For non-local setups, restrict interfaces, limit CORS/VHOSTs, and place services behind a firewall or reverse proxy.
+--- `333-360`: **Add the same RPC exposure caution to op-node.** Mirror the safety note for op-node bindings and P2P exposure. ```diff --log.format=json
+
- Ensure UDP/TCP port 9222 is reachable only as required. For public deployments, harden P2P exposure and RPC access with firewall rules and network policies.
+--- `557-562`: **Prefer modern Docker Compose invocation.** The hyphenated `docker-compose` is deprecated in favor of `docker compose`. ```diff -# Start both services -docker-compose up -d - -# View logs -docker-compose logs -f +# Start both services +docker compose up -d + +# View logs +docker compose logs -f
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx (8)
36-38
: Minor grammar: add article.-After installing all of that, run following: +After installing all of that, run the following:
52-57
: Tighten phrasing and remove unnecessary comma.-Another way to install `op-deployer`, is to download the latest release from the monorepo's [release page](https://github.com/ethereum-optimism/optimism/releases). +Alternatively, download the latest release from the monorepo’s [release page](https://github.com/ethereum-optimism/optimism/releases).
74-75
: Avoid “we,” fix spacing, and improve clarity.-Deploying an OP Stack chain involves deploying multiple contracts, which can consume a substantial amount of gas. On testnets like Sepolia, costs may fluctuate significantly depending on network congestion. We recommend ensuring your deployer wallet has a buffer of **at least 1.5 to 3.5 ETH** , depending on gas prices and configuration. Always check current gas estimates before deploying. +Deploying an OP Stack chain involves deploying multiple contracts, which can consume a substantial amount of gas. On testnets like Sepolia, costs may fluctuate significantly depending on network congestion. Ensure the deployer wallet has a buffer of at least 1.5 to 3.5 ETH, depending on gas prices and configuration. Always check current gas estimates before deploying.
112-116
: Fix TOML inline-comment spacing to avoid copy-paste confusion.Add a space before comment markers for readability and correctness in some TOML parsers.
-l1ChainID = 11155111# The chain ID of Sepolia (L1) you'll be deploying to. -fundDevAccounts = true# Whether or not to fund dev accounts using the test... junk mnemonic on L2. -l1ContractsLocator = "tag://op-contracts/v1.8.0-rc.4"# L1 smart contracts versions -l2ContractsLocator = "tag://op-contracts/v1.7.0-beta.1+l2-contracts"# L2 smart contracts versions# Delete this table if you are using the shared Superchain contracts on the L1# If you are deploying your own SuperchainConfig and ProtocolVersions contracts, fill in these details +l1ChainID = 11155111 # The chain ID of Sepolia (L1) you'll be deploying to. +fundDevAccounts = true # Whether to fund dev accounts using the test... junk mnemonic on L2. +l1ContractsLocator = "tag://op-contracts/v1.8.0-rc.4" # L1 smart contracts version +l2ContractsLocator = "tag://op-contracts/v1.7.0-beta.1+l2-contracts" # L2 smart contracts version +# Delete this table if you are using the shared Superchain contracts on the L1 +# If you are deploying your own SuperchainConfig and ProtocolVersions contracts, fill in these details
145-147
: Minor style: prefer “okay” and avoid “ok.”-For dev environments, it is ok to use all EOAs/hot-wallets. +For development environments, it is okay to use EOAs or hot wallets.
260-270
: Clarify example URL and avoid angle brackets inside TOML strings.Angle brackets inside strings may be mistaken as literal characters. Use a clear placeholder or comment.
-l2ContractsLocator = "<https://example.com/op-contracts/v1.7.0-beta.1+l2-contracts.tar.gz>" +l2ContractsLocator = "https://example.com/op-contracts/v1.7.0-beta.1+l2-contracts.tar.gz" # Replace with your actual URL
275-277
: Fix spacing and typo in comment.-[globalDeployOverrides] - l2BlockTime = 1# 1s L2blockTime is also standard, op-deployer defaults to 2s +[globalDeployOverrides] + l2BlockTime = 1 # 1s L2 block time is also standard; op-deployer defaults to 2s
357-367
: Add missing spaces before inline comments for clarity.-op-deployer inspect l1 --workdir .deployer <l2-chain-id># outputs all L1 contract addresses for an L2 chain -op-deployer inspect deploy-config --workdir .deployer <l2-chain-id># outputs the deploy config for an L2 chain -op-deployer inspect l2-semvers --workdir .deployer <l2-chain-id># outputs the semvers for all L2 chains +op-deployer inspect l1 --workdir .deployer <l2-chain-id> # outputs all L1 contract addresses for an L2 chain +op-deployer inspect deploy-config --workdir .deployer <l2-chain-id> # outputs the deploy config for an L2 chain +op-deployer inspect l2-semvers --workdir .deployer <l2-chain-id> # outputs the semvers for all L2 chainspages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx (2)
363-364
: Clarify data availability type configuration.The
--data-availability-type=blobs
parameter should include documentation about when to use blobs vs calldata, especially for testnets where blob availability might be limited.Consider adding a callout explaining the data availability options:
+<Callout type="info"> + **Data Availability**: `--data-availability-type=blobs` uses EIP-4844 blobs for cheaper data posting. For testnets or networks where blob availability is uncertain, consider using `--data-availability-type=calldata` instead. +</Callout>
448-449
: Add reference to fee calculation tools.The fee calculation tools reference uses a relative path that may not resolve correctly depending on the site structure.
Verify this link resolves correctly in the site navigation. If not, update to use the full path or site-relative path.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx (2)
99-99
: Inconsistent tab naming.The tab is named "Using docker" but should be "Using Docker" to maintain consistent title case capitalization.
Apply this diff:
-<Tabs items={['Build from source', 'Using docker']}> +<Tabs items={['Build from source', 'Using Docker']}>
383-385
: Add safety note about data directory.The initialization command creates a data directory that will store blockchain data. Users should be aware of disk space requirements and backup considerations.
Consider adding a callout about disk space requirements:
+<Callout type="info"> + The `op-geth-data` directory will store the entire blockchain state. Ensure you have sufficient disk space (several GB) and consider backup strategies for production environments. +</Callout>pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx (1)
142-144
: Document game type configuration.The
GAME_TYPE=0
is mentioned but the significance of different game types should be explained more clearly for operators who may need to configure custom networks.Consider expanding the explanation:
# Proposer configuration PROPOSAL_INTERVAL=3600s - GAME_TYPE=0 + GAME_TYPE=0 # 0 = Fault Proof Game (standard), 1 = Validity Proof Game POLL_INTERVAL=20spages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx (1)
217-217
: Grammar correction needed.The word "onchain" should be "on-chain" for proper spelling.
Apply this diff:
-This is an optional step to use `op-challenger` subcommands, which allow chain operators to interact with the Fault Proof System onchain for testing and debugging purposes. +This is an optional step to use `op-challenger` subcommands, which allow chain operators to interact with the Fault Proof System on-chain for testing and debugging purposes.
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
.circleci/config.yml
(0 hunks)package.json
(1 hunks)pages/operators/chain-operators/deploy/sequencer-node.mdx
(2 hunks)pages/operators/chain-operators/tools/op-deployer.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/_meta.json
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
(1 hunks)words.txt
(0 hunks)
💤 Files with no reviewable changes (2)
- words.txt
- .circleci/config.yml
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx
⚙️ CodeRabbit Configuration File
**/*.mdx
: "ALWAYS review Markdown content THOROUGHLY with the following criteria:
- First, check the frontmatter section at the top of the file:
- For regular pages, ensure ALL these fields are present and not empty:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] personas: [non-empty array] categories: [non-empty array] content_type: [valid type] ---
- For landing pages (index.mdx or files with ), only these fields are required:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] ---
- If any required fields are missing or empty, comment:
'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:pnpm validate-metadata ```'
- Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
- Avoid gender-specific language and use the imperative form.
- Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
- Ensure proper nouns are capitalized in sentences.
- Apply the Oxford comma.
- Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
- Use correct spelling and grammar at all times (IMPORTANT).
- For H1, H2, and H3 headers:
- Use sentence case, capitalizing only the first word.
- Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
- Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
- Flag any headers that seem to inconsistently apply these rules for manual review.
- When rev...
Files:
pages/operators/chain-operators/tools/op-deployer.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
pages/operators/chain-operators/deploy/sequencer-node.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
🪛 LanguageTool
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
[style] ~101-~101: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ess. #### --rollup-rpc
* This needs to be an op-node
archive node because ch...
(REP_NEED_TO_VB)
[grammar] ~217-~217: Ensure spelling is correct
Context: ... to interact with the Fault Proof System onchain for testing and debugging purposes. For...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🔇 Additional comments (9)
pages/operators/chain-operators/tools/op-deployer.mdx (1)
366-366
: Anchor verified for “Using upgrade”The file
pages/stack/smart-contracts/op-deployer-upgrade.mdx
contains a## Using \
upgrade`heading (line 33), which generates the
using-upgradeslug. The site-relative link
/stack/smart-contracts/op-deployer-upgrade#using-upgrade`
will resolve correctly.package.json (1)
7-7
: Breadcrumbs check removal verified—CI parity maintained and local script available
- CircleCI (
.circleci/config.yml:85
) runspnpm lint
without invokingcheck-breadcrumbs
.check-breadcrumbs
script is still defined in package.json (line 13), so contributors can run it ad-hoc.- No references to
check-breadcrumbs
found in documentation; if CONTRIBUTING.md or other docs mention linting steps, update them to reflect this change.pages/operators/chain-operators/deploy/sequencer-node.mdx (1)
20-20
: Tabs import addition is appropriate.pages/operators/chain-operators/tutorials/create-l2-rollup/_meta.json (1)
1-8
: Navigation labels look consistent and descriptive.Labels are concise and aligned with the new modular tutorial flow.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx (1)
1-14
: Frontmatter includes all required fields.All required metadata fields are present and non-empty.
pages/operators/chain-operators/tutorials/create-l2-rollup.mdx (4)
10-17
: Updated categories align with modular tutorial structure.The category changes appropriately reflect the new modular approach, moving from operational categories to component-specific ones (sequencer, batcher, proposer, challenger, integration).
21-21
: Import statement correctly updated.The addition of
Card
import aligns with the new CTA-driven navigation pattern used throughout the tutorial.
32-50
: Excellent modular structure with clear progression.The new step-by-step structure with explicit component setup provides much better organization than the previous monolithic approach. Each step builds logically on the previous one.
84-86
: Effective navigation pattern.The Card component provides clear next-step guidance and consistent navigation throughout the tutorial series.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Outdated
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
Outdated
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
Outdated
Show resolved
Hide resolved
📝 WalkthroughWalkthrough
Sequence Diagram(s)sequenceDiagram
participant Operator
participant op-deployer
participant Artifacts
participant op-geth
participant op-node
participant op-batcher
participant op-proposer
participant op-challenger
Operator->>op-deployer: init/apply/verify with intent.toml
op-deployer-->>Operator: state.json, genesis.json, rollup.json
Operator->>op-geth: init with genesis.json, start (JWT)
Operator->>op-node: start with rollup.json (JWT)
op-geth-->>op-node: Execution payloads/RPC
Operator->>op-batcher: start (uses L2/L1 RPC, BatchInbox)
op-batcher->>Artifacts: Submit L2 tx batches to L1
Operator->>op-proposer: start (uses GameFactory/L1/L2/Rollup RPC)
op-proposer->>Artifacts: Propose state roots to L1
Operator->>op-challenger: start (uses prestates, rollup RPC)
op-challenger->>Artifacts: Monitor/participate in disputes on L1
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing Touches🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (15)
package.json (1)
7-7
: Breadcrumbs check removed from lint script; consider removing unused scripts.You removed check-breadcrumbs from the lint pipeline, but the scripts "breadcrumbs" and "check-breadcrumbs" still exist. If breadcrumbs are no longer part of CI or DX flows, remove those scripts to avoid confusion.
"scripts": { - "lint": "eslint . --ext mdx --max-warnings 0 && pnpm spellcheck:lint && pnpm check-redirects && pnpm validate-metadata && pnpm link-checker", + "lint": "eslint . --ext mdx --max-warnings 0 && pnpm spellcheck:lint && pnpm check-redirects && pnpm validate-metadata && pnpm link-checker", "fix": "eslint . --ext mdx --fix && pnpm spellcheck:fix && pnpm fix-redirects && pnpm fix-links", "spellcheck:lint": "cspell lint \"**/*.mdx\"", "prepare": "husky", "spellcheck:fix": "cspell --words-only --unique \"**/*.mdx\" | sort --ignore-case | uniq > words.txt", - "breadcrumbs": "NODE_NO_WARNINGS=1 node --loader ts-node/esm utils/create-breadcrumbs.ts", - "check-breadcrumbs": "NODE_NO_WARNINGS=1 node --loader ts-node/esm utils/breadcrumbs.ts", + // Breadcrumbs flow removed from CI; delete if unused everywhere: + // "breadcrumbs": "NODE_NO_WARNINGS=1 node --loader ts-node/esm utils/create-breadcrumbs.ts", + // "check-breadcrumbs": "NODE_NO_WARNINGS=1 node --loader ts-node/esm utils/breadcrumbs.ts", "check-redirects": "NODE_NO_WARNINGS=1 node --loader ts-node/esm utils/redirects.ts",pages/operators/chain-operators/deploy/sequencer-node.mdx (4)
90-96
: Avoid first-person voice; fix grammar.Follow style: use imperative voice and avoid “we,” “our.” Also correct grammar.
-For spinning up a sequencer, we recommend building from source as it provides better control, and helps with debugging. -In this guide Docker alternative is also provided. +Build from source for better control and easier debugging. +This guide also provides a Docker alternative. - <Tabs items={['Build from source', 'Using docker']}> + <Tabs items={['Build from source', 'Using Docker']}> <Tabs.Tab> - Building from source gives you full control over the binaries and is the preferred approach for this guide. + Build from source to retain full control over the binaries. This is the preferred approach for this guide.
203-207
: Path to .deployer likely incorrect/inconsistent.Earlier steps generate .deployer in the working directory, but these commands copy from ~/.deployer. Align with the same location or add an explicit note or variable for the path.
-# Copy configuration files from op-deployer -cp ~/.deployer/genesis.json . -cp ~/.deployer/rollup.json . +# Copy configuration files from op-deployer +# Note: Adjust the path if your .deployer directory is located elsewhere. +# Example if .deployer is in the parent directory of your workspace: +cp ../.deployer/genesis.json . +cp ../.deployer/rollup.json .
220-291
: Security hygiene for secrets and network exposure.
- Do not commit .env to version control; add guidance to .gitignore and secret handling.
- The configuration exposes RPC ports on 0.0.0.0 with permissive CORS and vhosts. For production, bind to localhost or restrict via firewalls/reverse proxies.
**Important**: Replace ALL placeholder values (`YOUR_ACTUAL_*`) with your real configuration values. + +<Callout type="warning"> + Do not commit `.env` or `jwt.txt` to version control. Add them to `.gitignore` and manage secrets using your organization's secret management solution. + For production, bind RPC endpoints to `127.0.0.1` or place them behind a firewall or reverse proxy. Avoid permissive `--http.vhosts="*"` and `--http.corsdomain="*"` configurations on public interfaces. +</Callout>
300-326
: Consider safer defaults for public interfaces.These flags open op-geth widely. Recommend localhost bindings as defaults, with notes on when to expose.
- --http.addr=0.0.0.0 \ + --http.addr=127.0.0.1 \ - --ws.addr=0.0.0.0 \ + --ws.addr=127.0.0.1 \ - --authrpc.addr=0.0.0.0 \ + --authrpc.addr=127.0.0.1 \ - --http.vhosts="*" \ - --http.corsdomain="*" \ + --http.vhosts="localhost" \ + --http.corsdomain="http://localhost" \Add a note informing operators they may relax these in controlled environments.
pages/operators/chain-operators/tutorials/create-l2-rollup/_meta.json (1)
1-8
: Nav entries look good. Consider capitalization consistency for product names.If the docs standardize on “Docker,” “OP Stack,” “OP Deployer,” etc., consider aligning the labels (e.g., “Spin Up OP Deployer,” “Spin Up Sequencer”). Not blocking.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx (4)
70-75
: Avoid first-person voice.Use imperative form per style guide.
-For setting up the batcher, we recommend building from source as it provides better control and helps with debugging. Docker alternative is also provided. +Build from source for better control and easier debugging. A Docker alternative is also provided.
124-153
: Environment references depend on external network/service names; add guidance.You set L2_RPC_URL and ROLLUP_RPC_URL to http://sequencer-node:8545/8547. Document that the sequencer service must be reachable by that hostname on the same Docker network, or change to host.docker.internal for local host connectivity.
-# L2 Configuration - Should match your sequencer setup -L2_RPC_URL=http://sequencer-node:8545 -ROLLUP_RPC_URL=http://sequencer-node:8547 +# L2 Configuration - Should match your sequencer setup +# If sequencer runs in Docker on the same "op-stack" network, use its service name: +L2_RPC_URL=http://sequencer-node:8545 +ROLLUP_RPC_URL=http://sequencer-node:8547 +# If sequencer runs on the host, use host.docker.internal: +# L2_RPC_URL=http://host.docker.internal:8545 +# ROLLUP_RPC_URL=http://host.docker.internal:8547
215-231
: RPC method used for verification may start the service.admin_startBatcher starts the batcher. For a non-invasive health check, prefer an informational method (e.g., admin_isRunning or a status method) if available, or note that this will toggle state.
-# Check batcher RPC is responding -curl -X POST -H "Content-Type: application/json" \ - --data '{"jsonrpc":"2.0","method":"admin_startBatcher","params":[],"id":1}' \ - http://localhost:8548 +# Check batcher RPC is responding (non-invasive) +# If supported by your version: +# curl -X POST -H "Content-Type: application/json" \ +# --data '{"jsonrpc":"2.0","method":"admin_isRunning","params":[],"id":1}' \ +# http://localhost:8548 +# Otherwise, document that admin_startBatcher will start the process.
246-273
: Directory layout shows proposer-node before it is introduced.Minor clarity tweak: remove proposer-node from this early structure or annotate it as created in the next step to avoid confusion.
- ├── proposer-node/ # Your proposer setup + # The proposer will be set up in the next step: + # ├── proposer-node/ # Your proposer setuppages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx (2)
74-74
: Consider clarifying the gas estimate range.The gas estimate mentions "at least 1.5 to 3.5 ETH" which is a very wide range. Consider providing more specific guidance based on typical deployment scenarios or current gas conditions.
240-240
: Fix grammatical error in artifact usage guidance.There's a missing comma in the sentence structure.
-If you encounter the error `Application failed: failed to parse artifacts URL: unsupported tag`, you'll need to use the local files method described above, else If you use an invalid tag, the command will display all valid options. +If you encounter the error `Application failed: failed to parse artifacts URL: unsupported tag`, you'll need to use the local files method described above. Otherwise, if you use an invalid tag, the command will display all valid options.pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx (2)
101-101
: Address repetitive phrasing flagged by static analysis.The static analysis tool flagged repetitive use of "This needs to be" in nearby sentences. Consider varying the language for better readability.
-* This needs to be an `op-node` archive node because challenger needs access to output roots from back when the games start. +* Use an `op-node` archive node since the challenger requires access to output roots from when games begin.
217-217
: Fix spelling of "onchain" if needed.The static analysis tool flagged "onchain" as potentially incorrect spelling. Consider using "on-chain" if following standard conventions.
-This is an optional step to use `op-challenger` subcommands, which allow chain operators to interact with the Fault Proof System onchain for testing and debugging purposes. +This is an optional step to use `op-challenger` subcommands, which allow chain operators to interact with the Fault Proof System on-chain for testing and debugging purposes.pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx (1)
99-99
: Fix inconsistent tab structure.The Tabs component should use consistent naming with the other tutorial pages.
-<Tabs items={['Build from source', 'Using docker']}> +<Tabs items={['Build from source', 'Using Docker']}>
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
.circleci/config.yml
(0 hunks)package.json
(1 hunks)pages/operators/chain-operators/deploy/sequencer-node.mdx
(2 hunks)pages/operators/chain-operators/tools/op-deployer.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/_meta.json
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
(1 hunks)words.txt
(0 hunks)
💤 Files with no reviewable changes (2)
- words.txt
- .circleci/config.yml
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx
⚙️ CodeRabbit Configuration File
**/*.mdx
: "ALWAYS review Markdown content THOROUGHLY with the following criteria:
- First, check the frontmatter section at the top of the file:
- For regular pages, ensure ALL these fields are present and not empty:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] personas: [non-empty array] categories: [non-empty array] content_type: [valid type] ---
- For landing pages (index.mdx or files with ), only these fields are required:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] ---
- If any required fields are missing or empty, comment:
'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:pnpm validate-metadata ```'
- Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
- Avoid gender-specific language and use the imperative form.
- Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
- Ensure proper nouns are capitalized in sentences.
- Apply the Oxford comma.
- Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
- Use correct spelling and grammar at all times (IMPORTANT).
- For H1, H2, and H3 headers:
- Use sentence case, capitalizing only the first word.
- Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
- Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
- Flag any headers that seem to inconsistently apply these rules for manual review.
- When rev...
Files:
pages/operators/chain-operators/tools/op-deployer.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
pages/operators/chain-operators/deploy/sequencer-node.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup.mdx
🪛 LanguageTool
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx
[style] ~101-~101: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ess. #### --rollup-rpc
* This needs to be an op-node
archive node because ch...
(REP_NEED_TO_VB)
[grammar] ~217-~217: Ensure spelling is correct
Context: ... to interact with the Fault Proof System onchain for testing and debugging purposes. For...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🔇 Additional comments (24)
pages/operators/chain-operators/tools/op-deployer.mdx (1)
366-366
: Verified: target page and anchor existThe file
pages/stack/smart-contracts/op-deployer-upgrade.mdx
contains an H2 heading:
- Line 33: ## Using
upgrade
→ slugifies tousing-upgrade
The link
/stack/smart-contracts/op-deployer-upgrade#using-upgrade
is valid.pages/operators/chain-operators/deploy/sequencer-node.mdx (2)
1-18
: Frontmatter: required metadata present.All required frontmatter fields appear populated (title, lang, description, content_type, topic, personas, categories). No action needed.
403-413
: admin_sequencerActive is a valid op-node JSON-RPC method
Documentation in pages/operators/node-operators/json-rpc.mdx (lines 982–986) confirms thatadmin_sequencerActive
returns the sequencer’s active status and is supported up through v1.13.3. No change is required here.pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx (3)
1-17
: Frontmatter: required metadata present.All required frontmatter fields appear populated (title, lang, description, content_type, topic, personas, categories). No action needed.
447-468
: Links and capitalization look good.“Need Help” section is consistent. No action needed.
338-366
: Verify need for the--batch-inbox-address
flagI wasn’t able to find any references to
--batch-inbox-address
in the op-batcher code or docs. Please confirm for v1.13.1:
- If op-batcher requires an explicit BatchInbox address, uncomment and set the flag.
- If it’s auto-discovered, remove any prior inbox-extraction steps to avoid confusion.
• File: pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Lines: 338–366Suggested snippet (adjust as needed):
--l1-eth-rpc=$L1_RPC_URL \ --private-key=$BATCHER_PRIVATE_KEY \ + # Uncomment if your version requires the inbox address explicitly: + # --batch-inbox-address=$BATCH_INBOX_ADDRESS \ --batch-type=1 \pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx (3)
1-14
: Missing required metadata fields for regular pages.This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
pnpm validate-metadataAccording to the coding guidelines, regular pages require ALL these fields:
title
✅ (present)lang
✅ (present)description
✅ (present)topic
✅ (present)personas
✅ (present)categories
✅ (present)content_type
✅ (present)All required fields appear to be present and properly formatted.
105-107
: Warning about production deployment is well-placed.The warning about not using default addresses in production is appropriately prominent and clearly explains the security risk.
373-375
: Excellent navigation structure and clear next steps.The "What's Next?" section with the Card component provides clear guidance for proceeding to the next step in the tutorial sequence.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-challenger-setup.mdx (3)
1-16
: Missing required metadata fields for regular pages.This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
pnpm validate-metadataAll required metadata fields appear to be present and properly formatted according to the coding guidelines.
238-247
: Well-structured completion section with clear status indicators.The congratulations section effectively summarizes all completed components with clear checkmarks, providing a satisfying conclusion to the tutorial series.
281-286
: Comprehensive help resources provided.The "Need Help?" section includes appropriate community, technical, and developer resources for ongoing support.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx (3)
1-15
: Missing required metadata fields for regular pages.This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
pnpm validate-metadataAll required metadata fields appear to be present and properly formatted according to the coding guidelines.
87-92
: Excellent version compatibility guidance.The callout clearly explains the tested compatible versions and directs users to check release notes for compatibility, which is crucial for preventing version mismatch issues.
592-598
: Clear navigation to next step with appropriate context.The "What's Next?" section properly links to the batcher setup and explains the logical progression in the tutorial sequence.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx (4)
1-17
: Missing required metadata fields for regular pages.This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
pnpm validate-metadataAll required metadata fields appear to be present and properly formatted according to the coding guidelines.
64-67
: Excellent version compatibility information.The callout clearly specifies the version being used and emphasizes checking release notes for compatibility, which helps prevent integration issues.
313-315
: Important warning about funding the proposer account.The warning about ETH balance is well-placed and emphasizes the ongoing operational cost, which is crucial for maintaining proposer functionality.
431-437
: Clear progression to final step.The "What's Next?" section appropriately guides users to the challenger setup as the final component in the tutorial series.
pages/operators/chain-operators/tutorials/create-l2-rollup.mdx (5)
7-17
: Improved personas and categories for broader audience.The expanded personas list (sequencer, batcher, proposer, challenger, integration) and updated categories better reflect the comprehensive nature of this tutorial.
25-51
: Excellent restructured tutorial overview.The new step-by-step structure with clear links to each component provides much better navigation and understanding of the tutorial flow compared to the previous heavy setup blocks.
64-66
: Appropriate warning for testnet-only usage.The warning clearly emphasizes this is for testnet deployment only, which is crucial for preventing production misuse.
84-86
: Effective call-to-action with Card component.The Card component provides a clear and visually appealing way to direct users to the first step of the tutorial.
21-21
: Card import confirmed. TheCard
component is already exported bynextra/components
and is imported in dozens of MDX pages (e.g.pages/operators/node-operators.mdx
,pages/stack/transactions.mdx
, etc.), so the import increate-l2-rollup.mdx
is valid and requires no changes.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
Outdated
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
Show resolved
Hide resolved
…es for op-geth. Remove outdated prerequisites and enhance clarity in deployment steps, including updates to Docker image versions and configuration instructions.
… of the docker-compose.yml file for improved readability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (1)
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx (1)
1-15
: Validate personas and categories against keywords.config.yamlFrontmatter fields are present and non-empty. Ensure
personas
andcategories
use allowed values as defined in keywords.config.yaml, and run pnpm validate-metadata to confirm.This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:
pnpm validate-metadata
🧹 Nitpick comments (9)
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx (9)
72-75
: Capitalize “Docker” in tab labelUse title case for tab names.
-<Tabs items={['Build from source', 'Using docker']}> +<Tabs items={['Build from source', 'Using Docker']}>
27-33
: Normalize headers to sentence case and hyphenationFollow the style guide for headers (sentence case; hyphen for compound modifiers).
-## What You'll Set Up +## What you'll set up @@ -## Sequencer specific configuration +## Sequencer-specific configuration @@ -## What's Next? +## What's next? @@ -## Need Help? +## Need help?Also applies to: 279-281, 574-576, 584-586
69-71
: Use neutral, imperative phrasing; fix grammarAvoid “we”/“we’re,” and fix grammar.
-For spinning up a sequencer, we recommend building from source as it provides better control, and helps with debugging. -In this guide Docker alternative is also provided. +For spinning up a sequencer, build from source for better control and easier debugging. +This guide also provides a Docker alternative.
179-181
: Avoid first-person phrasingPrefer neutral phrasing per style guide.
-In this guide, we're going to be using the binaries from their original build locations, we only need to create directories for configuration files and scripts. +This guide uses binaries from their original build locations; only create directories for configuration files and scripts.
291-311
: Call out security posture of permissive RPC settingsPorts are bound to 0.0.0.0 with wildcard CORS/VHosts. Fine for local/test, but risky if publicly exposed. Add a cautionary note to restrict exposure in production.
--rollup.sequencerhttp=http://localhost:$OP_NODE_RPC_PORT ``` + + <Callout type="warning"> + The configuration above binds RPC endpoints to 0.0.0.0 and enables wildcard CORS/VHosts for convenience. For production or any internet-exposed hosts, restrict access (bind to localhost or a private interface, configure an authenticated reverse proxy, and lock down CORS/VHosts). + </Callout>Repeat a similar caution in the Docker section where CORS/VHosts are set to “*”.
228-233
: Fix comma splice; be explicit about the next stepMinor readability improvement.
-# Find your public IP address, once you get it, update the P2P_ADVERTISE_IP in your .env +# Find your public IP address. Then update P2P_ADVERTISE_IP in your .env.
53-59
: Improve link text for clarity and consistencyUse descriptive link text; prefer title case for link labels per guidelines.
-**[release page](https://github.com/ethereum-optimism/optimism/releases)** +**[Optimism releases](https://github.com/ethereum-optimism/optimism/releases)** @@ -* **op-node**: Look for the latest `op-node/v*` release -* **op-geth**: Look for the latest `op-geth/v*` [release](https://github.com/ethereum-optimism/op-geth/releases) +* **op-node**: Look for the latest `op-node/v*` release +* **op-geth**: Look for the latest `op-geth/v*` [releases](https://github.com/ethereum-optimism/op-geth/releases)
549-554
: Prefer Compose V2 syntax; drop legacy version fieldModern Docker uses “docker compose” (without a hyphen) and the Compose spec doesn’t require the version field.
- version: '3.8' + # Compose spec; no version field required-# Start both services -docker-compose up -d - -# View logs -docker-compose logs -f +# Start both services +docker compose up -d + +# View logs +docker compose logs -fAlso applies to: 457-458
387-397
: Consider templating ports in verification commandsIf users customize ports via .env, the hardcoded ports in the examples may mislead. Consider echoing the ports or reminding readers to adjust the port numbers.
-# Check op-geth is responding, do this in another terminal +# Check op-geth is responding (adjust the port if you customized OP_GETH_HTTP_PORT) @@ -# Check sequencer status +# Check sequencer status (adjust the port if you customized OP_NODE_RPC_PORT)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- pages/operators/chain-operators/tutorials/create-l2-rollup/op-deployer-setup.mdx
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx
⚙️ CodeRabbit Configuration File
**/*.mdx
: "ALWAYS review Markdown content THOROUGHLY with the following criteria:
- First, check the frontmatter section at the top of the file:
- For regular pages, ensure ALL these fields are present and not empty:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] personas: [non-empty array] categories: [non-empty array] content_type: [valid type] ---
- For landing pages (index.mdx or files with ), only these fields are required:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] ---
- If any required fields are missing or empty, comment:
'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:pnpm validate-metadata ```'
- Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
- Avoid gender-specific language and use the imperative form.
- Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
- Ensure proper nouns are capitalized in sentences.
- Apply the Oxford comma.
- Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
- Use correct spelling and grammar at all times (IMPORTANT).
- For H1, H2, and H3 headers:
- Use sentence case, capitalizing only the first word.
- Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
- Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
- Flag any headers that seem to inconsistently apply these rules for manual review.
- When rev...
Files:
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
🧠 Learnings (1)
📚 Learning: 2025-02-20T08:02:49.192Z
Learnt from: sbvegan
PR: ethereum-optimism/docs#1376
File: pages/stack/interop/tutorials/deploy-superchain-erc20.mdx:125-131
Timestamp: 2025-02-20T08:02:49.192Z
Learning: Use descriptive placeholders (e.g., 'YOUR_KEY_HERE') instead of example values when documenting sensitive information like private keys in documentation files to prevent users from accidentally using insecure values.
Applied to files:
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
Outdated
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-geth-setup.mdx
Show resolved
Hide resolved
… op-batcher to reflect version changes from v1.101511.0 to v1.101511.1 and v1.13.1 to v1.13.2, ensuring accurate instructions for users.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🔭 Outside diff range comments (7)
pages/operators/chain-operators/deploy/spin-batcher.mdx (6)
25-25
: Replace the placeholder link with a real URL.The sequencer guide link is a TODO placeholder. Link to the existing sequencer page to avoid broken navigation.
-If you haven't set up your sequencer yet, please refer to the \[sequencer guide]\(add this later) first. +If you haven't set up your sequencer yet, refer to the [sequencer guide](/operators/chain-operators/deploy/sequencer-node) first.
163-193
: Align Docker image version and attach service to the op-stack network.
- The image tag still uses v1.13.1; bump to v1.13.2 to match the guide.
- The compose references a shared network in the narrative but does not attach the service to it or define it. Add the network to avoid cross-container DNS issues.
services: op-batcher: - image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-batcher:v1.13.1 + image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-batcher:v1.13.2 volumes: - .:/workspace working_dir: /workspace ports: - "8548:8548" env_file: - .env command: - "op-batcher" - "--l2-eth-rpc=${L2_RPC_URL}" - "--rollup-rpc=${ROLLUP_RPC_URL}" - "--poll-interval=${POLL_INTERVAL}" - "--sub-safety-margin=${SUB_SAFETY_MARGIN}" - "--num-confirmations=${NUM_CONFIRMATIONS}" - "--safe-abort-nonce-too-low-count=${SAFE_ABORT_NONCE_TOO_LOW_COUNT}" - "--resubmission-timeout=${RESUBMISSION_TIMEOUT}" - "--rpc.addr=0.0.0.0" - "--rpc.port=${BATCHER_RPC_PORT}" - "--rpc.enable-admin" - "--max-channel-duration=${MAX_CHANNEL_DURATION}" - "--l1-eth-rpc=${L1_RPC_URL}" - "--private-key=${BATCHER_PRIVATE_KEY}" - "--batch-type=1" - "--data-availability-type=blobs" - "--compress" - "--log.level=info" restart: unless-stopped + networks: + - op-stack + +networks: + op-stack: + external: true
42-52
: List required CLI tools (jq, just).This page uses jq to parse JSON and just to build op-batcher, but prerequisites do not mention them. Add them to prevent setup failures.
**Network information:** * Your L2 chain ID and network configuration * L1 network details (chain ID, RPC endpoints) -* `BatchInbox` contract address from your deployment +* `BatchInbox` contract address from your deployment + +**CLI tools:** + +* jq (JSON CLI parser) +* just (command runner used by op-batcher)
123-149
: Add a secrets handling warning after the .env example (Docker path).Avoid accidental leakage of sensitive values and align with repository hygiene guidance.
PROPOSER_RPC_PORT=8548 EOF
- Do not commit
.env
to version control. Restrict permissions (e.g.,chmod 600 .env
), and prefer environment injection or a secret manager in production environments.--- `291-316`: **Add a secrets handling warning after the .env example (build-from-source path).** Same rationale as above for the local path. ```diff BATCHER_RPC_PORT=8548
Important: Replace ALL placeholder values (
YOUR_ACTUAL_*
) with your real configuration values!
+
+
- Do not commit
.env
to version control. Restrict permissions (e.g.,chmod 600 .env
), and prefer environment injection or a secret manager in production environments.
+--- `115-118`: **Remove incorrect BatchInbox extraction from spin-batcher.mdx** The snippet at lines 115–118 (and similarly at 279–281) pulls `.systemConfigProxyAddress` into `BATCH_INBOX_ADDRESS`, but: - That field is not the BatchInbox contract address. - `BATCH_INBOX_ADDRESS` is never used by Docker Compose or the startup scripts, which only read from the rollup config and L1. Action items: - In `pages/operators/chain-operators/deploy/spin-batcher.mdx`, delete lines 115–118 (and 279–281). - If you truly need to display the BatchInbox address, extract the correct JSON path (e.g. `.opChainDeployments[0].batchInboxAddress`) and wire it into your scripts or compose file. Diff: ```diff - # Extract the BatchInbox address - BATCH_INBOX_ADDRESS=$(cat state.json | jq -r '.opChainDeployments[0].systemConfigProxyAddress') - echo "BatchInbox Address: $BATCH_INBOX_ADDRESS"
pages/operators/chain-operators/deploy/sequencer-node.mdx (1)
64-69
: List 'just' in software requirements.Build steps use just, but it’s not listed. Add it to prevent build failures.
* Git (for cloning repositories) * Go 1.21+ (if building from source) +* just (command runner used by op-node) * Docker and Docker Compose (optional but recommended) * OpenSSL for JWT secret generation
♻️ Duplicate comments (3)
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx (2)
42-56
: Add required tools to prerequisites (jq, just).This tutorial uses jq (to parse state.json) and just (to build op-proposer) but does not list them, leading to setup failures.
## Prerequisites Before setting up your proposer, ensure you have: **Running infrastructure:** * An operational sequencer node * Access to a L1 RPC endpoint **Network information:** * Your L2 chain ID and network configuration * L1 network details (chain ID, RPC endpoints) + +**CLI tools:** + +* jq (JSON CLI parser) +* just (command runner used by op-proposer)
407-416
: Fix RPC endpoint for proposer verification.The first verification block targets the rollup RPC (8547). To verify the proposer service specifically, target the proposer RPC (8560).
# Monitor proposal activity curl -X POST -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"optimism_outputAtBlock","params":["latest"],"id":1}' \ - http://localhost:8547 + http://localhost:8560pages/operators/chain-operators/deploy/sequencer-node.mdx (1)
265-290
: Add a secrets handling warning after the .env example.Protect sensitive values and align with secret management best practices.
JWT_SECRET=./jwt.txtImportant: Replace ALL placeholder values (
YOUR_ACTUAL_*
) with your real configuration values.
+
- Do not commit
.env
orjwt.txt
to version control. Restrict permissions (e.g.,chmod 600 .env jwt.txt
), and prefer environment injection or a secret manager in production environments.</blockquote></details> </blockquote></details> <details> <summary>🧹 Nitpick comments (5)</summary><blockquote> <details> <summary>pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx (3)</summary><blockquote> `21-24`: **Avoid first-person plural; use imperative tone.** Replace “so we can prove withdrawal validity” with neutral language. ```diff -After you have spun up your sequencer and batcher, you need to attach a proposer to post your L2 state roots data back onto L1 so we can prove withdrawal validity. The proposer is a critical component that enables trustless L2-to-L1 messaging and creates the authoritative view of L2 state from L1's perspective. +After you have spun up your sequencer and batcher, attach a proposer to post L2 state roots back onto L1 so that users can prove withdrawal validity. The proposer is a critical component that enables trustless L2-to-L1 messaging and creates the authoritative view of L2 state from L1's perspective.
71-73
: Use title case for tab names.Follow docs style for UI labels.
-<Tabs items={['Build from source', 'Using Docker']}> +<Tabs items={['Build From Source', 'Using Docker']}>
431-446
: Use sentence case for headers.Adjust H2 headers to sentence case per style guide.
-## What's Next? +## What's next? @@ -## Need Help? +## Need help?pages/operators/chain-operators/deploy/sequencer-node.mdx (2)
90-92
: Minor grammar fix.Improve readability.
-For spinning up a sequencer, we recommend building from source as it provides better control, and helps with debugging. -In this guide Docker alternative is also provided. +For spinning up a sequencer, build from source for better control and easier debugging. +In this guide, a Docker alternative is also provided.
93-95
: Use title case for tab names.Capitalize “Docker” and each word in UI labels.
- <Tabs items={['Build from source', 'Using docker']}> + <Tabs items={['Build From Source', 'Using Docker']}>
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
pages/operators/chain-operators/deploy/proposer-setup-guide.mdx
(1 hunks)pages/operators/chain-operators/deploy/sequencer-node.mdx
(2 hunks)pages/operators/chain-operators/deploy/spin-batcher.mdx
(2 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
(1 hunks)pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- pages/operators/chain-operators/deploy/proposer-setup-guide.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
- pages/operators/chain-operators/tutorials/create-l2-rollup/op-batcher-setup.mdx
🧰 Additional context used
📓 Path-based instructions (1)
**/*.mdx
⚙️ CodeRabbit Configuration File
**/*.mdx
: "ALWAYS review Markdown content THOROUGHLY with the following criteria:
- First, check the frontmatter section at the top of the file:
- For regular pages, ensure ALL these fields are present and not empty:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] personas: [non-empty array] categories: [non-empty array] content_type: [valid type] ---
- For landing pages (index.mdx or files with ), only these fields are required:
--- title: [non-empty] lang: [non-empty] description: [non-empty] topic: [non-empty] ---
- If any required fields are missing or empty, comment:
'This file appears to be missing required metadata. Please check keywords.config.yaml for valid options and add the required fields manually. You can validate your changes by running:pnpm validate-metadata ```'
- Use proper nouns in place of personal pronouns like 'We' and 'Our' to maintain consistency in communal documentation.
- Avoid gender-specific language and use the imperative form.
- Monitor capitalization for emphasis. Avoid using all caps, italics, or bold for emphasis.
- Ensure proper nouns are capitalized in sentences.
- Apply the Oxford comma.
- Use proper title case for buttons, tab names, page names, and links. Sentence case should be used for body content and short phrases, even in links.
- Use correct spelling and grammar at all times (IMPORTANT).
- For H1, H2, and H3 headers:
- Use sentence case, capitalizing only the first word.
- Preserve the capitalization of proper nouns, technical terms, and acronyms as defined in the 'nouns.txt' file located in the root directory of the project.
- Do not automatically lowercase words that appear in the 'nouns.txt' file, regardless of their position in the header.
- Flag any headers that seem to inconsistently apply these rules for manual review.
- When rev...
Files:
pages/operators/chain-operators/deploy/spin-batcher.mdx
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
pages/operators/chain-operators/deploy/sequencer-node.mdx
🧠 Learnings (1)
📚 Learning: 2025-02-20T08:02:49.192Z
Learnt from: sbvegan
PR: ethereum-optimism/docs#1376
File: pages/stack/interop/tutorials/deploy-superchain-erc20.mdx:125-131
Timestamp: 2025-02-20T08:02:49.192Z
Learning: Use descriptive placeholders (e.g., 'YOUR_KEY_HERE') instead of example values when documenting sensitive information like private keys in documentation files to prevent users from accidentally using insecure values.
Applied to files:
pages/operators/chain-operators/deploy/sequencer-node.mdx
🔇 Additional comments (1)
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx (1)
1-17
: Frontmatter looks complete.All required metadata fields are present and non-empty for a regular page.
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
Show resolved
Hide resolved
pages/operators/chain-operators/tutorials/create-l2-rollup/op-proposer-setup.mdx
Outdated
Show resolved
Hide resolved
…ons, update op-batcher image version to v1.13.2, and enhance clarity in docker-compose.yml file creation.
…date links, and remove outdated content. Enhance clarity in deployment instructions and ensure accurate references to the op-challenger setup.
…ation steps, add prerequisites, and improve instructions for building and deploying the challenger. Correct DisputeGameFactory address extraction command in proposer setup guide for accuracy.
…n, clarify L1StandardBridge address retrieval, and enhance deposit instructions for improved user experience.
… removing home directory references, update configuration file paths to reflect local directory structure, and enhance clarity in workspace organization across batcher, sequencer, and proposer setup guides.
…n setup instructions, enhance clarity on workspace organization, and update environment variable setup for improved user experience. Include additional details on batcher parameters and verification steps to ensure operational readiness.
…ding file movement and enhance clarity on installation steps for improved user understanding.
… into clear, sequential actions, improve clarity on file movement and permissions, and provide verification step to ensure successful installation.
…ntation to streamline instructions and improve clarity for users.
… DisputeGameFactory address extraction to ensure accuracy in setup instructions.
…erience level and familiarity with Ethereum development concepts to better prepare users for the tutorial.
…or better organization, clarify setup instructions for op-deployer and sequencer, and ensure consistency in file paths across the documentation.
…re for batcher, proposer, and challenger setups, ensuring all directories are created within the rollup directory. Update configuration file paths for clarity and consistency across tutorials.
…n file paths by replacing hardcoded chain ID with a placeholder, and enhance directory structure explanation for improved user understanding.
…pecifying the importance of prestate files in the Docker Compose setup and streamline the service configuration section for better user comprehension.
… 'prestate-proof-mt64' for enhanced vocabulary support.
…ptimism/docs into update-l2-testnet-tut
…e '0x' prefix from private key placeholders in multiple files for consistency. Update tutorial content to enhance clarity and improve directory structure explanations.
…paths by removing '0x' prefix from GAME_FACTORY_ADDRESS placeholders, clarify directory structure in tutorials, and update instructions for copying prestate files to enhance user understanding.
Description
This PR adds a complete, modernized tutorial for deploying an OP Stack testnet chain using the latest
op-deployer
workflow. The tutorial replaces outdated manual deployment approaches with current best practices and provides a step-by-step guide for setting up a full testnet chain.Tests
Additional context
Metadata