Skip to content
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

Update Docs - general architecture & data flows #212

Merged
merged 24 commits into from
Sep 17, 2024
Merged

Conversation

NiloCK
Copy link
Collaborator

@NiloCK NiloCK commented Sep 13, 2024

The meat of this PR is in the new files

blocks.md
deposits.md
l2-mempool.md
withdrawals.md

But there is also a modification to the overview doc.

Reading overview followed by the new files (in the order listed above) should mimic how the page presents.

Note: interact.md is a stub, marked draft in the front matter. As I understand it, it won't be

Summary by CodeRabbit

  • New Features

    • Introduced a "Build" category in documentation with a hands-on tutorial for creating Monomer applications.
    • Added new documents covering interactions with Monomer rollup chains, deposit and withdrawal processes, and user workflows.
    • Enhanced navigation with a new link to the Discord community for user support.
  • Documentation

    • Improved clarity and structure in existing documents related to Monomer applications and Cosmos SDK integration.
    • Updated the overview of Monomer's functionality and architecture for better user understanding.

Copy link
Contributor

coderabbitai bot commented Sep 13, 2024

Warning

Rate limit exceeded

@NiloCK has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 22 minutes and 38 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between a8f9dd3 and 0d91efd.

Walkthrough

The pull request introduces several enhancements to the Monomer documentation and codebase. It adds new instructional documents for building applications, interacting with rollup chains, and managing deposits and withdrawals. Additionally, a new category for "Build" is created in the documentation structure, and various existing documents are updated for clarity and organization. A new link to the Discord community is also added to the navigation configuration.

Changes

File Path Change Summary
doc/docs/build/_category_.json Added a new category "Build" with a tutorial link for creating a Monomer application.
doc/docs/build/create-an-app-with-monomer.md Updated structure and clarity of instructions for creating a Monomer application with Cosmos SDK.
doc/docs/build/interact.md Introduced a guide for interacting with a Monomer rollup chain via API endpoints.
doc/docs/intro.md Added explanations of Monomer's functionality and architecture, including references to new sections.
doc/docs/learn/blocks.md Introduced a document outlining Monomer application architecture and state management.
doc/docs/learn/deposits.md Documented the process for depositing ETH into the Monomer rollup chain via the Optimism Portal.
doc/docs/learn/l2-mempool.md Explained the functionality of the Rollup Transaction Mempool within Monomer.
doc/docs/learn/withdrawals.md Outlined the withdrawal process for Monomer via the Optimism Portal L1 contract.
doc/docs/learn/workflows.md Documented user workflows for depositing and withdrawing assets in Monomer applications.
doc/docusaurus.config.ts Added a link to the Discord community in the navigation menu.

Possibly related issues

  • Considerations re: enriched Deposits workflow #106: This PR addresses aspects of the deposits workflow, specifically documenting how deposits are processed and the implications for transaction execution, which relates to the concerns raised about the current limitations in Monomer's deposit support.

🐰 In the garden where bunnies play,
New docs bloom bright, guiding the way.
With links to Discord, come join the cheer,
Monomer's magic is finally here!
Build, deposit, withdraw with ease,
Hop into learning, it's sure to please! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

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.
    -- Generate unit testing code for this file.
    • 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 generate unit testing code for this file.
    -- @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 generate interesting stats about this repository and render them as a table.
    -- @coderabbitai read src/utils.ts and generate unit testing code.
    -- @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.

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 resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

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

CodeRabbit Configuration File (.coderabbit.yaml)

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

Documentation and Community

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

@NiloCK NiloCK marked this pull request as ready for review September 13, 2024 19:25
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Outside diff range and nitpick comments (3)
doc/docs/learn/l2-mempool.md (1)

1-32: Excellent documentation of the Rollup Transaction Mempool!

The document provides a clear and concise overview of how transactions are submitted, validated, and included in blocks within the Monomer rollup chain. Key points such as the use of standard Cosmos APIs and transaction formats are well-highlighted, ensuring compatibility with existing clients.

The workflow diagram effectively illustrates the transaction processing steps, making it easy for developers to understand the process. The warning about the absence of gas metering logic is important to inform developers about potential block size issues.

To further improve the documentation, consider adding a brief explanation of the basic validation performed by Monomer on the submitted transactions (mentioned in step 2 of the workflow). This will give developers a better understanding of what checks are performed before transactions are added to the mempool.

doc/docs/learn/blocks.md (1)

