Skip to content

How do estimate the cost of interop messages (spoiler: nearly nothing) #1629

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

Merged
merged 9 commits into from
Jun 2, 2025

Conversation

qbzzt
Copy link
Contributor

@qbzzt qbzzt commented May 26, 2025

Description

A page to explain what these costs are, and how to calculate them.

Tests

N/A

Additional context

N/A

Metadata

N/A

@qbzzt qbzzt requested a review from a team as a code owner May 26, 2025 19:24
Copy link

netlify bot commented May 26, 2025

Deploy Preview for docs-optimism ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 139b283
🔍 Latest deploy log https://app.netlify.com/projects/docs-optimism/deploys/6838d0e23f814a00081575b5
😎 Deploy Preview https://deploy-preview-1629--docs-optimism.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

coderabbitai bot commented May 26, 2025

📝 Walkthrough

"""

Walkthrough

A new documentation page, "Estimating the cost of interop messages," was added to the Superchain interoperability section. This guide explains the gas cost components for interoperability messages, covering both the CrossL2Inbox and L2ToL2CrossDomainMessenger protocols. The metadata JSON was updated to reference this new page. Additionally, a minor update was made to the word list file by removing "custom-bridge" and reordering "Devnets" and "devnet".

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant GuidePage
    participant SuperchainProtocols
    User->>GuidePage: Access "Estimating the cost of interop messages"
    GuidePage->>SuperchainProtocols: Retrieve cost components for CrossL2Inbox
    GuidePage->>SuperchainProtocols: Retrieve cost components for L2ToL2CrossDomainMessenger
    GuidePage-->>User: Present detailed cost breakdowns and guidance
Loading

Possibly related PRs

Suggested labels

documentation

Suggested reviewers

  • krofax
    """

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.

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.

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 (4)
pages/interop/estimate-costs.mdx (4)

3-3: Refine page description: The description metadata is generic; consider specifying cost estimation, e.g., “Estimate the gas cost of Superchain interop messages.”


27-27: Improve phrase clarity: Change “At writing (May 2025)” to “At the time of writing (May 2025)” for readability.


40-40: Add missing comma: Insert a comma after “chain” in “for a particular chain, there is still an executing message” for correct punctuation.

🧰 Tools
🪛 LanguageTool

[typographical] ~40-~40: Consider adding a comma.
Context: ...f it is turned on for a particular chain there is still an executing message when usin...

(IF_THERE_COMMA)


49-49: Use en dash for numeric ranges: Consider replacing “1-4” with “1–4” for typographic consistency.

🧰 Tools
🪛 LanguageTool

[typographical] ~49-~49: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... log entry emitted by Solidity code has 1-4 topics (t) and an unlimited number of u...

(HYPHEN_TO_EN)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8aaaef5 and b3e80af.

📒 Files selected for processing (3)
  • pages/interop/_meta.json (1 hunks)
  • pages/interop/estimate-costs.mdx (1 hunks)
  • words.txt (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. 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]
    ---
    1. 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]
    ---
    1. 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:
    1. Use sentence case, capitalizing only the first word.
    2. 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.
    3. 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 reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/estimate-costs.mdx
🪛 LanguageTool
pages/interop/estimate-costs.mdx

[typographical] ~40-~40: Consider adding a comma.
Context: ...f it is turned on for a particular chain there is still an executing message when usin...

(IF_THERE_COMMA)