46-46: Fix the heading level.

The heading level for "Deposit Tx Pre-Processing" should be h2 instead of h3 to maintain a consistent hierarchy and adhere to the Markdown best practices.

-### 1. Deposit Tx Pre-Processing
+## 1. Deposit Tx Pre-Processing
Tools
Markdownlint

46-46: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)

doc/docs/build/create-an-app-with-monomer.md (1)

210-210: Specify the language for the fenced code block.

To enable syntax highlighting and improve readability, please specify the language for the fenced code block.

Since the code block contains a Go module directive, add go as the language specifier:

-```
+```go
 cosmossdk.io/core => cosmossdk.io/core v0.11.1

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

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

(MD040, fenced-code-language)

</blockquote></details>

</details>

</blockquote></details>

</blockquote></details>

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

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

<details>
<summary>Commits</summary>

Files that changed from the base of the PR and between 609bc9995b12777ed2d76c789bf422211bf4d586 and 81317703ba7ae79e9b789df01d856292fc62709b.

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

* `doc/static/img/deposits-dark.png` is excluded by `!**/*.png`
* `doc/static/img/deposits-light.png` is excluded by `!**/*.png`
* `doc/static/img/l2-dark.png` is excluded by `!**/*.png`
* `doc/static/img/l2-light.png` is excluded by `!**/*.png`
* `doc/static/img/withdrawals-dark.png` is excluded by `!**/*.png`
* `doc/static/img/withdrawals-light.png` is excluded by `!**/*.png`

</details>

<details>
<summary>Files selected for processing (10)</summary>

* doc/docs/build/_category_.json (1 hunks)
* doc/docs/build/create-an-app-with-monomer.md (13 hunks)
* doc/docs/build/interact.md (1 hunks)
* doc/docs/intro.md (1 hunks)
* doc/docs/learn/blocks.md (1 hunks)
* doc/docs/learn/deposits.md (1 hunks)
* doc/docs/learn/l2-mempool.md (1 hunks)
* doc/docs/learn/withdrawals.md (1 hunks)
* doc/docs/learn/workflows.md (1 hunks)
* doc/docusaurus.config.ts (1 hunks)

</details>








<details>
<summary>Files skipped from review due to trivial changes (1)</summary>

* doc/docs/build/_category_.json

</details>



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

<details>
<summary>Markdownlint</summary><blockquote>

<details>
<summary>doc/docs/learn/workflows.md</summary><blockquote>

14-14: null
Bare URL used

(MD034, no-bare-urls)

</blockquote></details>
<details>
<summary>doc/docs/learn/blocks.md</summary><blockquote>

46-46: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)

---

14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

22-22: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

23-23: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

24-24: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

26-26: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

27-27: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

28-28: Column: 1
Hard tabs

(MD010, no-hard-tabs)

</blockquote></details>
<details>
<summary>doc/docs/build/create-an-app-with-monomer.md</summary><blockquote>

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

(MD040, fenced-code-language)

</blockquote></details>

</blockquote></details>
<details>
<summary>LanguageTool</summary><blockquote>

<details>
<summary>doc/docs/intro.md</summary><blockquote>

[style] ~20-~20: Consider a shorter alternative to avoid wordiness.
Context: ...replaces the CometBFT consensus layer.  In order to achieve this, Monomer performs three pr...

(IN_ORDER_TO_PREMIUM)

</blockquote></details>
<details>
<summary>doc/docs/learn/deposits.md</summary><blockquote>

[grammar] ~12-~12: Possible typo detected: Did you mean to write ‘from’ instead of ‘form’?
Context: ...ted. General `transactions` originating form the L1 are a roadmap item. :::  The dep...

(TYPO_FORM_FROM)

---

[style] ~36-~36: Consider a shorter alternative to avoid wordiness.
Context: ...osit workflow.  ## The Monomer Adapter  In order to communicate with the `op-node`, Monomer...

(IN_ORDER_TO_PREMIUM)

---

[uncategorized] ~39-~39: This expression is ususally spelled with a hyphen
Context: ...ause the OP stack and the EngineAPI are Ethereum specific, Monomer's chief responsibility is to t...

(SPECIFIC_HYPHEN)

</blockquote></details>

</blockquote></details>

</details>
<details>
<summary>Additional comments not posted (19)</summary><blockquote>

<details>
<summary>doc/docs/learn/workflows.md (2)</summary><blockquote>

`1-14`: **Great work on the new user workflows documentation!**

The content is well-structured, provides a good level of detail, and aligns with the PR objectives. Focusing on aspects unique to Monomer and referencing external resources for more details is the right approach for this type of documentation.

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

14-14: null
Bare URL used

(MD034, no-bare-urls)

</blockquote></details>

</details>

---

`14-14`: **The bare URL is acceptable in this context.**

The static analysis tool flagged the bare URL as an issue. However, in the context of documentation, using a bare URL for referencing external resources is acceptable and does not require any changes.

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

14-14: null
Bare URL used

(MD034, no-bare-urls)

</blockquote></details>

</details>

</blockquote></details>
<details>
<summary>doc/docs/build/interact.md (1)</summary><blockquote>

`1-23`: **LGTM! The overall structure and content of the file are well-organized.**

The file provides a good overview of the different types of interactions with a Monomer rollup chain. The prerequisites section is helpful in guiding users to set up their environment before proceeding with the interactions. The note about referring to the e2e test suite for the latest examples is a good practice to keep the documentation up-to-date.

</blockquote></details>
<details>
<summary>doc/docs/intro.md (5)</summary><blockquote>

`16-20`: **Excellent overview!**

The added content provides a clear and concise overview of how Monomer integrates with the OP stack and Cosmos application, aligning with the PR objective.

<details>
<summary>Tools</summary>

<details>
<summary>LanguageTool</summary><blockquote>

[style] ~20-~20: Consider a shorter alternative to avoid wordiness.
Context: ...replaces the CometBFT consensus layer.  In order to achieve this, Monomer performs three pr...

(IN_ORDER_TO_PREMIUM)

</blockquote></details>

</details>

---

`21-26`: **Great addition!**

The list of Monomer's primary tasks provides a detailed and informative explanation of its functionality, enhancing the clarity of the documentation as mentioned in the PR objective and the AI-generated summary.

---

`27-30`: **Helpful visual aid!**

The architecture diagram is a valuable addition that visually represents Monomer's architecture, complementing the textual explanations and enhancing the clarity of the documentation.

---

`31-34`: **Useful navigation aid!**

The introduction of the new section guiding users through the documentation, specifically the reference to the [Learn] section, enhances the usability of the documentation and helps users find relevant information about data flows in Monomer, aligning with the PR objective and the AI-generated summary.

---

Line range hint `35-36`: **Helpful reference for developers!**

The reference to the [Build] section, which provides a tutorial on building an application with Monomer, is a valuable addition that helps developers navigate the documentation and find relevant information, aligning with the PR objective and the AI-generated summary.

<details>
<summary>Tools</summary>

<details>
<summary>LanguageTool</summary><blockquote>

[style] ~20-~20: Consider a shorter alternative to avoid wordiness.
Context: ...replaces the CometBFT consensus layer.  In order to achieve this, Monomer performs three pr...

(IN_ORDER_TO_PREMIUM)

</blockquote></details>

</details>

</blockquote></details>
<details>
<summary>doc/docs/learn/blocks.md (4)</summary><blockquote>

`6-34`: **LGTM!**

The custom `Block` and `Header` types, along with their helper functions, provide a clean way to ensure consistency between the Cosmos SDK and EVM representations. The code snippets are well-structured and follow Go conventions.

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

22-22: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

23-23: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

24-24: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

26-26: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

27-27: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

28-28: Column: 1
Hard tabs

(MD010, no-hard-tabs)

</blockquote></details>

</details>

---

`36-41`: **Looks good!**

The state management approach, with the main state in the Cosmos Appchain and supplementary state in an EVM sidecar, is well-explained and justified. This design choice allows for the reuse of existing components on both L1 and L2, avoiding the need to modify L1 components of the OP Stack.

---

`42-58`: **Well-explained state transition function!**

The three phases of Monomer's block production function are clearly described, covering the integration of L1 transactions, block creation with Cosmos SDK transactions, and withdrawal processing. This provides a comprehensive overview of how Monomer applications handle the state transition.

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

46-46: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)

</blockquote></details>

</details>

---

`14-15`: **Skipping indentation style suggestions.**

The static analysis tool suggests using hard tabs for indentation in the code snippets. However, enforcing a specific indentation style (tabs vs. spaces) is a matter of personal preference or project convention. As long as the indentation is consistent within the codebase, it does not affect the functionality or readability of the code.



Also applies to: 22-28

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)

---

15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)

</blockquote></details>