[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...not care. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[typographical] ~49-~49: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... log entry emitted by Solidity code has 1-4 topics (t) and an unlimited number of u...

(HYPHEN_TO_EN)


[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~109-~109: Possible missing article found.
Context: ...ceed 100,000 gas. At writing, each of gas units costs approximately $*3×10-9...

(AI_HYDRA_LEO_MISSING_THE)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (3)
words.txt (1)

97-97: Alphabetic order and case pairing is correct: The entry “Devnets” now follows “devnet” and precedes “devnets”, maintaining the uppercase/lowercase pairing pattern.

pages/interop/_meta.json (1)

16-16: Add metadata entry for cost estimation guide: The "estimate-costs": "Cost of interop messages" mapping correctly references the new page and follows existing conventions.

pages/interop/estimate-costs.mdx (1)

1-17: Frontmatter is complete: All required metadata fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty.

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 (8)
pages/interop/estimate-costs.mdx (8)

26-31: (Optional) Add a callout heading
Right now the <Callout type="info"> has no heading. For clarity, you might consider providing a concise title, e.g.:

<Callout title="Gas cost overview" type="info"></Callout>

33-40: Hyphenate “cross-domain” within body text
Use “cross-domain messenger” to correctly hyphenate the compound adjective. For example:

- or use the cross domain messenger, [`L2ToL2CrossDomainMessenger`](…)
+ or use the cross-domain messenger, [`L2ToL2CrossDomainMessenger`](…)

44-44: Hyphenate “low-level protocol”
Compound adjectives should be hyphenated:

- This is the low level protocol used by all interop protocols…
+ This is the low-level protocol used by all interop protocols…
🧰 Tools
🪛 LanguageTool

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...not care. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


71-72: Enhance readability with commas
Enclose the parenthetical clause with commas for clarity:

- Compared with that, the hashing which costs approximately …, is negligible.
+ Compared with that, the hashing, which costs approximately …, is negligible.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


73-73: Remove first-person and weak intensifier
Replace “We can usually ignore … really large amount” with a neutral construction:

- We can usually ignore the memory expansion cost, unless the validating contract uses a really large amount of memory.
+ The memory expansion cost can usually be ignored unless the validating contract uses a significant amount of memory.

74-74: Remove unnecessary comma before “because”
The “because” clause is essential—drop the comma:

- The cost of using the message is beyond the scope here, because it depends on your application.
+ The cost of using the message is beyond the scope here because it depends on your application.
🧰 Tools
🪛 LanguageTool

[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)


78-78: Hyphenate header “Cross-domain messenger”
The header should read:

- ## Cross domain messenger
+ ## Cross-domain messenger

48-109: Use inline code for mathematical formulas
Rather than italicizing formulas with *…*, wrap them in backticks for consistent, code-style formatting. For example:

- The gas cost is  [*375(t+1)+8n*](…).
+ The gas cost is `375*(t+1)+8*n` ([source link](…)).

This improves readability and aligns with other code examples.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b3e80af and a9b77ce.

📒 Files selected for processing (1)
  • pages/interop/estimate-costs.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. 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]
    ---
    1. 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]
    ---
    1. 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:
    1. Use sentence case, capitalizing only the first word.
    2. 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.
    3. 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 reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/estimate-costs.mdx
🪛 LanguageTool
pages/interop/estimate-costs.mdx

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...not care. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (2)
pages/interop/estimate-costs.mdx (2)

1-17: Metadata completeness
All required frontmatter fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty.


19-23: Verify if a WIP callout is intended
The <InteropCallout /> component signals that this page is a work in progress. If the guide is finalized, consider removing this to avoid implying incomplete documentation.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
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)
pages/interop/estimate-costs.mdx (1)

76-76: Fix grammatical error in cost summary: Remove the extraneous word “has” for clarity, as previously noted.

-So the main cost drivers are the 21,000 transaction gas cost has plus the cost of posting a *164+32t+n* byte transaction.
+So the main cost drivers are the 21,000 transaction gas cost plus the cost of posting a *164+32t+n* byte transaction.
🧹 Nitpick comments (7)
pages/interop/estimate-costs.mdx (7)

27-27: Add comma after introductory phrase: Add a comma after the parenthetical to improve readability.

-  At the time of writing (May 2025) the cost of a hundred interop messages is just a few cents.
+  At the time of writing (May 2025), the cost of a hundred interop messages is just a few cents.

35-40: Maintain parallel structure in bullet list: For consistency, start each factor with a noun phrase rather than a question or clause. For example:

-*   How you pass the message.
+*   Message passing method.
*   The transaction type.
*   Whether autorelay is turned on.

Alternatively:

-*   How you pass the message.
+*   Message passing method
-*   The transaction type.
+*   Transaction type
-*   Whether autorelay is turned on.
+*   Autorelay setting

44-44: Use hyphen in compound adjective: Compound adjective “low level protocol” should be hyphenated to “low-level protocol” for correctness.

-This is the low level protocol used by all interop protocols, including `L2ToL2CrossDomainMessenger`.
+This is the low-level protocol used by all interop protocols, including `L2ToL2CrossDomainMessenger`.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...not care. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


71-71: Use commas for non-restrictive clause: Insert commas around the “which” clause for correct punctuation.

-Compared with that, the hashing which costs approximately [*30+0.2×<number of bytes>*](…) is negligible.
+Compared with that, the hashing, which costs approximately [*30+0.2×<number of bytes>*](…) is negligible.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


72-72: Avoid personal pronouns and reduce weak language: Rewrite to remove “We” and the intensifier “really” for a more objective tone.