</details>

</blockquote></details>
<details>
<summary>doc/docs/learn/withdrawals.md (1)</summary><blockquote>

`1-42`: **Great job on documenting the withdrawal process!**

The document provides a clear and comprehensive explanation of the withdrawal process for Monomer, including:
- The role of Monomer in facilitating ETH withdrawals through the Optimism Portal L1 contract.
- The withdrawal transaction flow, starting from the Cosmos-SDK appchain, processed by the Monomer `x/rollup` module and Monomer's builder, and then handled by the OP-Stack components on L1.
- The visual representation of the withdrawal workflow, which enhances the understanding of the process.
- The note about the impracticality and slowness of the canonical bridge exit mechanism, which sets the right expectations for users.

The content is well-structured and effectively communicates the key aspects of the withdrawal process.

</blockquote></details>
<details>
<summary>doc/docusaurus.config.ts (1)</summary><blockquote>

`93-96`: **LGTM!**

The addition of the Discord link in the footer is a valuable enhancement to the community section. It provides users with an additional support channel and aligns with the PR objective of updating the docs.

The changes are minimal, the link URL is correct, the label is clear, and the placement is appropriate. No issues found.

</blockquote></details>
<details>
<summary>doc/docs/learn/deposits.md (4)</summary><blockquote>

`1-16`: **LGTM!**

The introduction provides a clear and concise overview of the deposit workflow. The note about the current limitations and future roadmap is helpful for setting expectations.

<details>
<summary>Tools</summary>

<details>
<summary>LanguageTool</summary><blockquote>

[grammar] ~12-~12: Possible typo detected: Did you mean to write ‘from’ instead of ‘form’?
Context: ...ted. General `transactions` originating form the L1 are a roadmap item. :::  The dep...

(TYPO_FORM_FROM)

</blockquote></details>

</details>

---

`22-34`: **LGTM!**

The section provides a clear explanation of the OP Stack's role in the deposit workflow. It highlights the key components and their interactions, making it easier for readers to understand the process.

---

`35-59`: **LGTM!**

The section provides a clear explanation of Monomer's role in the deposit workflow and how it interacts with the OP Stack and the Cosmos-SDK appchain. The custom message type `MsgApplyL1Txs` is well-defined and documented.

Regarding the static analysis hints:
- The typo hint for "form" instead of "from" is not relevant to this section and can be ignored.
- The wordiness hint for "In order to" is a matter of style preference and does not affect the clarity of the explanation.
- The hyphenation hint for "Ethereum specific" is not applicable in this context, as "Ethereum" is a proper noun and should not be hyphenated.

<details>
<summary>Tools</summary>

<details>
<summary>LanguageTool</summary><blockquote>

[style] ~36-~36: Consider a shorter alternative to avoid wordiness.
Context: ...osit workflow.  ## The Monomer Adapter  In order to communicate with the `op-node`, Monomer...

(IN_ORDER_TO_PREMIUM)

---

[uncategorized] ~39-~39: This expression is ususally spelled with a hyphen
Context: ...ause the OP stack and the EngineAPI are Ethereum specific, Monomer's chief responsibility is to t...

(SPECIFIC_HYPHEN)

</blockquote></details>

</details>

---

`63-68`: **LGTM!**

The section provides a clear explanation of how the Cosmos-SDK appchain handles the deposit transactions. It highlights the key components and their responsibilities, making it easier for readers to understand the process.

</blockquote></details>
<details>
<summary>doc/docs/build/create-an-app-with-monomer.md (1)</summary><blockquote>

Line range hint `1-250`: **Great work on improving the documentation!**

The changes made to the document significantly enhance the clarity, structure, and flow of the instructions for creating an application with Monomer. The reorganization of key sections, such as the integration of Monomer into the Cosmos SDK application, and the addition of explicit directives for modifying the `go.mod` file, ensure that users have a comprehensive guide to successfully integrate Monomer with a Cosmos SDK application.

Keep up the excellent work in maintaining high-quality documentation!

<details>
<summary>Tools</summary>

<details>
<summary>Markdownlint</summary><blockquote>

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

(MD040, fenced-code-language)

</blockquote></details>

</details>

</blockquote></details>

</blockquote></details>

</details>

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

Comment on lines +17 to +23
## Submitting an L2 Cosmos SDK Transaction

## Submitting an L1 Deposit Transaction

## Submitting a Withdrawal Transaction

## Querying the Rollup Chain
Copy link
Contributor

Choose a reason for hiding this comment

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

Fill the empty sections with the relevant content.

The sections for each type of interaction (submitting L2 transactions, submitting L1 deposit transactions, submitting withdrawal transactions, and querying the rollup chain) are currently empty. Please fill these sections with the relevant content to provide a complete guide for users to interact with a Monomer rollup chain.

Copy link
Collaborator

@joshklop joshklop left a comment

Choose a reason for hiding this comment

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

An improvement over our current docs. I think we can iterate on this.

Thanks!

doc/docs/learn/blocks.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@natebeauregard natebeauregard left a comment

Choose a reason for hiding this comment

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

Changes look great! I'll update the withdrawals image with some up-to-date information in a follow-up PR

doc/docs/learn/blocks.md Outdated Show resolved Hide resolved
doc/docusaurus.config.ts Outdated Show resolved Hide resolved
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

Outside diff range and nitpick comments (3)
doc/docs/learn/blocks.md (3)

12-34: Consider removing the helper function implementations.

The type definitions for Block and Header provide a good high-level overview of the custom types used in Monomer applications. However, as mentioned in a previous review comment, the implementation details of the helper functions may change frequently.

To strike a balance between clarity and maintainability, consider keeping the type definitions but removing the helper function implementations. This way, the documentation focuses on the high-level structure without risking becoming outdated due to implementation changes.

Apply this diff to remove the helper function implementations:

 type Block struct {
 	Header *Header
 	Txs    bfttypes.Txs
 }
 
-func (b *Block) ToEth() (*ethtypes.Block, error) {...}
-func (b *Block) ToCometLikeBlock() *bfttypes.Block {...}
-
 type Header struct {
 	ChainID    ChainID
 	Height     uint64
 	Time       uint64
 	ParentHash common.Hash
 	StateRoot  common.Hash
 	GasLimit   uint64
 	Hash       common.Hash
 }
-
-func (h *Header) ToComet() *bfttypes.Header {...}
-func (h *Header) ToEth() *ethtypes.Header {...}
Tools
Markdownlint

14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)


15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)


22-22: Column: 1
Hard tabs

(MD010, no-hard-tabs)


23-23: Column: 1
Hard tabs

(MD010, no-hard-tabs)


24-24: Column: 1
Hard tabs

(MD010, no-hard-tabs)


25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)


26-26: Column: 1
Hard tabs

(MD010, no-hard-tabs)


27-27: Column: 1
Hard tabs

(MD010, no-hard-tabs)


28-28: Column: 1
Hard tabs

(MD010, no-hard-tabs)


46-58: Address the heading level issue and consider removing implementation details.

The overview of Monomer's block production function is helpful for understanding the overall process. However, there are two issues to address:

  1. As mentioned in a previous review comment, consider removing the implementation details of the withdrawal transaction post-processing phase to reduce the risk of the documentation becoming outdated. You can replace the specific details with a more general description of the purpose of this phase.

  2. The static analysis tool has flagged an issue with the heading level of the "Withdrawal Tx Post-Processing" section. To maintain consistency in the document structure, update the heading to use the correct level (h2 instead of h3).

Apply this diff to address both issues:

-### 3. Withdrawal Tx Post-Processing
+## 3. Withdrawal Tx Post-Processing
 
-The created block is inspected for withdrawal initiating transactions. Wherever an L2 transaction initiates a withdrawal, the corresponding updates are made to the EVM sidecar state via the `L2ToL1MessagePasser` contract.
+In this phase, the created block is inspected for transactions that initiate withdrawals. The necessary updates are made to the EVM sidecar state to reflect these withdrawals.
Tools
Markdownlint

46-46: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)


14-15: Replace hard tabs with spaces for indentation.

The static analysis tool has flagged the use of hard tabs for indentation in the Block and Header type definitions. To improve consistency and portability, it's recommended to use spaces instead of hard tabs for indentation.

Mixing tabs and spaces can lead to inconsistent indentation across different editors and platforms, making the code harder to read and maintain.

Please replace the hard tabs with spaces (2 or 4 spaces per indentation level) in the affected lines.

Also applies to: 22-28

Tools
Markdownlint

14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)


15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 0c9b5aa and 16014c3.

Files selected for processing (1)
  • doc/docs/learn/blocks.md (1 hunks)
Additional context used
Markdownlint
doc/docs/learn/blocks.md

46-46: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)