-We can usually ignore the memory expansion cost, unless the validating contract uses a really large amount of memory.
+The memory expansion cost can usually be ignored unless the validating contract uses a large amount of memory.
🧰 Tools
🪛 LanguageTool

[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


74-74: Remove comma before “because”: The “because” clause is essential; remove the comma for proper style.

-The cost of using the message is beyond the scope here, because it depends on your application.
+The cost of using the message is beyond the scope here because it depends on your application.
🧰 Tools
🪛 LanguageTool

[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)


108-108: Avoid italics for emphasis: The word “extremely” is italicized for emphasis. Consider rephrasing without italics.

-Unless the message is *extremely* long, the cost of an interop message...
+Unless the message is exceptionally long, the cost of an interop message...
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a9b77ce and 1317a9c.

📒 Files selected for processing (1)
  • pages/interop/estimate-costs.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. 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]
    ---
    1. 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]
    ---
    1. 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:
    1. Use sentence case, capitalizing only the first word.
    2. 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.
    3. 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 reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/estimate-costs.mdx
🪛 LanguageTool
pages/interop/estimate-costs.mdx

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...not care. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~71-~71: A comma might be missing here.
Context: ...t 21,000 gas. Compared with that, the hashing which costs approximately [*30+0.2×<nu...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[style] ~72-~72: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~74-~74: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. So the...

(COMMA_BEFORE_BECAUSE)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (1)
pages/interop/estimate-costs.mdx (1)

1-17: Frontmatter is complete: All required metadata fields for a guide page are present and non-empty.

Co-authored-by: Blessing Krofegha <[email protected]>
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 (4)
pages/interop/estimate-costs.mdx (4)

44-44: Compound adjective should be hyphenated
The phrase “low level protocol” is a compound adjective modifying “protocol.” Please hyphenate it for clarity.

- This is the low level protocol used by all interop protocols, including `L2ToL2CrossDomainMessenger`.
+ This is the low-level protocol used by all interop protocols, including `L2ToL2CrossDomainMessenger`.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...on costs. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


49-49: Use an en dash for numeric range
For ranges, replace the hyphen with an en dash.

- A log entry emitted by Solidity code contains 1-4 topics (t) and unlimited unstructured data bytes (n). 
+ A log entry emitted by Solidity code contains 1–4 topics (t) and unlimited unstructured data bytes (n). 
🧰 Tools
🪛 LanguageTool

[typographical] ~49-~49: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...entry emitted by Solidity code contains 1-4 topics (t) and unlimited unstructured d...

(HYPHEN_TO_EN)


77-77: Replace weak intensifier
Consider swapping “really large amount of memory” for a stronger phrase like “substantial amount of memory.”

- We can usually ignore the [memory expansion cost](https://www.evm.codes/about#memoryexpansion), unless the validating contract uses a really large amount of memory.
+ We can usually ignore the [memory expansion cost](https://www.evm.codes/about#memoryexpansion), unless the validating contract uses a substantial amount of memory.
🧰 Tools
🪛 LanguageTool

[style] ~77-~77: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


79-79: Remove unnecessary comma before “because”
The “because” clause is essential to the meaning; remove the comma for correct formatting.

- The cost of using the message is beyond the scope here, because it depends on your application.
+ The cost of using the message is beyond the scope here because it depends on your application.
🧰 Tools
🪛 LanguageTool

[formatting] ~79-~79: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. The ma...

(COMMA_BEFORE_BECAUSE)

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1317a9c and 3e29d4c.

📒 Files selected for processing (1)
  • pages/interop/estimate-costs.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. 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]
    ---
    1. 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]
    ---
    1. 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:
    1. Use sentence case, capitalizing only the first word.
    2. 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.
    3. 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 reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/estimate-costs.mdx
🪛 LanguageTool
pages/interop/estimate-costs.mdx

[uncategorized] ~44-~44: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...on costs. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[typographical] ~49-~49: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...entry emitted by Solidity code contains 1-4 topics (t) and unlimited unstructured d...

(HYPHEN_TO_EN)


[style] ~77-~77: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~79-~79: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. The ma...

(COMMA_BEFORE_BECAUSE)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism

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 (6)
pages/interop/estimate-costs.mdx (6)

42-43: Hyphenate compound adjective
Change “low level protocol” to “low-level protocol” to correctly hyphenate the compound adjective.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~42-~42: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...on chain. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


47-48: Use en dash for numeric range
Replace “1-4 topics” with “1–4 topics” (en dash) to follow typographical conventions for ranges.

🧰 Tools
🪛 LanguageTool

[typographical] ~47-~47: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...entry emitted by Solidity code contains 1-4 topics (t) and unlimited unstructured d...

(HYPHEN_TO_EN)


60-61: Hyphenate measurement unit
Update “32 byte hash” to “32-byte hash” to properly hyphenate the unit of measure.


73-76: Refine style and punctuation

  • Replace the weak intensifier “really large amount of memory” with “significant amount of memory.”
  • Remove the comma before “because” in “The cost of using the message is beyond the scope here because it depends on your application.”
🧰 Tools
🪛 LanguageTool

[style] ~75-~75: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


81-83: Hyphenate protocol name
Consider changing the header from “Cross domain messenger” to “Cross-domain messenger” to hyphenate the compound adjective.


100-102: Avoid second-person phrasing
Rephrase “then you don’t care about the cost” to a third-person construction, e.g.:

“When autorelay is enabled, the chain operator bears the execution cost.”

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3e29d4c and 139b283.

📒 Files selected for processing (1)
  • pages/interop/estimate-costs.mdx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.mdx`: "ALWAYS review Markdown content THOROUGHLY with the following criteria: - First, check the frontmatter section at the top of the file: 1. For regular pages, ensure AL...

**/*.mdx: "ALWAYS review Markdown content THOROUGHLY with the following criteria:

  • First, check the frontmatter section at the top of the file:
    1. 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]
    ---
    1. 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]
    ---
    1. 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:
    1. Use sentence case, capitalizing only the first word.
    2. 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.
    3. 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 reviewing capitalization, always refer to the 'nouns.txt' file for the correct capitalization of proper nouns and technical terms specific to the project.
    "
  • pages/interop/estimate-costs.mdx
🪛 LanguageTool
pages/interop/estimate-costs.mdx

[uncategorized] ~42-~42: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...on chain. ## CrossL2Inbox This is the low level protocol used by all interop protocols,...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[typographical] ~47-~47: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...entry emitted by Solidity code contains 1-4 topics (t) and unlimited unstructured d...

(HYPHEN_TO_EN)


[style] ~75-~75: As an alternative to the over-used intensifier ‘really’, consider replacing this phrase.
Context: ...n), unless the validating contract uses a really large amount of memory. The cost of using th...

(EN_WEAK_ADJECTIVE)


[formatting] ~77-~77: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...ing the message is beyond the scope here, because it depends on your application. The ma...

(COMMA_BEFORE_BECAUSE)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-optimism
  • GitHub Check: Header rules - docs-optimism
  • GitHub Check: Pages changed - docs-optimism
🔇 Additional comments (12)
pages/interop/estimate-costs.mdx (12)

1-17: Frontmatter metadata completeness and validity
All required frontmatter fields (title, lang, description, topic, personas, categories, content_type) are present and non-empty. The extra is_imported_content field isn’t in the core requirements but doesn’t conflict.


19-23: Confirm WIP callout usage
The <InteropCallout /> component suggests this page is still a work in progress. Please verify whether this should remain or be removed for the finalized documentation.


24-24: H1 header is correct
The title uses sentence case appropriately and clearly describes the page content.


26-31: Info callout content
The <Callout> succinctly communicates gas-cost context, adheres to sentence case, and avoids over-emphasis.


33-38: Introduction section
The list of cost-determining factors is clearly structured, and the verb choice “determine” is correct. No personal pronouns used here.


66-72: Byte overhead breakdown
The explanation of “164 + 32t + n” bytes and the accompanying list items are clear and correctly formatted.


79-79: Cost drivers summary
The sentence correctly uses sentence case and clearly states the main gas-cost drivers.


85-91: Initiating message subsection
The storage-write breakdown and gas numbers are precise; terminology and formatting are consistent.


96-97: Initiating gas cost summary
The summary of ~27,100 gas (plus base transaction exclusion note) is accurate and well-phrased.


103-108: Executing message details
The breakdown of storage writes and transaction gas costs is clear, accurate, and correctly formatted.


111-113: Conclusion formatting
The inline code for $3×10^-9 and the conversion into cents is clear, consistent, and uses sentence case.


114-120: Next steps links
The bulleted action items use imperative voice and sentence case correctly, and link labels are formatted appropriately.

@krofax krofax merged commit 53b77a7 into ethereum-optimism:main Jun 2, 2025
12 checks passed
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.

3 participants