14-14: Column: 1
Hard tabs

(MD010, no-hard-tabs)


15-15: Column: 1
Hard tabs

(MD010, no-hard-tabs)


22-22: Column: 1
Hard tabs

(MD010, no-hard-tabs)


23-23: Column: 1
Hard tabs

(MD010, no-hard-tabs)


24-24: Column: 1
Hard tabs

(MD010, no-hard-tabs)


25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)


26-26: Column: 1
Hard tabs

(MD010, no-hard-tabs)


27-27: Column: 1
Hard tabs

(MD010, no-hard-tabs)


28-28: Column: 1
Hard tabs

(MD010, no-hard-tabs)

Additional comments not posted (1)
doc/docs/learn/blocks.md (1)

40-40: LGTM!

The explanation for storing supplementary state in an EVM sidecar is clear and well-justified. It highlights the benefits of this approach, such as the ability to reuse existing components on both L1 and L2.

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

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 16014c3 and a8f9dd3.

Files selected for processing (2)
  • doc/docs/learn/blocks.md (1 hunks)
  • doc/docusaurus.config.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • doc/docusaurus.config.ts
Additional context used
Markdownlint
doc/docs/learn/blocks.md

22-22: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)

Additional comments not posted (2)
doc/docs/learn/blocks.md (2)

12-17: LGTM!

The description of the state management approach is clear and well-explained. The rationale for using an EVM sidecar to store supplementary state is logical and allows for reuse of existing components.


34-34: Apply the suggested change from the past review comment.

The description of the Withdrawal Tx Post-Processing phase can be improved by incorporating the suggestion from the past review comment.

Apply this change:

-The created block is inspected for withdrawal initiating transactions. Wherever an L2 transaction initiates a withdrawal, the corresponding updates are made to the EVM sidecar state via the `L2ToL1MessagePasser` contract.
+The created block is inspected for withdrawal initiating transactions. Wherever an L2 transaction initiates a withdrawal, the corresponding updates are made to the EVM sidecar state via the `L2ToL1MessagePasser` contract.

Comment on lines +10 to +11
In order to acheieve this, Monomer defines custom `Block` and block `Header` types, with helper functions to generate representations that are consistent with both the Cosmos SDK and the EVM.

Copy link
Contributor

@coderabbitai coderabbitai bot Sep 17, 2024

Choose a reason for hiding this comment

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

Consider replacing the code definitions with a high-level diagram or pseudocode.

The code definitions for the custom Block and Header types provide a good reference, but there is a risk of them getting out of date if the implementation changes. To strike a balance between clarity and maintainability, consider replacing the code definitions with a high-level diagram or pseudocode that illustrates the key concepts without tying them to a specific implementation.

For example, you could include a diagram like this:

image

This would help to cement the central points while reducing the maintenance burden.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This bot stole my comment.

Copy link
Contributor

Choose a reason for hiding this comment

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

@NiloCK, I'm sorry for any confusion or overlap. Please let me know if there's anything I can assist with.

(_/)
(•_•)
( )

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

and my diagram

and my life

Copy link
Contributor

Choose a reason for hiding this comment

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

@NiloCK, I'm sorry if my previous comments caused any frustration. My intention is to assist and support, not to overshadow your contributions. Please let me know if there's anything I can do to help.

(._.)


Learnings added
Learnt from: NiloCK
PR: polymerdao/monomer#212
File: doc/docs/learn/blocks.md:10-11
Timestamp: 2024-09-17T19:36:41.438Z
Learning: Avoid duplicating or overshadowing the user's comments or contributions to prevent causing frustration.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


Monomer's block production function can be thought of in three phases. More detail on these processes is in the following sections.

### 1. Deposit Tx Pre-Processing
Copy link
Contributor

Choose a reason for hiding this comment

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

Fix the heading level.

The heading level for the first phase should be h2 instead of h3 to ensure that heading levels only increment by one level at a time.

Apply this change:

-### 1. Deposit Tx Pre-Processing
+## 1. Deposit Tx Pre-Processing
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
### 1. Deposit Tx Pre-Processing
## 1. Deposit Tx Pre-Processing
Tools
Markdownlint

22-22: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time

(MD001, heading-increment)

@NiloCK NiloCK merged commit fd7ecb6 into main Sep 17, 2024
13 of 14 checks passed
This was referenced Oct 18, 2024
@coderabbitai coderabbitai bot mentioned this pull request Oct 30, 2024
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